Browse Source

Create separate TestCases for each test file

pull/89/head
Oliverpool 9 years ago
parent
commit
08dbf980c7
  1. 85
      patacrep/songs/chordpro/test/test_parser.py

85
patacrep/songs/chordpro/test/test_parser.py

@ -18,51 +18,68 @@ LANGUAGES = {
# Set to True if you want to create missing rendered files
CREATE_MISSING_RENDERED_FILE = False
class TestParsingRendering(unittest.TestCase):
def load_tests(loader, tests, pattern):
"""
Add all `*.source` files to the test suite.
"""
del loader, tests, pattern
suite = unittest.TestSuite()
for source in sorted(glob.glob(os.path.join(
os.path.dirname(__file__),
'*.source',
))):
single_test = TestSingleParsingRendering('run_test')
setattr(single_test, 'filename', source)
suite.addTest(single_test)
return suite
class TestSingleParsingRendering(unittest.TestCase):
"""Test parsing and rendering"""
maxDiff = None
def test_all(self):
"""Test all `*.source` files.
def run_test(self):
"""Test the self.filename (.source) file.
For any given `foo.source`, it is parsed as a chordpro file, and
should be rendered as `foo.sgc` with the chordpro renderer, and
`foo.tex` with the latex renderer.
"""
if not hasattr(self, 'filename'):
return self.skipTest("No file to test")
source = getattr(self, 'filename')
config = DEFAULT_CONFIG.copy()
config.update({
'encoding': 'utf8',
})
for source in sorted(glob.glob(os.path.join(
os.path.dirname(__file__),
'*.source',
))):
base = source[:-len(".source")]
for dest in LANGUAGES:
destname = "{}.{}".format(base, dest)
if not os.path.exists(destname):
if CREATE_MISSING_RENDERED_FILE:
print("Creating " + destname)
with open(destname, 'w', encoding='utf8') as expectfile:
chordproname = "{}.source".format(base)
config['filename'] = chordproname
expectfile.write(
ChordproSong(None, chordproname, config).render(
output=chordproname,
output_format=LANGUAGES[dest],
)
)
continue
with open(destname, 'r', encoding='utf8') as expectfile:
chordproname = "{}.source".format(base)
config['filename'] = chordproname
with disable_logging():
with self.subTest(base=os.path.basename(base), format=dest):
self.assertMultiLineEqual(
ChordproSong(None, chordproname, config).render(
output=chordproname,
output_format=LANGUAGES[dest],
).strip(),
expectfile.read().strip(),
base = source[:-len(".source")]
for dest in LANGUAGES:
destname = "{}.{}".format(base, dest)
if not os.path.exists(destname):
if CREATE_MISSING_RENDERED_FILE:
print("Creating " + destname)
with open(destname, 'w', encoding='utf8') as expectfile:
chordproname = "{}.source".format(base)
config['filename'] = chordproname
expectfile.write(
ChordproSong(None, chordproname, config).render(
output=chordproname,
output_format=LANGUAGES[dest],
)
)
continue
with open(destname, 'r', encoding='utf8') as expectfile:
chordproname = "{}.source".format(base)
config['filename'] = chordproname
with disable_logging():
with self.subTest(base=os.path.basename(base), format=dest):
self.assertMultiLineEqual(
ChordproSong(None, chordproname, config).render(
output=chordproname,
output_format=LANGUAGES[dest],
).strip(),
expectfile.read().strip(),
)

Loading…
Cancel
Save