Index: Lib/test/test_cpickle_jy.py =================================================================== --- Lib/test/test_cpickle_jy.py (Revision 7161) +++ Lib/test/test_cpickle_jy.py (Arbeitskopie) @@ -2,6 +2,8 @@ Made for Jython. """ +import __builtin__ +import sys import cPickle import pickle import unittest @@ -70,6 +72,25 @@ self.assertRaises(pickle.UnpicklingError, b_unpickler.load) + def testWithUserDefinedImport(self): + """test cPickle calling a user defined import function.""" + # This tests the fix for http://bugs.jython.org/issue1665 + # setup + original_import = __builtin__.__import__ + def import_hook(name, _globals=None, locals=None, fromlist=None, level= -1): + return original_import(name, _globals, locals, fromlist, level) + + # test + __builtin__.__import__ = import_hook + try: + if "no_such_module" in sys.modules: + del sys.modules["no_such_module"] # force cPickle to call __import__ + self.assertRaises(ImportError, cPickle.loads, pickle.GLOBAL + "no_such_module\n" + "no_such_class\n") + finally: + __builtin__.__import__ = original_import + + + def test_main(): test_support.run_unittest(CPickleTestCase) Index: src/org/python/modules/cPickle.java =================================================================== --- src/org/python/modules/cPickle.java (Revision 7161) +++ src/org/python/modules/cPickle.java (Arbeitskopie) @@ -2245,7 +2245,7 @@ private static PyObject importModule(String name) { PyObject fromlist = new PyTuple(Py.newString("__doc__")); - return __builtin__.__import__(name, null, null, fromlist); + return __builtin__.__import__(name, Py.None, Py.None, fromlist); } private static PyObject getJavaFunc(String name, String methodName) {