diff --git a/setup.py b/setup.py index 288cf6e..5a7efb0 100644 --- a/setup.py +++ b/setup.py @@ -70,7 +70,12 @@ setup( extras_require={ 'pil-measurement': ['Pillow>=6,<10'], 'dev': [ - 'fonttools>=3.26', 'nox', 'Pillow>=5', 'pytest>=3.6', 'xmldiff>=2.4' + 'Flask>=2.0', # For server tests. + 'fonttools>=3.26', + 'nox', + 'Pillow>=5', + 'pytest>=3.6', + 'xmldiff>=2.4' ], }, license='Apache-2.0', diff --git a/tests/test_pybadges.py b/tests/test_pybadges.py index 36691cf..370a49a 100644 --- a/tests/test_pybadges.py +++ b/tests/test_pybadges.py @@ -53,14 +53,35 @@ class TestPybadgesBadge(unittest.TestCase): for example in examples: file_name = example.pop('file_name') with self.subTest(example=file_name): - filepath = os.path.join(TEST_DIR, 'golden-images', file_name) + goldenpath = os.path.join(TEST_DIR, 'golden-images', file_name) - with open(filepath, mode="r", encoding="utf-8") as f: + with open(goldenpath, mode="r", encoding="utf-8") as f: golden_image = f.read() pybadge_image = pybadges.badge(**example) diff = xmldiff.main.diff_texts(golden_image, pybadge_image) - self.assertFalse(diff) + if diff: + with tempfile.NamedTemporaryFile(mode="w+t", + encoding="utf-8", + delete=False, + suffix=".svg") as actual: + actual.write(pybadge_image) + + with tempfile.NamedTemporaryFile(mode="w+t", + delete=False, + suffix=".html") as html: + html.write(""" + + +
+ + + """ % (goldenpath, actual.name)) + self.fail( + "images for %s differ:\n%s\nview with:\npython -m webbrowser %s" + % (file_name, diff, html.name)) + + self.assertFalse(diff,) class TestEmbedImage(unittest.TestCase):