diff --git a/Lib/test/pickletester.py b/Lib/test/pickletester.py
index 5b9da56..42853c4 100644
--- a/Lib/test/pickletester.py
+++ b/Lib/test/pickletester.py
@@ -1,6 +1,9 @@
 import unittest
 import pickle
-import cPickle
+try:
+    import cPickle
+except ImportError:
+    cPickle = None
 import pickletools
 import copy_reg
 
@@ -10,7 +13,8 @@
 # Tests that try a number of pickle protocols should have a
 #     for proto in protocols:
 # kind of outer loop.
-assert pickle.HIGHEST_PROTOCOL == cPickle.HIGHEST_PROTOCOL == 2
+if cPickle is not None:
+    assert pickle.HIGHEST_PROTOCOL == cPickle.HIGHEST_PROTOCOL == 2
 protocols = range(pickle.HIGHEST_PROTOCOL + 1)
 
 
diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
index 4553838..71546d8 100755
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -1033,25 +1033,19 @@
         """,
     'darwin':
         """
-        test__locale
         test_al
         test_bsddb
         test_bsddb3
         test_cd
         test_cl
-        test_curses
         test_gdbm
         test_gl
         test_imgfile
         test_largefile
         test_linuxaudiodev
         test_locale
-        test_minidom
         test_nis
-        test_ntpath
         test_ossaudiodev
-        test_poll
-        test_sqlite
         test_startfile
         test_sunaudiodev
         """,
diff --git a/Lib/test/test_array.py b/Lib/test/test_array.py
index 62361fc..6adbf33 100755
--- a/Lib/test/test_array.py
+++ b/Lib/test/test_array.py
@@ -7,7 +7,7 @@
 from test import test_support
 from weakref import proxy
 import array, cStringIO, math
-from cPickle import loads, dumps
+from pickle import loads, dumps
 
 class ArraySubclass(array.array):
     pass
diff --git a/Lib/test/test_bool.py b/Lib/test/test_bool.py
index 33185a0..663417d 100644
--- a/Lib/test/test_bool.py
+++ b/Lib/test/test_bool.py
@@ -289,14 +289,23 @@
         self.assertIs(pickle.loads(pickle.dumps(False, True)), False)
 
     def test_cpickle(self):
-        import cPickle
+        try:
+            import cPickle
+        except ImportError:
+            return # Just ignore this if cPickle doesn't exist
+
         self.assertIs(cPickle.loads(cPickle.dumps(True)), True)
         self.assertIs(cPickle.loads(cPickle.dumps(False)), False)
         self.assertIs(cPickle.loads(cPickle.dumps(True, True)), True)
         self.assertIs(cPickle.loads(cPickle.dumps(False, True)), False)
 
     def test_mixedpickle(self):
-        import pickle, cPickle
+        import pickle
+        try:
+            import cPickle
+        except ImportError:
+            return # Just ignore this if cPickle doesn't exist
+
         self.assertIs(pickle.loads(cPickle.dumps(True)), True)
         self.assertIs(pickle.loads(cPickle.dumps(False)), False)
         self.assertIs(pickle.loads(cPickle.dumps(True, True)), True)
@@ -308,15 +317,19 @@
         self.assertIs(cPickle.loads(pickle.dumps(False, True)), False)
 
     def test_picklevalues(self):
-        import pickle, cPickle
-
         # Test for specific backwards-compatible pickle values
+        import pickle
         self.assertEqual(pickle.dumps(True), "I01\n.")
         self.assertEqual(pickle.dumps(False), "I00\n.")
-        self.assertEqual(cPickle.dumps(True), "I01\n.")
-        self.assertEqual(cPickle.dumps(False), "I00\n.")
         self.assertEqual(pickle.dumps(True, True), "I01\n.")
         self.assertEqual(pickle.dumps(False, True), "I00\n.")
+ 
+        try:
+            import cPickle
+        except ImportError:
+            return # Just ignore the rest if cPickle doesn't exist
+        self.assertEqual(cPickle.dumps(True), "I01\n.")
+        self.assertEqual(cPickle.dumps(False), "I00\n.")
         self.assertEqual(cPickle.dumps(True, True), "I01\n.")
         self.assertEqual(cPickle.dumps(False, True), "I00\n.")
 
diff --git a/Lib/test/test_datetime.py b/Lib/test/test_datetime.py
index 203bea1..4f765c1 100644
--- a/Lib/test/test_datetime.py
+++ b/Lib/test/test_datetime.py
@@ -5,8 +5,11 @@
 
 import sys
 import pickle
-import cPickle
 import unittest
+try:
+    import cPickle
+except ImportError:
+    cPickle = None
 
 from test import test_support
 
@@ -18,9 +21,14 @@
 
 pickle_choices = [(pickler, unpickler, proto)
                   for pickler in pickle, cPickle
+                  if pickler is not None
                   for unpickler in pickle, cPickle
+                  if unpickler is not None
                   for proto in range(3)]
-assert len(pickle_choices) == 2*2*3
+if cPickle is None:
+    assert len(pickle_choices) == 3
+else:
+    assert len(pickle_choices) == 2*2*3
 
 # An arbitrary collection of objects of non-datetime types, for testing
 # mixed-type comparisons.
diff --git a/Lib/test/test_deque.py b/Lib/test/test_deque.py
index a562922..4c5d1ee 100644
--- a/Lib/test/test_deque.py
+++ b/Lib/test/test_deque.py
@@ -3,7 +3,7 @@
 from test import test_support, seq_tests
 from weakref import proxy
 import copy
-import cPickle as pickle
+import pickle
 from cStringIO import StringIO
 import random
 import os
diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py
index 4a39be5..01fd685 100644
--- a/Lib/test/test_descr.py
+++ b/Lib/test/test_descr.py
@@ -2666,7 +2666,11 @@
 def pickles():
     if verbose:
         print "Testing pickling and copying new-style classes and objects..."
-    import pickle, cPickle
+    import pickle
+    try:
+        import cPickle
+    except ImportError:
+        cPickle = None
 
     def sorteditems(d):
         L = d.items()
@@ -2722,6 +2726,8 @@
         pass
 
     for p in pickle, cPickle:
+        if p is None:
+            continue # cPickle not found -- skip it
         for bin in 0, 1:
             if verbose:
                 print p.__name__, ["text", "binary"][bin]
@@ -2781,7 +2787,7 @@
 
 def pickleslots():
     if verbose: print "Testing pickling of classes with __slots__ ..."
-    import pickle, cPickle
+    import pickle, pickle as cPickle
     # Pickling of classes with __slots__ but without __getstate__ should fail
     global B, C, D, E
     class B(object):
diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py
index be2cca1..0eb6b46 100644
--- a/Lib/test/test_exceptions.py
+++ b/Lib/test/test_exceptions.py
@@ -4,7 +4,11 @@
 import sys
 import unittest
 import warnings
-import pickle, cPickle
+import pickle
+try:
+    import cPickle
+except ImportError:
+    cPickle = None
 
 from test.test_support import TESTFN, unlink, run_unittest
 
@@ -292,6 +296,8 @@
 
                 # test for pickling support
                 for p in pickle, cPickle:
+                    if p is None:
+                        continue # cPickle not found -- skip it
                     for protocol in range(p.HIGHEST_PROTOCOL + 1):
                         new = p.loads(p.dumps(e, protocol))
                         for checkArgName in expected:
diff --git a/Lib/test/test_generators.py b/Lib/test/test_generators.py
index ee36413..2ffd2f8 100644
--- a/Lib/test/test_generators.py
+++ b/Lib/test/test_generators.py
@@ -1585,6 +1585,21 @@
   ...
 TypeError: throw() third argument must be a traceback object
 
+>>> g.throw("abc")
+Traceback (most recent call last):
+  ...
+TypeError: exceptions must be classes or instances deriving from BaseException, not str
+
+>>> g.throw(0)
+Traceback (most recent call last):
+  ...
+TypeError: exceptions must be classes or instances deriving from BaseException, not int
+
+>>> g.throw(list)
+Traceback (most recent call last):
+  ...
+TypeError: exceptions must be classes or instances deriving from BaseException, not type
+
 >>> def throw(g,exc):
 ...     try:
 ...         raise exc
@@ -1619,11 +1634,6 @@
   ...
 ValueError: 7
 
->>> f().throw("abc")     # throw on just-opened generator
-Traceback (most recent call last):
-  ...
-abc
-
 Now let's try closing a generator:
 
 >>> def f():
diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py
index 68c23c2..fe05123 100644
--- a/Lib/test/test_logging.py
+++ b/Lib/test/test_logging.py
@@ -25,7 +25,7 @@
 """
 
 import select
-import os, sys, string, struct, types, cPickle, cStringIO
+import os, sys, string, struct, types, pickle, cStringIO
 import socket, tempfile, threading, time
 import logging, logging.handlers, logging.config
 from test.test_support import run_with_locale
@@ -70,7 +70,7 @@
                 raise
 
     def unPickle(self, data):
-        return cPickle.loads(data)
+        return pickle.loads(data)
 
     def handleLogRecord(self, record):
         logname = "logrecv.tcp." + record.name
diff --git a/Lib/test/test_re.py b/Lib/test/test_re.py
index 14a0acf..02f4dca 100644
--- a/Lib/test/test_re.py
+++ b/Lib/test/test_re.py
@@ -412,8 +412,12 @@
     def test_pickling(self):
         import pickle
         self.pickle_test(pickle)
-        import cPickle
-        self.pickle_test(cPickle)
+        try:
+            import cPickle
+        except ImportError:
+            pass # cPickle not found -- skip it
+        else:
+            self.pickle_test(cPickle)
 
     def pickle_test(self, pickle):
         oldpat = re.compile('a(?:b|(c|e){1,2}?|d)+?(.)')
diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py
index b3c5a50..6f9e464 100644
--- a/Lib/test/test_traceback.py
+++ b/Lib/test/test_traceback.py
@@ -111,35 +111,6 @@
         lst = traceback.format_exception_only(e.__class__, e)
         self.assertEqual(lst, ['KeyboardInterrupt\n'])
 
-    # String exceptions are deprecated, but legal.  The quirky form with
-    # separate "type" and "value" tends to break things, because
-    #     not isinstance(value, type)
-    # and a string cannot be the first argument to issubclass.
-    #
-    # Note that sys.last_type and sys.last_value do not get set if an
-    # exception is caught, so we sort of cheat and just emulate them.
-    #
-    # test_string_exception1 is equivalent to
-    #
-    # >>> raise "String Exception"
-    #
-    # test_string_exception2 is equivalent to
-    #
-    # >>> raise "String Exception", "String Value"
-    #
-    def test_string_exception1(self):
-        str_type = "String Exception"
-        err = traceback.format_exception_only(str_type, None)
-        self.assertEqual(len(err), 1)
-        self.assertEqual(err[0], str_type + '\n')
-
-    def test_string_exception2(self):
-        str_type = "String Exception"
-        str_value = "String Value"
-        err = traceback.format_exception_only(str_type, str_value)
-        self.assertEqual(len(err), 1)
-        self.assertEqual(err[0], str_type + ': ' + str_value + '\n')
-
     def test_format_exception_only_bad__str__(self):
         class X(Exception):
             def __str__(self):
