diff --git a/tests/test_dist.py b/tests/test_dist.py index 20428934..edecac21 100644 --- a/tests/test_dist.py +++ b/tests/test_dist.py @@ -5,122 +5,117 @@ import glob import subprocess -import unittest import xml.etree.ElementTree as ET -class TestDist(unittest.TestCase): +def test_validate_po_files(): """ - Tests to run before release + Validate that po translations don't mess up python format strings, + which has broken the app in the past: + https://bugzilla.redhat.com/show_bug.cgi?id=1350185 + https://bugzilla.redhat.com/show_bug.cgi?id=1433800 """ - def test_validate_po_files(self): - """ - Validate that po translations don't mess up python format strings, - which has broken the app in the past: - https://bugzilla.redhat.com/show_bug.cgi?id=1350185 - https://bugzilla.redhat.com/show_bug.cgi?id=1433800 - """ - failures = [] - for pofile in glob.glob("po/*.po"): - proc = subprocess.Popen(["msgfmt", "--output-file=/dev/null", - "--check", pofile], - stdout=subprocess.PIPE, stderr=subprocess.PIPE) - ignore, stderr = proc.communicate() - if proc.wait(): - failures.append("%s: %s" % (pofile, stderr)) + failures = [] + for pofile in glob.glob("po/*.po"): + proc = subprocess.Popen(["msgfmt", "--output-file=/dev/null", + "--check", pofile], + stdout=subprocess.PIPE, stderr=subprocess.PIPE) + ignore, stderr = proc.communicate() + if proc.wait(): + failures.append("%s: %s" % (pofile, stderr)) - if not failures: - return + if not failures: + return - msg = "The following po files have errors:\n" - msg += "\n".join(failures) - raise AssertionError(msg) + msg = "The following po files have errors:\n" + msg += "\n".join(failures) + raise AssertionError(msg) - def test_validate_pot_strings(self): - """ - Validate that xgettext via `setup.py extract_messages` don't print - any warnings - """ - potfile = "po/virt-manager.pot" - origpot = open(potfile).read() - try: - out = subprocess.check_output( - ["./setup.py", "extract_messages"], - stderr=subprocess.STDOUT) - warnings = [l for l in out.decode("utf-8").splitlines() - if "warning:" in l] - if warnings: - raise AssertionError("xgettext has warnings:\n\n%s" % - "\n".join(warnings)) - finally: - open(potfile, "w").write(origpot) +def test_validate_pot_strings(): + """ + Validate that xgettext via `setup.py extract_messages` don't print + any warnings + """ + potfile = "po/virt-manager.pot" + origpot = open(potfile).read() + try: + out = subprocess.check_output( + ["./setup.py", "extract_messages"], + stderr=subprocess.STDOUT) + warnings = [l for l in out.decode("utf-8").splitlines() + if "warning:" in l] + if warnings: + raise AssertionError("xgettext has warnings:\n\n%s" % + "\n".join(warnings)) + finally: + open(potfile, "w").write(origpot) - def test_ui_minimum_version(self): - """ - Ensure all glade XML files don't _require_ UI bits later than - our minimum supported version - """ - # Minimum dep is 3.22 to fix popups on some wayland window managers. - # 3.22 is from Sep 2016, so coupled with python3 deps this seems fine - # to enforce - minimum_version_major = 3 - minimum_version_minor = 22 - minimum_version_str = "%s.%s" % (minimum_version_major, - minimum_version_minor) +def test_ui_minimum_version(): + """ + Ensure all glade XML files don't _require_ UI bits later than + our minimum supported version + """ + # Minimum dep is 3.22 to fix popups on some wayland window managers. + # 3.22 is from Sep 2016, so coupled with python3 deps this seems fine + # to enforce + minimum_version_major = 3 + minimum_version_minor = 22 + minimum_version_str = "%s.%s" % (minimum_version_major, + minimum_version_minor) - failures = [] - for filename in glob.glob("ui/*.ui"): - required_version = None - for line in open(filename).readlines(): - # This is much faster than XML parsing the whole file - if not line.strip().startswith(' " - "tag for gtk+") + if required_version is None: + raise AssertionError("ui file=%s doesn't have a " + "tag for gtk+") - if (int(required_version.split(".")[0]) != minimum_version_major or - int(required_version.split(".")[1]) != minimum_version_minor): - failures.append((filename, required_version)) + if (int(required_version.split(".")[0]) != minimum_version_major or + int(required_version.split(".")[1]) != minimum_version_minor): + failures.append((filename, required_version)) - if not failures: - return + if not failures: + return - err = ("The following files should require version of gtk-%s:\n" % - minimum_version_str) - err += "\n".join([("%s version=%s" % tup) for tup in failures]) - raise AssertionError(err) + err = ("The following files should require version of gtk-%s:\n" % + minimum_version_str) + err += "\n".join([("%s version=%s" % tup) for tup in failures]) + raise AssertionError(err) - def test_ui_translatable_atknames(self): - """ - We only use accessible names for uitests, they shouldn't be - marked as translatable - """ - failures = [] - atkstr = "AtkObject::accessible-name" - for filename in glob.glob("ui/*.ui"): - for line in open(filename).readlines(): - if atkstr not in line: - continue - if "translatable=" in line: - failures.append(filename) - break +def test_ui_translatable_atknames(): + """ + We only use accessible names for uitests, they shouldn't be + marked as translatable + """ + failures = [] + atkstr = "AtkObject::accessible-name" + for filename in glob.glob("ui/*.ui"): + for line in open(filename).readlines(): + if atkstr not in line: + continue + if "translatable=" in line: + failures.append(filename) + break - if not failures: - return - err = "Some files incorrectly have translatable ATK names.\n" - err += "Run this command to fix:\n\n" - err += ("""sed -i -e 's/%s" translatable="yes"/%s"/g' """ % - (atkstr, atkstr)) - err += " ".join(failures) - raise AssertionError(err) + if not failures: + return + err = "Some files incorrectly have translatable ATK names.\n" + err += "Run this command to fix:\n\n" + err += ("""sed -i -e 's/%s" translatable="yes"/%s"/g' """ % + (atkstr, atkstr)) + err += " ".join(failures) + raise AssertionError(err)