Rewrite tests

dev
Andrew Cassidy 3 years ago
parent ae681ae290
commit 53845bf20f

@ -0,0 +1,79 @@
import datetime
import os.path
import textwrap
import yaclog.changelog
log_segments = [
'# Changelog',
'This changelog is for testing the parser, and has many things in it that might trip it up.',
'## [Tests]', # 2
'- bullet point with no section',
'### Bullet Points', # 4
textwrap.dedent('''\
- bullet point dash
* bullet point star
+ bullet point plus
- sub point 1
- sub point 2
- sub point 3'''),
'### Blocks ##', # 6
'#### This is an H4',
'##### This is an H5',
'###### This is an H6',
'- this is a bullet point\nit spans many lines',
'This is\na paragraph\nit spans many lines',
'```python\nthis is some example code\nit spans many lines\n```',
'> this is a block quote\nit spans many lines',
'[FullVersion] - 1969-07-20 [TAG1] [TAG2]\n-----', # 14
'## Long Version Name', # 15
'[FullVersion]: http://endless.horse\n[id]: http://www.koalastothemax.com'
]
log_text = '\n\n'.join(log_segments)
log = yaclog.Changelog()
log.header = '# Changelog\n\nThis changelog is for testing the parser, and has many things in it that might trip it up.'
log.links = {'id': 'http://www.koalastothemax.com'}
log.versions = [yaclog.changelog.VersionEntry(), yaclog.changelog.VersionEntry(), yaclog.changelog.VersionEntry()]
log.versions[0].name = '[Tests]'
log.versions[0].sections = {
'': ['- bullet point with no section'],
'Bullet Points': [
'- bullet point dash',
'* bullet point star',
'+ bullet point plus\n - sub point 1\n - sub point 2\n - sub point 3'],
'Blocks': [
'#### This is an H4',
'##### This is an H5',
'###### This is an H6',
'- this is a bullet point\nit spans many lines',
'This is\na paragraph\nit spans many lines',
'```python\nthis is some example code\nit spans many lines\n```',
'> this is a block quote\nit spans many lines',
]
}
log.versions[1].name = 'FullVersion'
log.versions[1].link = 'http://endless.horse'
log.versions[1].tags = ['TAG1', 'TAG2']
log.versions[1].date = datetime.date.fromisoformat('1969-07-20')
log.versions[2].name = 'Long Version Name'

@ -1,61 +1,40 @@
import unittest
import yaclog
import yaclog.changelog
import os.path
import datetime
test_dir = os.path.dirname(os.path.realpath(__file__))
import textwrap
import tempfile
from tests.common import log, log_segments, log_text
class TestParser(unittest.TestCase):
def setUp(self):
self.log = yaclog.read(os.path.join(test_dir, 'Test-Changelog.md'))
@classmethod
def setUpClass(cls):
with tempfile.TemporaryDirectory() as td:
cls.path = os.path.join(td, 'changelog.md')
with open(cls.path, 'w') as fd:
fd.write(log_text)
cls.log = yaclog.read(cls.path)
def test_header(self):
self.assertEqual(self.log.header,
'# Changelog\n\n'
'This changelog is for testing the parser, and has many things in it that might trip it up.')
self.assertEqual(log.header, self.log.header)
def test_path(self):
self.assertEqual(self.log.path, os.path.join(test_dir, 'Test-Changelog.md'))
self.assertEqual(self.path, self.log.path)
def test_links(self):
self.assertEqual(self.log.links, {'unreleased': 'http://beesbeesbees.com',
'1.1.0': 'http://endless.horse',
'id': 'http://www.koalastothemax.com'})
self.assertEqual({'fullversion': 'http://endless.horse', **log.links}, self.log.links)
def test_versions(self):
v = self.log.versions
self.assertEqual(v[0].name, 'Unreleased')
self.assertEqual(v[0].link, 'http://beesbeesbees.com')
self.assertEqual(v[0].date, None)
self.assertEqual(v[0].tags, [])
self.assertEqual(v[1].name, '1.1.0')
self.assertEqual(v[1].link, 'http://endless.horse')
self.assertEqual(v[1].date, datetime.date.fromisoformat('1969-07-20'))
self.assertEqual(v[1].tags, ['PRERELEASE'])
self.assertEqual(v[2].name, 'Not a version number')
self.assertEqual(v[2].link, None)
self.assertEqual(v[2].date, None)
self.assertEqual(v[2].tags, [])
def test_unreleased(self):
v = self.log.versions[0]
self.assertEqual(v.sections[''], ['- bullet point with no section'])
self.assertEqual(v.sections['Added'],
['- bullet point dash', '* bullet point star',
'+ bullet point plus\n - sub point 1\n - sub point 2\n - sub point 3'])
self.assertEqual(v.sections['Fixed'],
['- this is a bullet point\n it spans many lines',
'This is\na paragraph\nit spans many lines',
'this line has an [id] link',
'#### This is an H4',
'##### This is an H5',
'###### This is an H6',
'```markdown\nthis is some example code\nit spans many lines\n```',
'> this is a block quote\nit spans many lines'])
for i in range(len(self.log.versions)):
self.assertEqual(log.versions[i].name, self.log.versions[i].name)
self.assertEqual(log.versions[i].link, self.log.versions[i].link)
self.assertEqual(log.versions[i].date, self.log.versions[i].date)
self.assertEqual(log.versions[i].tags, self.log.versions[i].tags)
def test_Entries(self):
self.assertEqual(log.versions[0].sections, self.log.versions[0].sections)
if __name__ == '__main__':

@ -120,7 +120,7 @@ class Changelog:
self.versions: List[VersionEntry] = []
self.links = {}
if not os.path.exists(path):
if not path or not os.path.exists(path):
self.header = default_header
return
@ -266,11 +266,11 @@ class Changelog:
for version in self.versions:
if version.link:
v_links[version.name] = version.link
v_links[version.name.lower()] = version.link
segments.append(version.text())
segments += [f'[{link_id.lower()}]: {link}' for link_id, link in v_links.items()]
segments += [f'[{link_id}]: {link}' for link_id, link in v_links.items()]
text = _join_markdown(segments)

Loading…
Cancel
Save