diff --git a/Lib/test/output/test_coercion b/Lib/test/output/test_coercion
index 8c5f6e0..4209750 100644
--- a/Lib/test/output/test_coercion
+++ b/Lib/test/output/test_coercion
@@ -516,7 +516,7 @@
 [1] % None ... exceptions.TypeError
 [1] %= None ... exceptions.TypeError
 [1] + <MethodNumber 1> ... exceptions.TypeError
-[1] += <MethodNumber 1> ... exceptions.AttributeError
+[1] += <MethodNumber 1> ... exceptions.TypeError
 [1] - <MethodNumber 1> ... exceptions.TypeError
 [1] -= <MethodNumber 1> ... exceptions.TypeError
 [1] * <MethodNumber 1> = [1]
@@ -528,7 +528,7 @@
 [1] % <MethodNumber 1> ... exceptions.TypeError
 [1] %= <MethodNumber 1> ... exceptions.TypeError
 [1] + <CoerceNumber 2> ... exceptions.TypeError
-[1] += <CoerceNumber 2> ... exceptions.AttributeError
+[1] += <CoerceNumber 2> ... exceptions.TypeError
 [1] - <CoerceNumber 2> ... exceptions.TypeError
 [1] -= <CoerceNumber 2> ... exceptions.TypeError
 [1] * <CoerceNumber 2> = [1, 1]
diff --git a/Lib/test/test_extcall.py b/Lib/test/test_extcall.py
index 4720901..274e943 100644
--- a/Lib/test/test_extcall.py
+++ b/Lib/test/test_extcall.py
@@ -58,20 +58,20 @@
 class Nothing: pass
 try:
     g(*Nothing())
-except AttributeError, attr:
+except TypeError, attr:
     pass
 else:
-    print "should raise AttributeError: __len__"
+    print "should raise TypeError"
 
 class Nothing:
     def __len__(self):
         return 5
 try:
     g(*Nothing())
-except AttributeError, attr:
+except TypeError, attr:
     pass
 else:
-    print "should raise AttributeError: __getitem__"
+    print "should raise TypeError"
 
 class Nothing:
     def __len__(self):
diff --git a/Lib/test/test_iter.py b/Lib/test/test_iter.py
index 5584587..bfe032f 100644
--- a/Lib/test/test_iter.py
+++ b/Lib/test/test_iter.py
@@ -275,6 +275,39 @@
             except OSError:
                 pass
 
+    # Test tuples()'s use of iterators.
+    def test_builtin_tuple(self):
+        self.assertEqual(tuple(SequenceClass(5)), (0, 1, 2, 3, 4))
+        self.assertEqual(tuple(SequenceClass(0)), ())
+        self.assertEqual(tuple([]), ())
+        self.assertEqual(tuple(()), ())
+        self.assertEqual(tuple("abc"), ("a", "b", "c"))
+
+        d = {"one": 1, "two": 2, "three": 3}
+        self.assertEqual(tuple(d), tuple(d.keys()))
+
+        self.assertRaises(TypeError, tuple, list)
+        self.assertRaises(TypeError, tuple, 42)
+
+        f = open(TESTFN, "w")
+        try:
+            for i in range(5):
+                f.write("%d\n" % i)
+        finally:
+            f.close()
+        f = open(TESTFN, "r")
+        try:
+            self.assertEqual(tuple(f), ("0\n", "1\n", "2\n", "3\n", "4\n"))
+            f.seek(0, 0)
+            self.assertEqual(tuple(f.xreadlines()),
+                             ("0\n", "1\n", "2\n", "3\n", "4\n"))
+        finally:
+            f.close()
+            try:
+                unlink(TESTFN)
+            except OSError:
+                pass
+
     # Test filter()'s use of iterators.
     def test_builtin_filter(self):
         self.assertEqual(filter(None, SequenceClass(5)), range(1, 5))
