diff --git a/Lib/test/output/test_call b/Lib/test/output/test_call
new file mode 100644
index 0000000..da00c27
--- /dev/null
+++ b/Lib/test/output/test_call
@@ -0,0 +1 @@
+test_call
diff --git a/Lib/test/test_call.py b/Lib/test/test_call.py
new file mode 100644
index 0000000..529f15b
--- /dev/null
+++ b/Lib/test/test_call.py
@@ -0,0 +1,125 @@
+import unittest
+from test_support import run_unittest
+
+# The test cases here cover several paths through the function calling
+# code.  They depend on the METH_XXX flag that is used to define a C
+# function, which can't be verified from Python.  If the METH_XXX decl
+# for a C function changes, these tests may not cover the right paths.
+
+class CFunctionCalls(unittest.TestCase):
+
+    def test_varargs0(self):
+        self.assertRaises(TypeError, {}.has_key)
+
+    def test_varargs1(self):
+        {}.has_key(0)
+
+    def test_varargs2(self):
+        self.assertRaises(TypeError, {}.has_key, 0, 1)
+
+    def test_varargs0_ext(self):
+        try:
+            {}.has_key(*())
+        except TypeError:
+            pass
+
+    def test_varargs1_ext(self):
+        {}.has_key(*(0,))
+
+    def test_varargs2_ext(self):
+        try:
+            {}.has_key(*(1, 2))
+        except TypeError:
+            pass
+        else:
+            raise RuntimeError
+
+    def test_varargs0_kw(self):
+        self.assertRaises(TypeError, {}.has_key, x=2)
+
+    def test_varargs1_kw(self):
+        self.assertRaises(TypeError, {}.has_key, x=2)
+
+    def test_varargs2_kw(self):
+        self.assertRaises(TypeError, {}.has_key, x=2, y=2)
+
+    def test_oldargs0_0(self):
+        {}.keys()
+
+    def test_oldargs0_1(self):
+        self.assertRaises(TypeError, {}.keys, 0)
+
+    def test_oldargs0_2(self):
+        self.assertRaises(TypeError, {}.keys, 0, 1)
+
+    def test_oldargs0_0_ext(self):
+        {}.keys(*())
+
+    def test_oldargs0_1_ext(self):
+        try:
+            {}.keys(*(0,))
+        except TypeError:
+            pass
+        else:
+            raise RuntimeError
+
+    def test_oldargs0_2_ext(self):
+        try:
+            {}.keys(*(1, 2))
+        except TypeError:
+            pass
+        else:
+            raise RuntimeError
+
+    def test_oldargs0_0_kw(self):
+        try:
+            {}.keys(x=2)
+        except TypeError:
+            pass
+        else:
+            raise RuntimeError
+
+    def test_oldargs0_1_kw(self):
+        self.assertRaises(TypeError, {}.keys, x=2)
+
+    def test_oldargs0_2_kw(self):
+        self.assertRaises(TypeError, {}.keys, x=2, y=2)
+
+    def test_oldargs1_0(self):
+        self.assertRaises(TypeError, {}.update)
+
+    def test_oldargs1_1(self):
+        {}.update({})
+
+    def test_oldargs1_2(self):
+        self.assertRaises(TypeError, {}.update, {}, 1)
+
+    def test_oldargs1_0_ext(self):
+        try:
+            {}.update(*())
+        except TypeError:
+            pass
+        else:
+            raise RuntimeError
+
+    def test_oldargs1_1_ext(self):
+        {}.update(*({},))
+
+    def test_oldargs1_2_ext(self):
+        try:
+            {}.update(*({}, 2))
+        except TypeError:
+            pass
+        else:
+            raise RuntimeError
+
+    def test_oldargs1_0_kw(self):
+        self.assertRaises(TypeError, {}.update, x=2)
+
+    def test_oldargs1_1_kw(self):
+        self.assertRaises(TypeError, {}.update, {}, x=2)
+
+    def test_oldargs1_2_kw(self):
+        self.assertRaises(TypeError, {}.update, x=2, y=2)
+
+run_unittest(CFunctionCalls)
