14710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm#! /usr/bin/env python 24710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm# (Force the script to use the latest build.) 34710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm# 44710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm# test_parser.py 54710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 64710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmimport parser, traceback 74710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 84710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm_numFailed = 0 94710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmdef testChunk(t, fileName): 114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm global _numFailed 124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm print '----', fileName, 134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm try: 144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm st = parser.suite(t) 154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm tup = parser.st2tuple(st) 164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm # this discards the first ST; a huge memory savings when running 174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm # against a large source file like Tkinter.py. 184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm st = None 194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm new = parser.tuple2st(tup) 204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm except parser.ParserError, err: 214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm print 224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm print 'parser module raised exception on input file', fileName + ':' 234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm traceback.print_exc() 244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm _numFailed = _numFailed + 1 254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm else: 264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm if tup != parser.st2tuple(new): 274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm print 284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm print 'parser module failed on input file', fileName 294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm _numFailed = _numFailed + 1 304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm else: 314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm print 'o.k.' 324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmdef testFile(fileName): 344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm t = open(fileName).read() 354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm testChunk(t, fileName) 364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmdef test(): 384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm import sys 394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm args = sys.argv[1:] 404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm if not args: 414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm import glob 424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm args = glob.glob("*.py") 434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm args.sort() 444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm map(testFile, args) 454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm sys.exit(_numFailed != 0) 464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmif __name__ == '__main__': 484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm test() 49