[Python-checkins] r56229 - sandbox/trunk/2to3/tests/test_parser.py

collin.winter python-checkins at python.org
Tue Jul 10 09:52:18 CEST 2007


Author: collin.winter
Date: Tue Jul 10 09:52:18 2007
New Revision: 56229

Added:
   sandbox/trunk/2to3/tests/test_parser.py
Log:
Add a cut-down version of pytree_idempotency.py as test_parser.py.

Added: sandbox/trunk/2to3/tests/test_parser.py
==============================================================================
--- (empty file)
+++ sandbox/trunk/2to3/tests/test_parser.py	Tue Jul 10 09:52:18 2007
@@ -0,0 +1,48 @@
+#!/usr/bin/env python2.5
+"""Test suite for 2to3's parser."""
+# Author: Collin Winter
+
+# Testing imports
+import support
+from support import driver, test_dir
+
+# Python imports
+import os
+import os.path
+
+# Local imports
+from pgen2.parse import ParseError
+
+
+class TestParserIdempotency(support.TestCase):
+
+    """A cut-down version of pytree_idempotency.py."""
+
+    def test_2to3_files(self):
+        proj_dir = os.path.join(test_dir, "..")
+
+        for dirpath, dirnames, filenames in os.walk(proj_dir):
+            for filename in filenames:
+                if filename.endswith(".py"):
+                    filepath = os.path.join(dirpath, filename)
+                    print "Parsing %s..." % os.path.normpath(filepath)
+                    tree = driver.parse_file(filepath, debug=True)
+                    if diff(filepath, tree):
+                        self.fail("Idempotency failed: %s" % filename)
+
+
+def diff(fn, tree):
+    f = open("@", "w")
+    try:
+        f.write(str(tree))
+    finally:
+        f.close()
+    try:
+        return os.system("diff -u %s @" % fn)
+    finally:
+        os.remove("@")
+
+
+if __name__ == "__main__":
+    import __main__
+    support.run_all_tests(__main__)


More information about the Python-checkins mailing list