#!/usr/bin/env python # -*- coding: utf-8 -*- import sys import sparkup class SparkupTest: options = { 'textmate': True, 'no-last-newline': True, 'post-tag-guides': True, } options = { 'default': {'textmate': True, 'no-last-newline': True, 'post-tag-guides': True}, 'guides': {'textmate': True, 'no-last-newline': True, 'post-tag-guides': True, 'start-guide-format': 'Begin %s'} } cases = { 'Simple test': { 'options': 'default', 'input': 'div', 'output': '
| $1 | \n
text.com
$0' }, 'Attribute with dot test': { 'input': 'p [attrib=text.com]', 'output': '$1
$0' }, # Add: text test, broken test, multi-attribute tests, indentation test, start and end comments test } def run(self): """Run Forrest run!""" print "Test results:" for name, case in self.cases.iteritems(): try: options_key = case['options'] except: options_key = 'default' try: options = self.options[options_key] except: options = self.options['default'] # Output buffer r = sparkup.Router() input = case['input'] output = r.start(options=options, str=input, ret=True) del r # Did it work? result = output == case['output'] if result: result_str = " OK " else: result_str = "FAIL" print " - %-30s [%s]" % (name, result_str) if not result: print "= %s" % input.replace("\n", "\n= ") print "Actual output (condensed):" print " | '%s'" % output.replace("\n", r"\n").replace('"', '\"') print "Actual output:" print " | %s" % output.replace("\n", "\n | ") print "Expected:" print " | %s" % case['output'].replace("\n", "\ n| ") if __name__ == '__main__': s = SparkupTest() s.run()