From d07260470e1acfb9681dfb62b9ee55f6eb5fb047 Mon Sep 17 00:00:00 2001 From: Dylan Araps Date: Tue, 15 Aug 2017 21:39:16 +1000 Subject: [PATCH] tests [export]: Properly isolate test cases and remove duplicate code. --- tests/test_export.py | 47 +++++++++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/tests/test_export.py b/tests/test_export.py index 7cb0bb4..266f0e6 100755 --- a/tests/test_export.py +++ b/tests/test_export.py @@ -2,54 +2,69 @@ import unittest import unittest.mock import io +import shutil import os from pywal import export from pywal import util -# Import colors. COLORS = util.read_file_json("tests/test_files/test_file.json") COLORS["colors"].update(COLORS["special"]) -util.create_dir("/tmp/wal") +TMP_DIR = "/tmp/wal" class TestExportColors(unittest.TestCase): """Test the export functions.""" - def test_all_templates(self): - """> Test substitutions in template file.""" - export.every(COLORS, "/tmp/wal") + def setUp(self): + """> Setup export tests.""" + util.create_dir(TMP_DIR) - result = os.path.isfile("/tmp/wal/colors.sh") + def tearDown(self): + """> Clean up export tests.""" + shutil.rmtree(TMP_DIR, ignore_errors=True) + + def is_file(self, tmp_file): + """> Test is something is a file.""" + result = os.path.isfile(tmp_file) self.assertTrue(result) - with open("/tmp/wal/colors.sh") as file: - content = file.read().splitlines() + def is_file_contents(self, tmp_file, pattern): + """> Check for pattern in file.""" + content = util.read_file(tmp_file) + self.assertEqual(content[7], pattern) - self.assertEqual(content[6], "foreground='#F5F1F4'") + def test_all_templates(self): + """> Test substitutions in template file.""" + tmp_file = os.path.join(TMP_DIR, "colors.sh") + export.every(COLORS, TMP_DIR) + + self.is_file(tmp_file) + self.is_file_contents(tmp_file, "foreground='#F5F1F4'") def test_css_template(self): """> Test substitutions in template file (css).""" - export.color(COLORS, "css", "/tmp/wal/test.css") + tmp_file = os.path.join(TMP_DIR, "test.css") + export.color(COLORS, "css", tmp_file) - result = os.path.isfile("/tmp/wal/test.css") - self.assertTrue(result) + self.is_file(tmp_file) + self.is_file_contents(tmp_file, " --background: #1F211E;") - with open("/tmp/wal/test.css") as file: - content = file.read().splitlines() - self.assertEqual(content[6], " --background: #1F211E;") +class TestInvalidExport(unittest.TestCase): + """Test export function error handling.""" def test_invalid_template(self): """> Test template validation.""" error_msg = "warning: template 'dummy' doesn't exist." + tmp_file = os.path.join(TMP_DIR, "test.css") # Since this function prints a message on fail we redirect # it's output so that we can read it. with unittest.mock.patch('sys.stdout', new=io.StringIO()) as fake_out: - export.color(COLORS, "dummy", "/tmp/wal/test.css") + export.color(COLORS, "dummy", tmp_file) self.assertEqual(fake_out.getvalue().strip(), error_msg)