home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 15 / AACD15.ISO / AACD / Programming / Python2 / Python20_source / Demo / parser / test_parser.py < prev    next >
Encoding:
Python Source  |  2000-10-25  |  1.2 KB  |  49 lines

  1. #! /usr/bin/env python
  2. #  (Force the script to use the latest build.)
  3. #
  4. #  test_parser.py
  5.  
  6. import parser, traceback
  7.  
  8. _numFailed = 0
  9.  
  10. def testChunk(t, fileName):
  11.     global _numFailed
  12.     print '----', fileName,
  13.     try:
  14.         ast = parser.suite(t)
  15.         tup = parser.ast2tuple(ast)
  16.         # this discards the first AST; a huge memory savings when running
  17.         # against a large source file like Tkinter.py.
  18.         ast = None
  19.         new = parser.tuple2ast(tup)
  20.     except parser.ParserError, err:
  21.         print
  22.         print 'parser module raised exception on input file', fileName + ':'
  23.         traceback.print_exc()
  24.         _numFailed = _numFailed + 1
  25.     else:
  26.         if tup != parser.ast2tuple(new):
  27.             print
  28.             print 'parser module failed on input file', fileName
  29.             _numFailed = _numFailed + 1
  30.         else:
  31.             print 'o.k.'
  32.  
  33. def testFile(fileName):
  34.     t = open(fileName).read()
  35.     testChunk(t, fileName)
  36.  
  37. def test():
  38.     import sys
  39.     args = sys.argv[1:]
  40.     if not args:
  41.         import glob
  42.         args = glob.glob("*.py")
  43.         args.sort()
  44.     map(testFile, args)
  45.     sys.exit(_numFailed != 0)
  46.  
  47. if __name__ == '__main__':
  48.     test()
  49.