summaryrefslogtreecommitdiffstats
path: root/tools/lint/test/test_manifest_toml.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/lint/test/test_manifest_toml.py')
-rw-r--r--tools/lint/test/test_manifest_toml.py78
1 files changed, 78 insertions, 0 deletions
diff --git a/tools/lint/test/test_manifest_toml.py b/tools/lint/test/test_manifest_toml.py
new file mode 100644
index 0000000000..f205a1cd1f
--- /dev/null
+++ b/tools/lint/test/test_manifest_toml.py
@@ -0,0 +1,78 @@
+# 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 mozunit
+
+LINTER = "test-manifest-toml"
+fixed = 0
+
+
+def test_valid(lint, paths):
+ results = lint(paths("valid.toml"))
+ assert len(results) == 0
+
+
+def test_invalid(lint, paths):
+ results = lint(paths("invalid.toml"))
+ assert len(results) == 1
+ assert results[0].message == "The manifest is not valid TOML."
+
+
+def test_no_default(lint, paths):
+ """Test verifying [DEFAULT] section."""
+ results = lint(paths("no-default.toml"))
+ assert len(results) == 1
+ assert results[0].message == "The manifest does not start with a [DEFAULT] section."
+
+
+def test_no_default_fix(lint, paths, create_temp_file):
+ """Test fixing missing [DEFAULT] section."""
+ contents = "# this Manifest has no DEFAULT section\n"
+ path = create_temp_file(contents, "no-default.toml")
+ results = lint([path], fix=True)
+ assert len(results) == 1
+ assert results[0].message == "The manifest does not start with a [DEFAULT] section."
+ assert fixed == 1
+
+
+def test_non_double_quote_sections(lint, paths):
+ """Test verifying [DEFAULT] section."""
+ results = lint(paths("non-double-quote-sections.toml"))
+ assert len(results) == 2
+ assert results[0].message.startswith("The section name must be double quoted:")
+
+
+def test_unsorted(lint, paths):
+ """Test sections in alpha order."""
+ results = lint(paths("unsorted.toml"))
+ assert len(results) == 1
+ assert results[0].message == "The manifest sections are not in alphabetical order."
+
+
+def test_comment_section(lint, paths):
+ """Test for commented sections."""
+ results = lint(paths("comment-section.toml"))
+ assert len(results) == 2
+ assert results[0].message.startswith(
+ "Use 'disabled = \"<reason>\"' to disable a test instead of a comment:"
+ )
+
+
+def test_skip_if_not_array(lint, paths):
+ """Test for non-array skip-if value."""
+ results = lint(paths("skip-if-not-array.toml"))
+ assert len(results) == 1
+ assert results[0].message.startswith("Value for conditional must be an array:")
+
+
+def test_skip_if_explicit_or(lint, paths):
+ """Test for explicit || in skip-if."""
+ results = lint(paths("skip-if-explicit-or.toml"))
+ assert len(results) == 1
+ assert results[0].message.startswith(
+ "Value for conditional must not include explicit ||, instead put on multiple lines:"
+ )
+
+
+if __name__ == "__main__":
+ mozunit.main()