merge 3.4
diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py
index 71d8609..8bb7d6a 100644
--- a/Lib/test/test_descr.py
+++ b/Lib/test/test_descr.py
@@ -4974,11 +4974,33 @@
                     self._assert_is_copy(obj, objcopy2)
 
 
+class SharedKeyTests(unittest.TestCase):
+
+    @support.cpython_only
+    def test_subclasses(self):
+        # Verify that subclasses can share keys (per PEP 412)
+        class A:
+            pass
+        class B(A):
+            pass
+
+        a, b = A(), B()
+        self.assertEqual(sys.getsizeof(vars(a)), sys.getsizeof(vars(b)))
+        self.assertLess(sys.getsizeof(vars(a)), sys.getsizeof({}))
+        a.x, a.y, a.z, a.w = range(4)
+        self.assertNotEqual(sys.getsizeof(vars(a)), sys.getsizeof(vars(b)))
+        a2 = A()
+        self.assertEqual(sys.getsizeof(vars(a)), sys.getsizeof(vars(a2)))
+        self.assertLess(sys.getsizeof(vars(a)), sys.getsizeof({}))
+        b.u, b.v, b.w, b.t = range(4)
+        self.assertLess(sys.getsizeof(vars(b)), sys.getsizeof({}))
+
+
 def test_main():
     # Run all local test cases, with PTypesLongInitTest first.
     support.run_unittest(PTypesLongInitTest, OperatorsTest,
                          ClassPropertiesAndMethods, DictProxyTests,
-                         MiscTests, PicklingTests)
+                         MiscTests, PicklingTests, SharedKeyTests)
 
 if __name__ == "__main__":
     test_main()
diff --git a/Lib/test/test_types.py b/Lib/test/test_types.py
index 18e6b0a..ec10752 100644
--- a/Lib/test/test_types.py
+++ b/Lib/test/test_types.py
@@ -1,6 +1,6 @@
 # Python test set -- part 6, built-in types
 
-from test.support import run_unittest, run_with_locale, cpython_only
+from test.support import run_unittest, run_with_locale
 import collections
 import pickle
 import locale
@@ -1170,31 +1170,9 @@
             self.assertEqual(ns, ns_roundtrip, pname)
 
 
-class SharedKeyTests(unittest.TestCase):
-
-    @cpython_only
-    def test_subclasses(self):
-        # Verify that subclasses can share keys (per PEP 412)
-        class A:
-            pass
-        class B(A):
-            pass
-
-        a, b = A(), B()
-        self.assertEqual(sys.getsizeof(vars(a)), sys.getsizeof(vars(b)))
-        self.assertLess(sys.getsizeof(vars(a)), sys.getsizeof({}))
-        a.x, a.y, a.z, a.w = range(4)
-        self.assertNotEqual(sys.getsizeof(vars(a)), sys.getsizeof(vars(b)))
-        a2 = A()
-        self.assertEqual(sys.getsizeof(vars(a)), sys.getsizeof(vars(a2)))
-        self.assertLess(sys.getsizeof(vars(a)), sys.getsizeof({}))
-        b.u, b.v, b.w, b.t = range(4)
-        self.assertLess(sys.getsizeof(vars(b)), sys.getsizeof({}))
-
-
 def test_main():
     run_unittest(TypesTests, MappingProxyTests, ClassCreationTests,
-                 SimpleNamespaceTests, SharedKeyTests)
+                 SimpleNamespaceTests)
 
 if __name__ == '__main__':
     test_main()