summaryrefslogtreecommitdiffstats
path: root/testing/mozbase/manifestparser/tests/test_default_overrides.py
diff options
context:
space:
mode:
Diffstat (limited to 'testing/mozbase/manifestparser/tests/test_default_overrides.py')
-rwxr-xr-xtesting/mozbase/manifestparser/tests/test_default_overrides.py138
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()