summaryrefslogtreecommitdiffstats
path: root/tools/lint/test/test_ignorefile.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/lint/test/test_ignorefile.py')
-rw-r--r--tools/lint/test/test_ignorefile.py170
1 files changed, 170 insertions, 0 deletions
diff --git a/tools/lint/test/test_ignorefile.py b/tools/lint/test/test_ignorefile.py
new file mode 100644
index 0000000000..502096c5b9
--- /dev/null
+++ b/tools/lint/test/test_ignorefile.py
@@ -0,0 +1,170 @@
+# 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 = "ignorefile"
+
+
+def test_same(lint, create_temp_file):
+ hgContents = """
+\\.pyc$
+\\.pyo$
+ """
+ gitContents = """
+*.pyc
+*.pyo
+ """
+
+ path = create_temp_file(hgContents, ".hgignore")
+ create_temp_file(gitContents, ".gitignore")
+
+ results = lint([path])
+
+ assert len(results) == 0
+
+
+def test_replace(lint, create_temp_file):
+ hgContents = """
+\\.pyc$
+\\.pyo$
+ """
+ gitContents = """
+*.pyc
+*.pyp
+ """
+
+ path = create_temp_file(hgContents, ".hgignore")
+ path2 = create_temp_file(gitContents, ".gitignore")
+
+ results = lint([path])
+
+ assert len(results) == 1
+ assert results[0].level == "error"
+ assert results[0].lineno == 3
+ assert (
+ results[0].message
+ == 'Pattern mismatch: "\\.pyo$" in .hgignore vs "*.pyp" in .gitignore'
+ )
+
+ results = lint([path2])
+
+ assert len(results) == 1
+ assert results[0].level == "error"
+ assert results[0].lineno == 3
+ assert (
+ results[0].message
+ == 'Pattern mismatch: "*.pyp" in .gitignore vs "\\.pyo$" in .hgignore'
+ )
+
+
+def test_insert(lint, create_temp_file):
+ hgContents = """
+\\.pyc$
+\\.pyo$
+ """
+ gitContents = """
+*.pyc
+foo
+*.pyo
+ """
+
+ path = create_temp_file(hgContents, ".hgignore")
+ create_temp_file(gitContents, ".gitignore")
+
+ results = lint([path])
+
+ assert len(results) == 1
+ assert results[0].level == "error"
+ assert results[0].lineno == 3
+ assert results[0].message == 'Pattern "foo" not found in .hgignore'
+
+
+def test_delete(lint, create_temp_file):
+ hgContents = """
+\\.pyc$
+foo
+\\.pyo$
+ """
+ gitContents = """
+*.pyc
+*.pyo
+ """
+
+ path = create_temp_file(hgContents, ".hgignore")
+ create_temp_file(gitContents, ".gitignore")
+
+ results = lint([path])
+
+ assert len(results) == 1
+ assert results[0].level == "error"
+ assert results[0].lineno == 3
+ assert results[0].message == 'Pattern "foo" not found in .gitignore'
+
+
+def test_ignore(lint, create_temp_file):
+ hgContents = """
+\\.pyc$
+# lint-ignore-next-line: hg-only
+foo
+\\.pyo$
+# lint-ignore-next-line: syntax-difference
+(file1|file2)
+diff1
+ """
+ gitContents = """
+*.pyc
+*.pyo
+# lint-ignore-next-line: git-only
+bar
+# lint-ignore-next-line: syntax-difference
+file1
+# lint-ignore-next-line: syntax-difference
+file2
+diff2
+ """
+
+ path = create_temp_file(hgContents, ".hgignore")
+ create_temp_file(gitContents, ".gitignore")
+
+ results = lint([path])
+
+ # Only the line without lint-ignore-next-line should be reported
+ assert len(results) == 1
+ assert results[0].level == "error"
+ assert results[0].lineno == 8
+ assert (
+ results[0].message
+ == 'Pattern mismatch: "diff1" in .hgignore vs "diff2" in .gitignore'
+ )
+
+
+def test_invalid_syntax(lint, create_temp_file):
+ hgContents = """
+\\.pyc$
+# lint-ignore-next-line: random
+foo
+\\.pyo$
+ """
+ gitContents = """
+*.pyc
+*.pyo
+ """
+
+ path = create_temp_file(hgContents, ".hgignore")
+ create_temp_file(gitContents, ".gitignore")
+
+ results = lint([path])
+
+ assert len(results) == 2
+ assert results[0].level == "error"
+ assert results[0].lineno == 3
+ assert results[0].message == 'Unknown lint rule: "random"'
+ assert results[1].level == "error"
+ assert results[1].lineno == 4
+ assert results[1].message == 'Pattern "foo" not found in .gitignore'
+
+
+if __name__ == "__main__":
+ mozunit.main()