From 8506bd66035c292f3daa421c692939a1a1a0f257 Mon Sep 17 00:00:00 2001 From: HVSharma12 Date: Wed, 15 Apr 2026 23:59:41 +0530 Subject: [PATCH 1/2] fix: enable CI tests for openSUSE leap; handle missing /etc/sudoers --- library/scan_sudoers.py | 2 ++ meta/collection-requirements.yml | 2 ++ meta/main.yml | 1 + 3 files changed, 5 insertions(+) diff --git a/library/scan_sudoers.py b/library/scan_sudoers.py index fb5e1b4d..7c18780a 100644 --- a/library/scan_sudoers.py +++ b/library/scan_sudoers.py @@ -168,6 +168,8 @@ def get_includes(path): def get_config_lines(path, params): # Read sudoers file + if not os.path.isfile(path): + return {} fp = open(path, "r") all_lines = fp.read() fp.close() diff --git a/meta/collection-requirements.yml b/meta/collection-requirements.yml index 78f93d31..fd235bd7 100644 --- a/meta/collection-requirements.yml +++ b/meta/collection-requirements.yml @@ -2,3 +2,5 @@ --- collections: - name: ansible.posix + - name: community.general + version: ">=6.6.0,<12.0.0" diff --git a/meta/main.yml b/meta/main.yml index b6f5484c..7395d779 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -19,6 +19,7 @@ galaxy_info: - el9 - el10 - fedora + - leap - container - containerbuild dependencies: [] From 841d50c8b94b8c86ff0bd9ef893f2922ac268385 Mon Sep 17 00:00:00 2001 From: HVSharma12 Date: Thu, 16 Apr 2026 00:37:25 +0530 Subject: [PATCH 2/2] mock isfile in unit test for get config_lines --- library/scan_sudoers.py | 2 +- tests/unit/test_scan_sudoers.py | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/library/scan_sudoers.py b/library/scan_sudoers.py index 7c18780a..2c048f11 100644 --- a/library/scan_sudoers.py +++ b/library/scan_sudoers.py @@ -168,7 +168,7 @@ def get_includes(path): def get_config_lines(path, params): # Read sudoers file - if not os.path.isfile(path): + if not isfile(path): return {} fp = open(path, "r") all_lines = fp.read() diff --git a/tests/unit/test_scan_sudoers.py b/tests/unit/test_scan_sudoers.py index db13710e..40862203 100644 --- a/tests/unit/test_scan_sudoers.py +++ b/tests/unit/test_scan_sudoers.py @@ -334,7 +334,8 @@ def test_get_user_specs15(self): "scan_sudoers.get_includes", return_value={"include_files": ["/etc/sudoers.d/file1"]}, ) - def test_get_config_lines01(self, mock_open, mock_get_includes): + @patch("scan_sudoers.isfile", return_value=True) + def test_get_config_lines01(self, mock_isfile, mock_open, mock_get_includes): # Arrange params = {"output_raw_configs": True, "output_parsed_configs": True} @@ -395,7 +396,8 @@ def test_get_config_lines01(self, mock_open, mock_get_includes): "scan_sudoers.get_includes", return_value={"include_files": ["/etc/sudoers.d/file1"]}, ) - def test_get_config_lines02(self, mock_open, mock_get_includes): + @patch("scan_sudoers.isfile", return_value=True) + def test_get_config_lines02(self, mock_isfile, mock_open, mock_get_includes): # Arrange params = {"output_raw_configs": True, "output_parsed_configs": True} expected_output = {