We have some news to share for the request index beta feature. We’ve added more options to sort your requests, counters to the individual filters and documentation for the search functionality. Checkout the blog post for more details.

File some-more-small-tests-fixes-enhancements-661.patch of Package venv-salt-minion

From e4333e2000b3ee92c1df7f9af57133706b48ca66 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pablo=20Su=C3=A1rez=20Hern=C3=A1ndez?=
 <psuarezhernandez@suse.com>
Date: Mon, 8 Jul 2024 16:58:28 +0100
Subject: [PATCH] Some more small tests fixes/enhancements (#661)

* test_system: prevent errors when systemd-timesyncd service is masked

* test_custom_module: disable tests when running on Salt Bundle

* Fix debian 12 package tests

* pam: use sys.executable in case /usr/bin/python3 does not exist

* pam: add unit test to ensure sys.executable is used

* Use proper method to calculate the path to Python interpreter

---------

Co-authored-by: Megan Wilhite <mwilhite@vmware.com>
---
 salt/auth/pam.py                              | 19 ++++++++++++++++++-
 tests/integration/cli/test_custom_module.py   |  6 ++++++
 .../pytests/functional/modules/test_system.py |  4 +++-
 .../functional/states/pkgrepo/test_debian.py  |  4 ++++
 tests/pytests/unit/auth/test_pam.py           | 19 +++++++++++++++++++
 5 files changed, 50 insertions(+), 2 deletions(-)

diff --git a/salt/auth/pam.py b/salt/auth/pam.py
index 12af29bbdb8..25e080861b7 100644
--- a/salt/auth/pam.py
+++ b/salt/auth/pam.py
@@ -223,12 +223,29 @@ def authenticate(username, password):
 
     ``password``: the password in plain text
     """
+
+    def __find_pyexe():
+        """
+        Provides the path to the Python interpreter to use.
+
+        First option: the system's Python 3 interpreter
+        If not found, it fallback to use the running Python interpreter (sys.executable)
+
+        This can be overwritten via "auth.pam.python" configuration parameter.
+        """
+        if __opts__.get("auth.pam.python"):
+            return __opts__.get("auth.pam.python")
+        elif os.path.exists("/usr/bin/python3"):
+            return "/usr/bin/python3"
+        else:
+            return sys.executable
+
     env = os.environ.copy()
     env["SALT_PAM_USERNAME"] = username
     env["SALT_PAM_PASSWORD"] = password
     env["SALT_PAM_SERVICE"] = __opts__.get("auth.pam.service", "login")
     env["SALT_PAM_ENCODING"] = __salt_system_encoding__
-    pyexe = pathlib.Path(__opts__.get("auth.pam.python", "/usr/bin/python3")).resolve()
+    pyexe = pathlib.Path(__find_pyexe()).resolve()
     pyfile = pathlib.Path(__file__).resolve()
     if not pyexe.exists():
         log.error("Error 'auth.pam.python' config value does not exist: %s", pyexe)
diff --git a/tests/integration/cli/test_custom_module.py b/tests/integration/cli/test_custom_module.py
index 6c048e30cd2..a4863b584f8 100644
--- a/tests/integration/cli/test_custom_module.py
+++ b/tests/integration/cli/test_custom_module.py
@@ -29,12 +29,18 @@
         olleh
 """
 
+import sys
+
 import pytest
 
 from tests.support.case import SSHCase
 
 
 @pytest.mark.skip_on_windows
+@pytest.mark.skipif(
+    "venv-salt-minion" in sys.executable,
+    reason="Skipping for Salt Bundle (tests are not compatible)",
+)
 class SSHCustomModuleTest(SSHCase):
     """
     Test sls with custom module functionality using ssh
diff --git a/tests/pytests/functional/modules/test_system.py b/tests/pytests/functional/modules/test_system.py
index 3b669c46afd..2cd03a3a3e4 100644
--- a/tests/pytests/functional/modules/test_system.py
+++ b/tests/pytests/functional/modules/test_system.py
@@ -61,7 +61,9 @@ def setup_teardown_vars(file, service, system):
         _machine_info = False
 
     try:
-        _systemd_timesyncd_available_ = service.available("systemd-timesyncd")
+        _systemd_timesyncd_available_ = service.available(
+            "systemd-timesyncd"
+        ) and not service.masked("systemd-timesyncd")
         if _systemd_timesyncd_available_:
             res = service.stop("systemd-timesyncd")
             assert res
diff --git a/tests/pytests/functional/states/pkgrepo/test_debian.py b/tests/pytests/functional/states/pkgrepo/test_debian.py
index d025643aa4c..87716706d5e 100644
--- a/tests/pytests/functional/states/pkgrepo/test_debian.py
+++ b/tests/pytests/functional/states/pkgrepo/test_debian.py
@@ -622,6 +622,10 @@ class Repo:
         if (
             self.grains["osfullname"] == "Ubuntu"
             and self.grains["osrelease"] == "22.04"
+            or "Debian" in self.grains["osfullname"]
+            and self.grains["osrelease"] == "12"
+            # only need to use alt repo until
+            # we release Debian 12 salt packages
         ):
             return True
         return False
diff --git a/tests/pytests/unit/auth/test_pam.py b/tests/pytests/unit/auth/test_pam.py
index 22c7f438d63..35f599e3d17 100644
--- a/tests/pytests/unit/auth/test_pam.py
+++ b/tests/pytests/unit/auth/test_pam.py
@@ -1,3 +1,5 @@
+import tempfile
+
 import pytest
 
 import salt.auth.pam
@@ -45,3 +47,20 @@ def test_if_pam_acct_mgmt_returns_zero_authenticate_should_be_true(mock_pam):
             )
             is True
         )
+
+
+def test_if_sys_executable_is_used_to_call_pam_auth(mock_pam):
+    class Ret:
+        returncode = 0
+
+    with patch(
+        "salt.auth.pam.subprocess.run", return_value=Ret
+    ) as run_mock, tempfile.NamedTemporaryFile() as f, patch(
+        "salt.auth.pam.sys.executable", f.name
+    ), patch(
+        "os.path.exists", return_value=False
+    ):
+        assert salt.auth.pam.auth(
+            username="fnord", password="fnord", service="login", encoding="utf-8"
+        )
+        assert f.name in run_mock.call_args_list[0][0][0]
-- 
2.45.2


openSUSE Build Service is sponsored by