78 lines
2.5 KiB
Python
78 lines
2.5 KiB
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 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()
|