/test/crossing/run.py

http://txt2tags.googlecode.com/ · Python · 100 lines · 74 code · 13 blank · 13 comment · 11 complexity · 07b6a828f1c7bdb0b1a0172c498964b8 MD5 · raw file

  1. #
  2. # txt2tags crossing marks tester (http://txt2tags.org)
  3. # See also: ../run.py ../lib.py
  4. #
  5. import os, sys, glob
  6. sys.path.insert(0, '..')
  7. import lib
  8. del sys.path[0]
  9. # sux
  10. lib.OK = lib.FAILED = 0
  11. lib.ERROR_FILES = []
  12. # left files are generated from right ones (using smart filters)
  13. ALIASES = {
  14. 'numlist' : 'list',
  15. 'deflist' : 'list',
  16. 'bar2' : 'bar',
  17. }
  18. # smart filters to allow source inheritance and macros normalization
  19. FILTERS = {
  20. 'deflist' : [ ('pre', '^-( |$)', r':\1') ],
  21. 'numlist' : [ ('pre', '^-( |$)', r'+\1') ],
  22. 'bar2' : [ ('pre', '--' , r'==' ) ],
  23. }
  24. # convert FILTERS tuples to txt2tags pre/postproc rules
  25. def addFilters(filters):
  26. if not filters: return []
  27. config = []
  28. cmdline = []
  29. for filter in filters:
  30. config.append("%%!%sproc: '%s' '%s'"%filter)
  31. if config:
  32. lib.WriteFile(lib.CONFIG_FILE, '\n'.join(config))
  33. cmdline = ['-C', lib.CONFIG_FILE]
  34. return cmdline
  35. def run():
  36. # test all .t2t files found
  37. for infile in glob.glob("*.t2t"):
  38. basename = infile.replace('.t2t', '')
  39. outfile = basename + '.html'
  40. if lib.initTest(basename, infile, outfile):
  41. cmdline = [infile]
  42. lib.convert(cmdline)
  43. lib.diff(outfile)
  44. lib.convert(cmdline, True)
  45. lib.diff(outfile)
  46. # extra: bar.t2t as TXT
  47. infile = 'bar.t2t'
  48. basename = 'bar'
  49. outfile = basename + '.txt'
  50. if lib.initTest(basename, infile, outfile):
  51. cmdline = ['-t', 'txt', '-i', infile]
  52. cmdline.extend(['--width', '150']) # to avoid wrapping
  53. lib.convert(cmdline)
  54. lib.diff(outfile)
  55. lib.convert(cmdline, True)
  56. lib.diff(outfile)
  57. # using smart filters, same files generate more than one output
  58. for alias in ALIASES.keys():
  59. infile = ALIASES[alias] + '.t2t'
  60. outfile = alias + '.html'
  61. if lib.initTest(alias, infile, outfile):
  62. cmdline = addFilters(FILTERS.get(alias))
  63. cmdline.append('-H')
  64. cmdline.extend(['-o', outfile, infile])
  65. lib.convert(cmdline)
  66. lib.diff(outfile)
  67. lib.convert(cmdline, True)
  68. lib.diff(outfile)
  69. # extra: bar2.t2t as TXT
  70. alias = 'bar2'
  71. infile = ALIASES[alias] + '.t2t'
  72. outfile = alias + '.txt'
  73. if lib.initTest(alias, infile, outfile):
  74. cmdline = addFilters(FILTERS.get(alias))
  75. cmdline.append('-H')
  76. cmdline.extend(['--width', '150']) # to avoid wrapping
  77. cmdline.extend(['-t', 'txt', '-o', outfile, infile])
  78. lib.convert(cmdline)
  79. lib.diff(outfile)
  80. lib.convert(cmdline, True)
  81. lib.diff(outfile)
  82. # clean up
  83. if os.path.isfile(lib.CONFIG_FILE):
  84. os.remove(lib.CONFIG_FILE)
  85. return lib.OK, lib.FAILED, lib.ERROR_FILES
  86. if __name__ == '__main__':
  87. print lib.MSG_RUN_ALONE