/test/crossing/run.py
http://txt2tags.googlecode.com/ · Python · 100 lines · 74 code · 13 blank · 13 comment · 11 complexity · 07b6a828f1c7bdb0b1a0172c498964b8 MD5 · raw file
- #
- # txt2tags crossing marks tester (http://txt2tags.org)
- # See also: ../run.py ../lib.py
- #
- import os, sys, glob
- sys.path.insert(0, '..')
- import lib
- del sys.path[0]
- # sux
- lib.OK = lib.FAILED = 0
- lib.ERROR_FILES = []
- # left files are generated from right ones (using smart filters)
- ALIASES = {
- 'numlist' : 'list',
- 'deflist' : 'list',
- 'bar2' : 'bar',
- }
- # smart filters to allow source inheritance and macros normalization
- FILTERS = {
- 'deflist' : [ ('pre', '^-( |$)', r':\1') ],
- 'numlist' : [ ('pre', '^-( |$)', r'+\1') ],
- 'bar2' : [ ('pre', '--' , r'==' ) ],
- }
- # convert FILTERS tuples to txt2tags pre/postproc rules
- def addFilters(filters):
- if not filters: return []
- config = []
- cmdline = []
- for filter in filters:
- config.append("%%!%sproc: '%s' '%s'"%filter)
- if config:
- lib.WriteFile(lib.CONFIG_FILE, '\n'.join(config))
- cmdline = ['-C', lib.CONFIG_FILE]
- return cmdline
- def run():
- # test all .t2t files found
- for infile in glob.glob("*.t2t"):
- basename = infile.replace('.t2t', '')
- outfile = basename + '.html'
- if lib.initTest(basename, infile, outfile):
- cmdline = [infile]
- lib.convert(cmdline)
- lib.diff(outfile)
- lib.convert(cmdline, True)
- lib.diff(outfile)
- # extra: bar.t2t as TXT
- infile = 'bar.t2t'
- basename = 'bar'
- outfile = basename + '.txt'
- if lib.initTest(basename, infile, outfile):
- cmdline = ['-t', 'txt', '-i', infile]
- cmdline.extend(['--width', '150']) # to avoid wrapping
- lib.convert(cmdline)
- lib.diff(outfile)
- lib.convert(cmdline, True)
- lib.diff(outfile)
- # using smart filters, same files generate more than one output
- for alias in ALIASES.keys():
- infile = ALIASES[alias] + '.t2t'
- outfile = alias + '.html'
- if lib.initTest(alias, infile, outfile):
- cmdline = addFilters(FILTERS.get(alias))
- cmdline.append('-H')
- cmdline.extend(['-o', outfile, infile])
- lib.convert(cmdline)
- lib.diff(outfile)
- lib.convert(cmdline, True)
- lib.diff(outfile)
- # extra: bar2.t2t as TXT
- alias = 'bar2'
- infile = ALIASES[alias] + '.t2t'
- outfile = alias + '.txt'
- if lib.initTest(alias, infile, outfile):
- cmdline = addFilters(FILTERS.get(alias))
- cmdline.append('-H')
- cmdline.extend(['--width', '150']) # to avoid wrapping
- cmdline.extend(['-t', 'txt', '-o', outfile, infile])
- lib.convert(cmdline)
- lib.diff(outfile)
- lib.convert(cmdline, True)
- lib.diff(outfile)
- # clean up
- if os.path.isfile(lib.CONFIG_FILE):
- os.remove(lib.CONFIG_FILE)
- return lib.OK, lib.FAILED, lib.ERROR_FILES
- if __name__ == '__main__':
- print lib.MSG_RUN_ALONE