diff options
| author | Adrian Holovaty <adrian@holovaty.com> | 2006-01-17 17:56:33 +0000 |
|---|---|---|
| committer | Adrian Holovaty <adrian@holovaty.com> | 2006-01-17 17:56:33 +0000 |
| commit | 8654a91e12e988b7be575364e3a791f2b4052fc1 (patch) | |
| tree | 56eafd8bf93414e5ce6aa8d33ec13f9587e21161 | |
| parent | 6f3f25e733b2ba9670ed9035934acc65a971231b (diff) | |
Improved doctests to normalize long integers in compared output
git-svn-id: http://code.djangoproject.com/svn/django/trunk@2034 bcc190cf-cafb-0310-a4f2-bffc1f526a37
| -rwxr-xr-x | tests/runtests.py | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/tests/runtests.py b/tests/runtests.py index b336c7ff77..969aabf617 100755 --- a/tests/runtests.py +++ b/tests/runtests.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -import os, sys, time, traceback +import os, re, sys, time, traceback # doctest is included in the same package as this module, because this testing # framework uses features only available in the Python 2.4 version of doctest, @@ -43,14 +43,18 @@ class DjangoDoctestRunner(doctest.DocTestRunner): log_error(test.name, "API test raised an exception", "Code: %r\nLine: %s\nException: %s" % (example.source.strip(), example.lineno, tb)) +normalize_long_ints = lambda s: re.sub(r'(?<![\w])(\d+)L(?![\w])', '\\1', s) + class DjangoDoctestOutputChecker(doctest.OutputChecker): def check_output(self, want, got, optionflags): ok = doctest.OutputChecker.check_output(self, want, got, optionflags) - if not ok and (want.strip().endswith("L") or got.strip().endswith("L")): - try: - return long(want.strip()) == long(got.strip()) - except ValueError: - return False + + # Doctest does an exact string comparison of output, which means long + # integers aren't equal to normal integers ("22L" vs. "22"). The + # following code normalizes long integers so that they equal normal + # integers. + if not ok: + return normalize_long_ints(want) == normalize_long_ints(got) return ok class TestRunner: |
