Today I could run CPython unittests on top of PyPy.

test_call is passed. :-)

Some problems:

1) For some reason, test_support complains if not imported from
test package. Error message is:

ImportError: test_support must be imported from the test package

2) PyPy's sys.path includes appspace/ and interpreter/. And they
have their own test/ subdirectory, thus breaking import from test
package.

3) PyPy methods have no __doc__. CPython methods always have __doc__,
even if it is None. This confuses unittest:

try:
    self.__testMethodName = methodName
    testMethod = getattr(self, methodName)
    self.__testMethodDoc = testMethod.__doc__
except AttributeError:
    raise ValueError
    # ...

testMethod.__doc__ never raises AttributeError in CPython. So this
error is wrongly reported as missing test method, not test method
docstring.

I just wanted to run CPython unittests on PyPy, without fixing these
glitches. Here are workarounds:

1) mv appspace/test appspace/xtest
2) mv interpreter/test interpreter/xtest
3) cp /usr/lib/python2.3/unittest.py appspace
4) Patch unittest.py:

--- unittest.py.orig    2004-07-14 21:19:19.000000000 +0900
+++ unittest.py 2004-07-14 21:19:29.000000000 +0900
@@ -169,7 +169,7 @@
         try:
             self.__testMethodName = methodName
             testMethod = getattr(self, methodName)
-            self.__testMethodDoc = testMethod.__doc__
+            self.__testMethodDoc = None # testMethod.__doc__
         except AttributeError:
             raise ValueError, "no such test method in %s: %s" % \
                   (self.__class__, methodName)

5) Copy CPython Lib/test to work directory.
6) pypy test/test_call.py

You will see "Ran 27 tests in 22.790s".
CPython reports "Ran 27 tests in 0.008s".

That gives 3500x slow performance. Well, that was expected.

Happy hacking,
_______________________________________________
[EMAIL PROTECTED]
http://codespeak.net/mailman/listinfo/pypy-dev

Reply via email to