summaryrefslogtreecommitdiffstats
path: root/test/test_loaders.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_loaders.py')
-rw-r--r--test/test_loaders.py121
1 files changed, 121 insertions, 0 deletions
diff --git a/test/test_loaders.py b/test/test_loaders.py
new file mode 100644
index 0000000..be12cfd
--- /dev/null
+++ b/test/test_loaders.py
@@ -0,0 +1,121 @@
+"""Tests for loaders submodule."""
+import os
+import tempfile
+import uuid
+from pathlib import Path
+from textwrap import dedent
+
+from ansiblelint.loaders import IGNORE_FILE, load_ignore_txt
+
+
+def test_load_ignore_txt_default_empty() -> None:
+ """Test load_ignore_txt when no ignore-file is present."""
+ with tempfile.TemporaryDirectory() as temporary_directory:
+ cwd = Path.cwd()
+
+ try:
+ os.chdir(temporary_directory)
+ result = load_ignore_txt()
+ finally:
+ os.chdir(cwd)
+
+ assert not result
+
+
+def test_load_ignore_txt_default_success() -> None:
+ """Test load_ignore_txt with an existing ignore-file in the default location."""
+ with tempfile.TemporaryDirectory() as temporary_directory:
+ ignore_file = Path(temporary_directory) / IGNORE_FILE.default
+
+ with ignore_file.open("w", encoding="utf-8") as _ignore_file:
+ _ignore_file.write(
+ dedent(
+ """
+ # See https://ansible-lint.readthedocs.io/configuring/#ignoring-rules-for-entire-files
+ playbook2.yml package-latest # comment
+ playbook2.yml foo-bar
+ """,
+ ),
+ )
+
+ cwd = Path.cwd()
+
+ try:
+ os.chdir(temporary_directory)
+ result = load_ignore_txt()
+ finally:
+ os.chdir(cwd)
+
+ assert result == {"playbook2.yml": {"package-latest", "foo-bar"}}
+
+
+def test_load_ignore_txt_default_success_alternative() -> None:
+ """Test load_ignore_txt with an ignore-file in the alternative location ('.config' subdirectory)."""
+ with tempfile.TemporaryDirectory() as temporary_directory:
+ ignore_file = Path(temporary_directory) / IGNORE_FILE.alternative
+ ignore_file.parent.mkdir(parents=True)
+
+ with ignore_file.open("w", encoding="utf-8") as _ignore_file:
+ _ignore_file.write(
+ dedent(
+ """
+ playbook.yml foo-bar
+ playbook.yml more-foo # what-the-foo?
+ tasks/main.yml more-bar
+ """,
+ ),
+ )
+
+ cwd = Path.cwd()
+
+ try:
+ os.chdir(temporary_directory)
+ result = load_ignore_txt()
+ finally:
+ os.chdir(cwd)
+
+ assert result == {
+ "playbook.yml": {"more-foo", "foo-bar"},
+ "tasks/main.yml": {"more-bar"},
+ }
+
+
+def test_load_ignore_txt_custom_success() -> None:
+ """Test load_ignore_txt with an ignore-file in a user defined location."""
+ with tempfile.TemporaryDirectory() as temporary_directory:
+ ignore_file = Path(temporary_directory) / "subdir" / "my_ignores.txt"
+ ignore_file.parent.mkdir(parents=True, exist_ok=True)
+
+ with ignore_file.open("w", encoding="utf-8") as _ignore_file:
+ _ignore_file.write(
+ dedent(
+ """
+ playbook.yml hector
+ vars/main.yml tuco
+ roles/guzman/tasks/main.yml lalo
+ roles/eduardo/tasks/main.yml lalo
+ """,
+ ),
+ )
+
+ cwd = Path.cwd()
+
+ try:
+ os.chdir(temporary_directory)
+ result = load_ignore_txt(Path(ignore_file))
+ finally:
+ os.chdir(cwd)
+
+ assert result == {
+ "playbook.yml": {"hector"},
+ "roles/eduardo/tasks/main.yml": {"lalo"},
+ "roles/guzman/tasks/main.yml": {"lalo"},
+ "vars/main.yml": {"tuco"},
+ }
+
+
+def test_load_ignore_txt_custom_fail() -> None:
+ """Test load_ignore_txt with a user defined but invalid ignore-file location."""
+ result = load_ignore_txt(Path(str(uuid.uuid4())))
+
+ assert not result