mirror of
https://github.com/python/cpython.git
synced 2025-07-24 19:54:21 +00:00
Merged revisions 61596-61597 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r61596 | martin.v.loewis | 2008-03-18 23:43:46 -0500 (Di, 18 Mär 2008) | 2 lines Import lib2to3. ........ r61597 | martin.v.loewis | 2008-03-18 23:58:04 -0500 (Di, 18 Mär 2008) | 3 lines Initialized merge tracking via "svnmerge" with revisions "1-61595" from svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3 ........
This commit is contained in:
parent
c42bcbb1f0
commit
ef04c44e29
67 changed files with 11990 additions and 0 deletions
92
Lib/lib2to3/tests/pytree_idempotency.py
Executable file
92
Lib/lib2to3/tests/pytree_idempotency.py
Executable file
|
@ -0,0 +1,92 @@
|
|||
#!/usr/bin/env python2.5
|
||||
# Copyright 2006 Google, Inc. All Rights Reserved.
|
||||
# Licensed to PSF under a Contributor Agreement.
|
||||
|
||||
"""Main program for testing the infrastructure."""
|
||||
|
||||
__author__ = "Guido van Rossum <guido@python.org>"
|
||||
|
||||
# Support imports (need to be imported first)
|
||||
import support
|
||||
|
||||
# Python imports
|
||||
import os
|
||||
import sys
|
||||
import logging
|
||||
|
||||
# Local imports
|
||||
from .. import pytree
|
||||
import pgen2
|
||||
from pgen2 import driver
|
||||
|
||||
logging.basicConfig()
|
||||
|
||||
def main():
|
||||
gr = driver.load_grammar("Grammar.txt")
|
||||
dr = driver.Driver(gr, convert=pytree.convert)
|
||||
|
||||
fn = "example.py"
|
||||
tree = dr.parse_file(fn, debug=True)
|
||||
if not diff(fn, tree):
|
||||
print "No diffs."
|
||||
if not sys.argv[1:]:
|
||||
return # Pass a dummy argument to run the complete test suite below
|
||||
|
||||
problems = []
|
||||
|
||||
# Process every imported module
|
||||
for name in sys.modules:
|
||||
mod = sys.modules[name]
|
||||
if mod is None or not hasattr(mod, "__file__"):
|
||||
continue
|
||||
fn = mod.__file__
|
||||
if fn.endswith(".pyc"):
|
||||
fn = fn[:-1]
|
||||
if not fn.endswith(".py"):
|
||||
continue
|
||||
print >>sys.stderr, "Parsing", fn
|
||||
tree = dr.parse_file(fn, debug=True)
|
||||
if diff(fn, tree):
|
||||
problems.append(fn)
|
||||
|
||||
# Process every single module on sys.path (but not in packages)
|
||||
for dir in sys.path:
|
||||
try:
|
||||
names = os.listdir(dir)
|
||||
except os.error:
|
||||
continue
|
||||
print >>sys.stderr, "Scanning", dir, "..."
|
||||
for name in names:
|
||||
if not name.endswith(".py"):
|
||||
continue
|
||||
print >>sys.stderr, "Parsing", name
|
||||
fn = os.path.join(dir, name)
|
||||
try:
|
||||
tree = dr.parse_file(fn, debug=True)
|
||||
except pgen2.parse.ParseError, err:
|
||||
print "ParseError:", err
|
||||
else:
|
||||
if diff(fn, tree):
|
||||
problems.append(fn)
|
||||
|
||||
# Show summary of problem files
|
||||
if not problems:
|
||||
print "No problems. Congratulations!"
|
||||
else:
|
||||
print "Problems in following files:"
|
||||
for fn in problems:
|
||||
print "***", fn
|
||||
|
||||
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__":
|
||||
main()
|
Loading…
Add table
Add a link
Reference in a new issue