mirror of https://github.com/python/cpython
49 lines
1.2 KiB
Python
Executable File
49 lines
1.2 KiB
Python
Executable File
#! /usr/bin/env python
|
|
# (Force the script to use the latest build.)
|
|
#
|
|
# test_parser.py
|
|
|
|
import parser, traceback
|
|
|
|
_numFailed = 0
|
|
|
|
def testChunk(t, fileName):
|
|
global _numFailed
|
|
print('----', fileName, end=' ')
|
|
try:
|
|
ast = parser.suite(t)
|
|
tup = parser.ast2tuple(ast)
|
|
# this discards the first AST; a huge memory savings when running
|
|
# against a large source file like Tkinter.py.
|
|
ast = None
|
|
new = parser.tuple2ast(tup)
|
|
except parser.ParserError as err:
|
|
print()
|
|
print('parser module raised exception on input file', fileName + ':')
|
|
traceback.print_exc()
|
|
_numFailed = _numFailed + 1
|
|
else:
|
|
if tup != parser.ast2tuple(new):
|
|
print()
|
|
print('parser module failed on input file', fileName)
|
|
_numFailed = _numFailed + 1
|
|
else:
|
|
print('o.k.')
|
|
|
|
def testFile(fileName):
|
|
t = open(fileName).read()
|
|
testChunk(t, fileName)
|
|
|
|
def test():
|
|
import sys
|
|
args = sys.argv[1:]
|
|
if not args:
|
|
import glob
|
|
args = glob.glob("*.py")
|
|
args.sort()
|
|
list(map(testFile, args))
|
|
sys.exit(_numFailed != 0)
|
|
|
|
if __name__ == '__main__':
|
|
test()
|