diff options
Diffstat (limited to '')
-rwxr-xr-x | testing/mozbase/manifestparser/tests/test_default_overrides.py | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/testing/mozbase/manifestparser/tests/test_default_overrides.py b/testing/mozbase/manifestparser/tests/test_default_overrides.py new file mode 100755 index 0000000000..8b648cf6cd --- /dev/null +++ b/testing/mozbase/manifestparser/tests/test_default_overrides.py @@ -0,0 +1,138 @@ +#!/usr/bin/env python + +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this file, +# You can obtain one at http://mozilla.org/MPL/2.0/. + +import os +import re +import unittest + +import mozunit +from manifestparser import ManifestParser, combine_fields + +here = os.path.dirname(os.path.abspath(__file__)) + + +def deepstrip(txt): + "Collapses all repeated blanks to one blank, and strips" + return re.sub(r" +", " ", txt).strip() + + +class TestDefaultSkipif(unittest.TestCase): + """Tests applying a skip-if condition in [DEFAULT] and || with the value for the test""" + + def test_defaults_toml(self): + default = os.path.join(here, "default-skipif.toml") + parser = ManifestParser(manifests=(default,), use_toml=True) + for test in parser.tests: + if test["name"] == "test1": + self.assertEqual( + deepstrip(test["skip-if"]), "os == 'win' && debug\ndebug" + ) + elif test["name"] == "test2": + self.assertEqual( + deepstrip(test["skip-if"]), "os == 'win' && debug\nos == 'linux'" + ) + elif test["name"] == "test3": + self.assertEqual( + deepstrip(test["skip-if"]), "os == 'win' && debug\nos == 'win'" + ) + elif test["name"] == "test4": + self.assertEqual( + deepstrip(test["skip-if"]), + "os == 'win' && debug\nos == 'win' && debug", + ) + elif test["name"] == "test5": + self.assertEqual(deepstrip(test["skip-if"]), "os == 'win' && debug") + elif test["name"] == "test6": + self.assertEqual( + deepstrip(test["skip-if"]), "os == 'win' && debug\ndebug" + ) + + +class TestDefaultSupportFiles(unittest.TestCase): + """Tests combining support-files field in [DEFAULT] with the value for a test""" + + def test_defaults_toml(self): + default = os.path.join(here, "default-suppfiles.toml") + parser = ManifestParser(manifests=(default,), use_toml=True) + expected_supp_files = { + "test7": "foo.js", + "test8": "foo.js bar.js", + "test9": "foo.js", + } + for test in parser.tests: + expected = expected_supp_files[test["name"]] + self.assertEqual(test["support-files"], expected) + + +class TestOmitDefaults(unittest.TestCase): + """Tests passing omit-defaults prevents defaults from propagating to definitions.""" + + def test_defaults_toml(self): + manifests = ( + os.path.join(here, "default-suppfiles.toml"), + os.path.join(here, "default-skipif.toml"), + ) + parser = ManifestParser( + manifests=manifests, handle_defaults=False, use_toml=True + ) + expected_supp_files = { + "test8": "bar.js", + } + expected_skip_ifs = { + "test1": "debug", + "test2": "os == 'linux'", + "test3": "os == 'win'", + "test4": "os == 'win' && debug", + "test6": "debug", + } + for test in parser.tests: + for field, expectations in ( + ("support-files", expected_supp_files), + ("skip-if", expected_skip_ifs), + ): + expected = expectations.get(test["name"]) + if not expected: + self.assertNotIn(field, test) + else: + self.assertEqual(test[field].strip(), expected) + + expected_defaults = { + os.path.join(here, "default-suppfiles.toml"): { + "support-files": "foo.js", + }, + os.path.join(here, "default-skipif.toml"): { + "skip-if": "os == 'win' && debug", + }, + } + for path, defaults in expected_defaults.items(): + self.assertIn(path, parser.manifest_defaults) + actual_defaults = parser.manifest_defaults[path] + for key, value in defaults.items(): + self.assertIn(key, actual_defaults) + self.assertEqual(value, actual_defaults[key].strip()) + + +class TestSubsuiteDefaults(unittest.TestCase): + """Test that subsuites are handled correctly when managing defaults + outside of the manifest parser.""" + + def test_subsuite_defaults_toml(self): + manifest = os.path.join(here, "default-subsuite.toml") + parser = ManifestParser( + manifests=(manifest,), handle_defaults=False, use_toml=True + ) + expected_subsuites = { + "test1": "baz", + "test2": "foo", + } + defaults = parser.manifest_defaults[manifest] + for test in parser.tests: + value = combine_fields(defaults, test) + self.assertEqual(expected_subsuites[value["name"]], value["subsuite"]) + + +if __name__ == "__main__": + mozunit.main() |