commit:     3290e67d3188a373a0a33c67ceb67f39510b2d38
Author:     Karl-Johan Karlsson <creideiki <AT> lysator <DOT> liu <DOT> se>
AuthorDate: Sun Jan 25 13:59:39 2026 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Feb 28 15:13:09 2026 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3290e67d

app-admin/salt: add 3007.12

Since the listed maintainer (@chutz) has not responded in Bugzilla
(https://bugs.gentoo.org/959581) for a long time, I'm submitting this
version bump that I've been running out of a personal repository for
the last month.

1) The latest (upstream) version currently in Portage is 3007.1,
   released in May 2024
   (https://github.com/saltstack/salt/releases/tag/v3007.1).
   3007.12 was released in February 2026
   (https://github.com/saltstack/salt/releases/tag/v3007.12).

2) Commit 66a26626dfec5ea9d6f2f30fb1314fb94fd728c4 removed Python 3.11
   from PYTHON_COMPAT, leaving only Python 3.12. However, upstream
   only supports 3.10
   
(https://docs.saltproject.io/salt/install-guide/en/latest/topics/salt-python-version-support.html).
   While the 3007 branch has been slowly getting support for newer
   Pythons, on my system 3007.1 on Pyhon 3.12 is extremely unstable,
   in addition to other problems mentioned here
   (https://bugs.gentoo.org/966179)
   and comments by upstream in their bug tracker
   (https://github.com/saltstack/salt/issues/66896#issuecomment-2715574150).

3) The latest package in Portage, app-admin/salt-3007.1-r2, has unused
   USE flags (https://bugs.gentoo.org/679634) and deprecated
   dependencies (https://bugs.gentoo.org/931142,
   https://bugs.gentoo.org/955193).

This is a minimum viable effort version bump to take care of these
immediate problems. Known remaining issues include:

1) Python 3.12 is still not officially supported, and upstream does
   not intend to change this in the 3007 branch
   
(https://docs.saltproject.io/salt/install-guide/en/latest/topics/salt-python-version-support.html).
   The 3007 branch goes out of support in March 2026
   
(https://docs.saltproject.io/salt/install-guide/en/latest/topics/salt-version-support-lifecycle.html)
   leading me to hope that a 3008 branch will be made available soon
   with support for newer Pythons.

2) Python 3.13 is definitely not supported, not least because Salt
   tries to import several deprecated modules that were removed in
   Python 3.13 (cgi, pipes, spwd, and crypt). Again, I hope 3008 will
   fix this.

3) The test suite takes an unreasonable amount of time to run, even
   without running the tests marked by upstream as slow. I haven't run
   it all, but a quick back-of-the-envelope calculation estimates two
   days for a full run. I've pared it down to a tiny subset that runs
   in about 10 minutes, but a proper version bump requires starting
   that list over from scratch.

4) Salt contains a large number of optional modules, of which I am
   only able to test very few. Some are obviously broken in this
   packaging, e.g. OpenStack Nova, which requires an ancient version
   of dev-python/python-novaclient (6.0.1) that has not been available
   in Portage since 2018.

Signed-off-by: Karl-Johan Karlsson <creideiki <AT> lysator.liu.se>
Closes: https://bugs.gentoo.org/959581
Closes: https://bugs.gentoo.org/966179
Closes: https://bugs.gentoo.org/679634
Closes: https://bugs.gentoo.org/931142
Closes: https://bugs.gentoo.org/955193
Closes: https://bugs.gentoo.org/919160
Part-of: https://github.com/gentoo/gentoo/pull/45516
Signed-off-by: Sam James <sam <AT> gentoo.org>

 app-admin/salt/Manifest                            |   1 +
 .../files/salt-3007.10-tests-without-systemd.patch | 140 +++++
 .../salt-3007.10-use-tomllib-and-tomli_w.patch     |  40 ++
 app-admin/salt/salt-3007.12.ebuild                 | 645 +++++++++++++++++++++
 4 files changed, 826 insertions(+)

diff --git a/app-admin/salt/Manifest b/app-admin/salt/Manifest
index 8d812b32b245..b3b8ac587a56 100644
--- a/app-admin/salt/Manifest
+++ b/app-admin/salt/Manifest
@@ -1,2 +1,3 @@
 DIST salt-3007.0.tar.gz 20304228 BLAKE2B 
3db95ce779cfd08d61536dcfb4ff6ac31788ad1d6d4665b640dcc430f5a33847f231f94fd574c5d8df7b14e2854511c80610a37cd19be5429c4643be8bd9e0eb
 SHA512 
0e49d76dafdb981ee380ea89ceba2cddeae8cd95df1d188a6f8ba64a175c606aaf2f8101bacb040792255afdb46ae668cbc9464d0dbb055986e85cee4d5c130b
 DIST salt-3007.1.tar.gz 19401831 BLAKE2B 
ea8c89a24991467367dc0c50e3d2f864e2f6211ba9a71195d6308a86df16229fc77baa2ec837f043ebad36d9d7a6673fefa3a1a826472d900925e657e2152718
 SHA512 
732820bae98ce2eb74175a2c37c986076572e0e60d04a270861fd3b0b6871cd2cc703683a8c0d97ffc43b2f7fffb76ae709a1aea839d10abc9f5d0837eaade4b
+DIST salt-3007.10.tar.gz 16223979 BLAKE2B 
f2617fa9ec654e8ab6c71d41a847888e2babd91373363da756f39ea6d039f7507fa7395c1f01ae77ecbff27ac3c3f25a99f6b2a393a43db638b458b1ed8a9da5
 SHA512 
da920672819fe5a9b24a37ec0babdd0776e7ffbeff9cecf0195149f53037f09d81f22335bb54b102c1e4bfff0de8392e3a016eb6f696756b365bf7ce7a6e12a7

diff --git a/app-admin/salt/files/salt-3007.10-tests-without-systemd.patch 
b/app-admin/salt/files/salt-3007.10-tests-without-systemd.patch
new file mode 100644
index 000000000000..9fa7938b659a
--- /dev/null
+++ b/app-admin/salt/files/salt-3007.10-tests-without-systemd.patch
@@ -0,0 +1,140 @@
+diff --git a/tests/integration/modules/test_localemod.py 
b/tests/integration/modules/test_localemod.py
+index 5a59e84e49..680bceb698 100644
+--- a/tests/integration/modules/test_localemod.py
++++ b/tests/integration/modules/test_localemod.py
+@@ -11,8 +11,11 @@ def _check_systemctl():
+         if not salt.utils.platform.is_linux():
+             _check_systemctl.memo = False
+         else:
+-            proc = subprocess.run(["localectl"], capture_output=True, 
check=False)
+-            _check_systemctl.memo = b"No such file or directory" in 
proc.stderr
++            try:
++                proc = subprocess.run(["localectl"], capture_output=True, 
check=False)
++                _check_systemctl.memo = b"No such file or directory" in 
proc.stderr
++            except FileNotFoundError:
++                _check_systemctl.memo = False
+     return _check_systemctl.memo
+ 
+ 
+diff --git a/tests/integration/modules/test_timezone.py 
b/tests/integration/modules/test_timezone.py
+index c9894c6108..e4c37e8716 100644
+--- a/tests/integration/modules/test_timezone.py
++++ b/tests/integration/modules/test_timezone.py
+@@ -24,8 +24,11 @@ def _check_systemctl():
+         if not salt.utils.platform.is_linux():
+             _check_systemctl.memo = False
+         else:
+-            proc = subprocess.run(["timedatectl"], capture_output=True, 
check=False)
+-            _check_systemctl.memo = b"No such file or directory" in 
proc.stderr
++            try:
++                proc = subprocess.run(["timedatectl"], capture_output=True, 
check=False)
++                _check_systemctl.memo = b"No such file or directory" in 
proc.stderr
++            except FileNotFoundError:
++                _check_systemctl.memo = False
+     return _check_systemctl.memo
+ 
+ 
+diff --git a/tests/pytests/functional/modules/test_service.py 
b/tests/pytests/functional/modules/test_service.py
+index 8384c9c5b2..3f66e0de63 100644
+--- a/tests/pytests/functional/modules/test_service.py
++++ b/tests/pytests/functional/modules/test_service.py
+@@ -20,11 +20,14 @@ def _check_systemctl():
+         if not salt.utils.platform.is_linux():
+             _check_systemctl.memo = False
+         else:
+-            proc = subprocess.run(["systemctl"], capture_output=True, 
check=False)
+-            _check_systemctl.memo = (
+-                b"Failed to get D-Bus connection: No such file or directory"
+-                in proc.stderr
+-            )
++            try:
++                proc = subprocess.run(["systemctl"], capture_output=True, 
check=False)
++                _check_systemctl.memo = (
++                    b"Failed to get D-Bus connection: No such file or 
directory"
++                    in proc.stderr
++                )
++            except FileNotFoundError:
++                _check_systemctl.memo = False
+     return _check_systemctl.memo
+ 
+ 
+diff --git a/tests/pytests/functional/modules/test_system.py 
b/tests/pytests/functional/modules/test_system.py
+index 8ffb048fd5..8c165d9dae 100644
+--- a/tests/pytests/functional/modules/test_system.py
++++ b/tests/pytests/functional/modules/test_system.py
+@@ -25,13 +25,16 @@ def check_hostnamectl():
+         if not salt.utils.platform.is_linux():
+             check_hostnamectl.memo = False
+         else:
+-            proc = subprocess.run(["hostnamectl"], capture_output=True, 
check=False)
+-            check_hostnamectl.memo = (
+-                b"Failed to connect to bus: No such file or directory" in 
proc.stderr
+-                or b"Failed to create bus connection: No such file or 
directory"
+-                in proc.stderr
+-                or b"Failed to query system properties" in proc.stderr
+-            )
++            try:
++                proc = subprocess.run(["hostnamectl"], capture_output=True, 
check=False)
++                check_hostnamectl.memo = (
++                    b"Failed to connect to bus: No such file or directory" in 
proc.stderr
++                    or b"Failed to create bus connection: No such file or 
directory"
++                    in proc.stderr
++                    or b"Failed to query system properties" in proc.stderr
++                )
++            except FileNotFoundError:
++                check_hostnamectl.memo = False
+     return check_hostnamectl.memo
+ 
+ 
+diff --git a/tests/pytests/functional/states/test_service.py 
b/tests/pytests/functional/states/test_service.py
+index 671d56893d..2fd4e37fcf 100644
+--- a/tests/pytests/functional/states/test_service.py
++++ b/tests/pytests/functional/states/test_service.py
+@@ -28,12 +28,15 @@ def _check_systemctl():
+         if not salt.utils.platform.is_linux():
+             _check_systemctl.memo = False
+         else:
+-            proc = subprocess.run(["systemctl"], capture_output=True, 
check=False)
+-            _check_systemctl.memo = (
+-                b"Failed to get D-Bus connection: No such file or directory"
+-                in proc.stderr
+-                or b"Failed to connect to bus: No such file or directory" in 
proc.stderr
+-            )
++            try:
++                proc = subprocess.run(["systemctl"], capture_output=True, 
check=False)
++                _check_systemctl.memo = (
++                    b"Failed to get D-Bus connection: No such file or 
directory"
++                    in proc.stderr
++                    or b"Failed to connect to bus: No such file or directory" 
in proc.stderr
++                )
++            except FileNotFoundError:
++                _check_systemctl.memo = False
+     return _check_systemctl.memo
+ 
+ 
+diff --git a/tests/pytests/unit/states/test_service.py 
b/tests/pytests/unit/states/test_service.py
+index 04cdd9b059..1d82de78e2 100644
+--- a/tests/pytests/unit/states/test_service.py
++++ b/tests/pytests/unit/states/test_service.py
+@@ -22,12 +22,15 @@ def _check_systemctl():
+         if not salt.utils.platform.is_linux():
+             _check_systemctl.memo = False
+         else:
+-            proc = subprocess.run(["systemctl"], capture_output=True, 
check=False)
+-            _check_systemctl.memo = (
+-                b"Failed to get D-Bus connection: No such file or directory"
+-                in proc.stderr
+-                or b"Failed to connect to bus: No such file or directory" in 
proc.stderr
+-            )
++            try:
++                proc = subprocess.run(["systemctl"], capture_output=True, 
check=False)
++                _check_systemctl.memo = (
++                    b"Failed to get D-Bus connection: No such file or 
directory"
++                    in proc.stderr
++                    or b"Failed to connect to bus: No such file or directory" 
in proc.stderr
++                )
++            except FileNotFoundError:
++                _check_systemctl.memo = False
+     return _check_systemctl.memo
+ 
+ 

diff --git a/app-admin/salt/files/salt-3007.10-use-tomllib-and-tomli_w.patch 
b/app-admin/salt/files/salt-3007.10-use-tomllib-and-tomli_w.patch
new file mode 100644
index 000000000000..72f4af6a4d57
--- /dev/null
+++ b/app-admin/salt/files/salt-3007.10-use-tomllib-and-tomli_w.patch
@@ -0,0 +1,40 @@
+diff --git a/salt/serializers/tomlmod.py b/salt/serializers/tomlmod.py
+index 66a91b9277..4545fd2d5f 100644
+--- a/salt/serializers/tomlmod.py
++++ b/salt/serializers/tomlmod.py
+@@ -13,7 +13,8 @@ import logging
+ from salt.serializers import DeserializationError, SerializationError
+ 
+ try:
+-    import toml
++    import tomllib
++    import tomli_w
+ 
+     HAS_TOML = True
+ except ImportError:
+@@ -43,12 +44,12 @@ def deserialize(stream_or_string, **options):
+ 
+     try:
+         if not isinstance(stream_or_string, (bytes, str)):
+-            return toml.load(stream_or_string, **options)
++            return tomllib.load(stream_or_string, **options)
+ 
+         if isinstance(stream_or_string, bytes):
+             stream_or_string = stream_or_string.decode("utf-8")
+ 
+-        return toml.loads(stream_or_string)
++        return tomllib.loads(stream_or_string)
+     except Exception as error:  # pylint: disable=broad-except
+         raise DeserializationError(error)
+ 
+@@ -63,8 +64,8 @@ def serialize(obj, **options):
+ 
+     try:
+         if "file_out" in options:
+-            return toml.dump(obj, options["file_out"], **options)
++            return tomli_w.dump(obj, options["file_out"], **options)
+         else:
+-            return toml.dumps(obj, **options)
++            return tomli_w.dumps(obj, **options)
+     except Exception as error:  # pylint: disable=broad-except
+         raise SerializationError(error)

diff --git a/app-admin/salt/salt-3007.12.ebuild 
b/app-admin/salt/salt-3007.12.ebuild
new file mode 100644
index 000000000000..2d16c8032ac8
--- /dev/null
+++ b/app-admin/salt/salt-3007.12.ebuild
@@ -0,0 +1,645 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+PYTHON_COMPAT=( python3_12 )
+
+DISTUTILS_USE_PEP517=setuptools
+inherit systemd distutils-r1
+
+DESCRIPTION="Salt is a remote execution and configuration manager"
+HOMEPAGE="https://www.saltstack.com/resources/community/
+       https://github.com/saltstack";
+
+if [[ ${PV} == 9999* ]]; then
+       inherit git-r3
+       EGIT_REPO_URI="https://github.com/${PN}stack/${PN}.git";
+       EGIT_BRANCH="develop"
+else
+       inherit pypi
+       KEYWORDS="~amd64"
+fi
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="
+       cheetah ldap libcloud libvirt genshi keyring mako
+       mongodb nova portage profile redis selinux test raet
+       +zeromq vim-syntax
+"
+
+RDEPEND="
+       sys-apps/pciutils
+       dev-libs/openssl:0=[-bindist(-)]
+       >=dev-python/aiohttp-3.13.3[${PYTHON_USEDEP}]
+       >=dev-python/cffi-2.0.0[${PYTHON_USEDEP}]
+       >=dev-python/cherrypy-18.10.0[${PYTHON_USEDEP}]
+       >=dev-python/cryptography-42.0.2[${PYTHON_USEDEP}]
+       >=dev-python/distro-1.8.0[${PYTHON_USEDEP}]
+       >=dev-python/frozenlist-1.5.0[${PYTHON_USEDEP}]
+       >=dev-python/immutables-0.21[${PYTHON_USEDEP}]
+       >=dev-python/importlib-metadata-8.7.0[${PYTHON_USEDEP}]
+       >=dev-python/jaraco-functools-4.1.0[${PYTHON_USEDEP}]
+       >=dev-python/jaraco-text-4.0.0[${PYTHON_USEDEP}]
+       >=dev-python/jinja2-3.1.5[${PYTHON_USEDEP}]
+       >=dev-python/jmespath-1.0.1[${PYTHON_USEDEP}]
+       >=dev-python/libnacl-1.7.1[${PYTHON_USEDEP}]
+       >=dev-python/looseversion-1.3.0[${PYTHON_USEDEP}]
+       >=dev-python/markupsafe-2.1.3[${PYTHON_USEDEP}]
+       >=dev-python/msgpack-1.0.7[${PYTHON_USEDEP}]
+       >=dev-python/packaging-24.0[${PYTHON_USEDEP}]
+       >=dev-python/psutil-5.9.6[${PYTHON_USEDEP}]
+       >=dev-python/pycryptodome-3.19.1[${PYTHON_USEDEP}]
+       >=dev-python/pyopenssl-24.0.0[${PYTHON_USEDEP}]
+       >=dev-python/python-dateutil-2.8.2[${PYTHON_USEDEP}]
+       >=dev-python/python-gnupg-0.5.2[${PYTHON_USEDEP}]
+       >=dev-python/pyyaml-6.0.1[${PYTHON_USEDEP}]
+       >=dev-python/requests-2.32.5[${PYTHON_USEDEP}]
+       >=dev-python/setproctitle-1.3.2[${PYTHON_USEDEP}]
+       >=dev-python/setuptools-80.10.2[${PYTHON_USEDEP}]
+       dev-python/tomli-w[${PYTHON_USEDEP}]
+       >=dev-python/tornado-6.5.4[${PYTHON_USEDEP}]
+       >=dev-python/urllib3-2.6.3[${PYTHON_USEDEP}]
+       >=dev-python/watchdog-3.0.0[${PYTHON_USEDEP}]
+       >=dev-python/zipp-3.19.0[${PYTHON_USEDEP}]
+       libcloud? (
+               >=dev-python/aiosignal-1.3.1[${PYTHON_USEDEP}]
+               >=dev-python/apache-libcloud-3.7.0[${PYTHON_USEDEP}]
+               >=dev-python/async-timeout-4.0.3[${PYTHON_USEDEP}]
+       )
+       mako? ( >=dev-python/mako-1.2.4[${PYTHON_USEDEP}] )
+       ldap? ( dev-python/python-ldap[${PYTHON_USEDEP}] )
+       libvirt? (
+               dev-python/libvirt-python[${PYTHON_USEDEP}]
+       )
+       raet? (
+               >=dev-python/ioflo-1.1.7[${PYTHON_USEDEP}]
+               >=dev-python/raet-0.6.0[${PYTHON_USEDEP}]
+       )
+       cheetah? ( >=dev-python/cheetah3-3.2.6[${PYTHON_USEDEP}] )
+       genshi? ( >=dev-python/genshi-0.7.7[${PYTHON_USEDEP}] )
+       mongodb? ( dev-python/pymongo[${PYTHON_USEDEP}] )
+       portage? ( sys-apps/portage[${PYTHON_USEDEP}] )
+       keyring? ( >=dev-python/keyring-5.7.1[${PYTHON_USEDEP}] )
+       redis? ( >=dev-python/redis-3.5.3[${PYTHON_USEDEP}] )
+       selinux? ( sec-policy/selinux-salt )
+       nova? (
+               >=dev-python/python-novaclient-2.6.1[${PYTHON_USEDEP}]
+               <=dev-python/python-novaclient-6.0.1[${PYTHON_USEDEP}]
+       )
+       profile? ( dev-python/yappi[${PYTHON_USEDEP}] )
+       vim-syntax? ( app-vim/salt-vim )
+       zeromq? ( >=dev-python/pyzmq-25.1.2[${PYTHON_USEDEP}] )
+"
+BDEPEND="
+       sys-apps/findutils
+       dev-python/build[${PYTHON_USEDEP}]
+       test? (
+               ${RDEPEND}
+               app-arch/zip
+               dev-python/apache-libcloud[${PYTHON_USEDEP}]
+               dev-python/boto3[${PYTHON_USEDEP}]
+               >=dev-python/certifi-2024.7.4[${PYTHON_USEDEP}]
+               >=dev-python/jsonschema-3.0[${PYTHON_USEDEP}]
+               dev-python/mako[${PYTHON_USEDEP}]
+               >=dev-python/mock-2.0.0[${PYTHON_USEDEP}]
+               >=dev-python/more-itertools-10.8.0[${PYTHON_USEDEP}]
+               >=dev-python/moto-2.0.0[${PYTHON_USEDEP}]
+               dev-python/passlib[${PYTHON_USEDEP}]
+               dev-python/bcrypt[${PYTHON_USEDEP}]
+               >=dev-python/filelock-3.20.3[${PYTHON_USEDEP}]
+               dev-python/pip[${PYTHON_USEDEP}]
+               dev-python/pygit2[${PYTHON_USEDEP}]
+               dev-python/pyinotify[${PYTHON_USEDEP}]
+               >=dev-python/pyopenssl-23.0.0[${PYTHON_USEDEP}]
+               >=dev-python/pytest-7.2.0[${PYTHON_USEDEP}]
+               >=dev-python/pytest-salt-factories-1.0.5[${PYTHON_USEDEP}]
+               dev-python/pytest-helpers-namespace[${PYTHON_USEDEP}]
+               dev-python/pytest-subtests[${PYTHON_USEDEP}]
+               dev-python/pytest-shell-utilities[${PYTHON_USEDEP}]
+               dev-python/pytest-skip-markers[${PYTHON_USEDEP}]
+               dev-python/pytest-system-statistics[${PYTHON_USEDEP}]
+               dev-python/pytest-custom-exit-code[${PYTHON_USEDEP}]
+               dev-python/flaky[${PYTHON_USEDEP}]
+               net-dns/bind
+               >=dev-python/virtualenv-20.3.0[${PYTHON_USEDEP}]
+               dev-util/yamllint[${PYTHON_USEDEP}]
+               !x86? ( >=dev-python/boto3-1.21.46[${PYTHON_USEDEP}] )
+       )
+"
+
+DOCS=( README.rst AUTHORS )
+
+REQUIRED_USE="
+       || ( raet zeromq )
+       test? ( cheetah genshi )
+"
+RESTRICT="
+       !test? ( test )
+       x86? ( test )
+"
+
+PATCHES=(
+       "${FILESDIR}/salt-3003-gentoolkit-revdep.patch"
+       "${FILESDIR}/salt-3006.9-pam-module.patch"
+       "${FILESDIR}/salt-3007.1-python-3.13-urllib-parse.patch"
+       "${FILESDIR}/salt-3007.10-tests-without-systemd.patch"
+       "${FILESDIR}/salt-3007.10-use-tomllib-and-tomli_w.patch"
+)
+
+python_prepare_all() {
+       local -a remove_test_files=(
+               # remove tests with external dependencies that may not be 
available, and
+               # tests that don't work in sandbox
+               tests/integration/externalapi/test_venafiapi.py
+               tests/integration/modules/test_rabbitmq.py
+               tests/integration/modules/test_supervisord.py
+               tests/integration/states/test_match.py
+               tests/pytests/functional/fileserver/hgfs/test_hgfs.py
+               tests/pytests/functional/loader/test_loader.py
+               tests/pytests/functional/modules/file/test_readlink.py
+               tests/pytests/functional/modules/file/test_symlink.py
+               tests/pytests/functional/modules/state/test_jinja_filters.py
+               tests/pytests/functional/modules/state/test_jinja_renderer.py
+               tests/pytests/functional/modules/state/test_mako_renderer.py
+               
tests/pytests/functional/modules/state/test_pyobjects_renderer.py
+               tests/pytests/functional/modules/test_aptpkg.py
+               tests/pytests/functional/modules/test_dockermod.py
+               tests/pytests/functional/modules/test_etcd_mod.py
+               tests/pytests/functional/modules/test_grains.py
+               tests/pytests/functional/modules/test_mac_service.py
+               tests/pytests/functional/modules/test_saltcheck.py
+               tests/pytests/functional/modules/test_saltutil.py
+               tests/pytests/functional/modules/test_test.py
+               tests/pytests/functional/pillar/hg_pillar/test_hg_pillar.py
+               tests/pytests/functional/pillar/test_git_pillar.py
+               tests/pytests/functional/pillar/test_gpg.py
+               tests/pytests/functional/returners/test_etcd_return.py
+               tests/pytests/functional/runners/test_winrepo.py
+               tests/pytests/functional/sdb/test_etcd_db.py
+               tests/pytests/functional/state/test_masterless_tops.py
+               tests/pytests/functional/states/file/test_keyvalue.py
+               tests/pytests/functional/states/file/test_patch.py
+               tests/pytests/functional/states/file/test_rename.py
+               tests/pytests/functional/states/rabbitmq
+               tests/pytests/functional/states/test_docker_container.py
+               tests/pytests/functional/states/test_docker_network.py
+               tests/pytests/functional/states/test_etcd_mod.py
+               tests/pytests/functional/states/test_module.py
+               tests/pytests/functional/states/test_mysql.py
+               tests/pytests/functional/states/test_svn.py
+               tests/pytests/functional/states/test_virtualenv_mod.py
+               tests/pytests/functional/test_version.py
+               tests/pytests/functional/utils/gitfs
+               tests/pytests/functional/utils/test_vault.py
+               tests/pytests/integration/cli/test_syndic_eauth.py
+               tests/pytests/integration/daemons/test_memory_leak.py
+               tests/pytests/integration/grains/test_grains.py
+               tests/pytests/integration/master/test_clear_funcs.py
+               tests/pytests/integration/minion/test_reauth.py
+               tests/pytests/integration/modules/grains/test_append.py
+               tests/pytests/integration/modules/grains/test_module.py
+               tests/pytests/integration/modules/saltutil/test_grains.py
+               tests/pytests/integration/modules/saltutil/test_modules.py
+               tests/pytests/integration/modules/saltutil/test_wheel.py
+               
tests/pytests/integration/modules/state/test_state_pillar_errors.py
+               tests/pytests/integration/modules/state/test_state_test.py
+               tests/pytests/integration/modules/test_cmdmod.py
+               tests/pytests/integration/modules/test_event.py
+               tests/pytests/integration/modules/test_file.py
+               tests/pytests/integration/modules/test_jinja.py
+               tests/pytests/integration/modules/test_pillar.py
+               tests/pytests/integration/modules/test_vault.py
+               tests/pytests/integration/modules/test_virt.py
+               tests/pytests/integration/modules/test_x509_v2.py
+               tests/pytests/integration/proxy/test_deltaproxy.py
+               tests/pytests/integration/proxy/test_shell.py
+               tests/pytests/integration/reactor/test_reactor.py
+               tests/pytests/integration/returners/test_noop_return.py
+               
tests/pytests/integration/runners/state/orchestrate/test_orchestrate.py
+               tests/pytests/integration/runners/test_cache.py
+               tests/pytests/integration/runners/test_jobs.py
+               tests/pytests/integration/runners/test_manage.py
+               tests/pytests/integration/runners/test_saltutil.py
+               tests/pytests/integration/runners/test_vault.py
+               tests/pytests/integration/sdb/test_vault.py
+               tests/pytests/integration/ssh/state/test_pillar_override.py
+               
tests/pytests/integration/ssh/state/test_retcode_highstate_verification_requisite_fail.py
+               
tests/pytests/integration/ssh/state/test_retcode_pillar_render_exception.py
+               
tests/pytests/integration/ssh/state/test_retcode_render_exception.py
+               
tests/pytests/integration/ssh/state/test_retcode_render_module_exception.py
+               tests/pytests/integration/ssh/state/test_retcode_run_fail.py
+               
tests/pytests/integration/ssh/state/test_retcode_state_run_remote_exception.py
+               tests/pytests/integration/ssh/state/test_state.py
+               tests/pytests/integration/ssh/state/test_with_import_dir.py
+               tests/pytests/integration/ssh/test_cmdmod.py
+               tests/pytests/integration/ssh/test_config.py
+               tests/pytests/integration/ssh/test_cp.py
+               tests/pytests/integration/ssh/test_deploy.py
+               tests/pytests/integration/ssh/test_grains.py
+               tests/pytests/integration/ssh/test_jinja_mods.py
+               tests/pytests/integration/ssh/test_master.py
+               tests/pytests/integration/ssh/test_mine.py
+               tests/pytests/integration/ssh/test_pillar.py
+               tests/pytests/integration/ssh/test_pillar_compilation.py
+               tests/pytests/integration/ssh/test_pre_flight.py
+               tests/pytests/integration/ssh/test_publish.py
+               tests/pytests/integration/ssh/test_py_versions.py
+               tests/pytests/integration/ssh/test_raw.py
+               tests/pytests/integration/ssh/test_saltcheck.py
+               tests/pytests/integration/ssh/test_slsutil.py
+               tests/pytests/integration/states/test_beacon.py
+               tests/pytests/integration/states/test_file.py
+               tests/pytests/integration/states/test_include.py
+               tests/pytests/integration/states/test_ini_manage.py
+               tests/pytests/integration/states/test_state_test.py
+               tests/pytests/integration/states/test_x509_v2.py
+               tests/pytests/integration/utils/test_templates.py
+               tests/pytests/integration/wheel/test_key.py
+               tests/pytests/pkg/integration/test_check_imports.py
+               tests/pytests/pkg/integration/test_clean_zmq_teardown.py
+               tests/pytests/pkg/integration/test_enabled_disabled.py
+               tests/pytests/pkg/integration/test_help.py
+               tests/pytests/pkg/integration/test_logrotate_config.py
+               tests/pytests/pkg/integration/test_pip.py
+               tests/pytests/pkg/integration/test_pkg.py
+               tests/pytests/pkg/integration/test_python.py
+               tests/pytests/scenarios/compat/test_with_versions.py
+               tests/pytests/unit/loader/test_lazy.py
+               tests/pytests/unit/modules/test_mongodb.py
+               tests/pytests/unit/modules/test_mysql.py
+               tests/pytests/unit/modules/test_schedule.py
+               tests/pytests/unit/modules/test_yaml.py
+               tests/pytests/unit/pillar/test_consul_pillar.py
+               tests/pytests/unit/pillar/test_mysql.py
+               tests/pytests/unit/pillar/test_pillar.py
+               tests/pytests/unit/renderers/test_yamlex.py
+               tests/pytests/unit/roster/test_ansible.py
+               tests/pytests/unit/roster/test_dir.py
+               tests/pytests/unit/runners/test_reactor.py
+               tests/pytests/unit/states/file/test_keyvalue.py
+               tests/pytests/unit/utils/jinja/test_get_template.py
+               tests/pytests/unit/utils/jinja/test_salt_cache_loader.py
+               tests/pytests/unit/utils/test_cache.py
+               tests/pytests/unit/utils/test_etcd_util.py
+               tests/pytests/unit/utils/test_package.py
+               tests/pytests/unit/utils/test_versions.py
+               tests/pytests/unit/utils/test_x509.py
+               tests/unit/ext/test_ipaddress.py
+               tests/unit/modules/test_boto_elb.py
+               tests/unit/modules/test_boto_secgroup.py
+               tests/unit/modules/test_boto_vpc.py
+               tests/unit/modules/test_elasticsearch.py
+               tests/unit/modules/test_k8s.py
+               tests/unit/modules/test_kubernetesmod.py
+               tests/unit/modules/test_vsphere.py
+               tests/unit/netapi/rest_tornado/test_saltnado.py
+               tests/unit/states/test_boto_vpc.py
+               tests/unit/test_module_names.py
+               tests/unit/test_zypp_plugins.py
+               tests/unit/utils/test_extend.py
+               tests/unit/utils/test_pbm.py
+               tests/unit/utils/test_schema.py
+               tests/unit/utils/test_vmware.py
+               tests/unit/utils/test_vsan.py
+
+               # tests that require network access
+               tests/integration/cloud
+               tests/integration/netapi
+               tests/pytests/functional/cli/test_salt_cloud.py
+               tests/pytests/functional/cli/test_salt_run_.py
+               tests/pytests/functional/modules/test_ansiblegate.py
+               tests/pytests/functional/modules/test_http.py
+               tests/pytests/functional/netapi
+               tests/pytests/functional/states/test_pip_state.py
+               tests/pytests/functional/utils/test_etcd_util.py
+               tests/pytests/functional/utils/test_http.py
+               tests/pytests/integration/cli/test_salt_proxy.py
+               tests/pytests/integration/daemons/test_masterapi.py
+               tests/pytests/integration/modules/state/test_state.py
+               
tests/pytests/integration/modules/state/test_state_state_events.py
+               tests/pytests/integration/netapi
+               tests/pytests/integration/pillar/cache/test_pillar_cache.py
+               tests/pytests/integration/pillar/test_fileclient.py
+               tests/pytests/integration/pillar/test_pillar_include.py
+               tests/pytests/integration/proxy/test_simple.py
+               
tests/pytests/integration/runners/state/orchestrate/test_events.py
+               tests/pytests/integration/wheel/test_pillar_roots.py
+               tests/pytests/pkg/downgrade/test_salt_downgrade.py
+               tests/pytests/pkg/integration/test_pip_upgrade.py
+               tests/pytests/pkg/integration/test_salt_api.py
+               tests/pytests/pkg/integration/test_salt_call.py
+               tests/pytests/pkg/integration/test_salt_exec.py
+               tests/pytests/pkg/integration/test_salt_grains.py
+               tests/pytests/pkg/integration/test_salt_key.py
+               tests/pytests/pkg/integration/test_salt_minion.py
+               tests/pytests/pkg/integration/test_salt_output.py
+               tests/pytests/pkg/integration/test_salt_pillar.py
+               tests/pytests/pkg/integration/test_salt_state_file.py
+               tests/pytests/pkg/integration/test_salt_ufw.py
+               tests/pytests/pkg/integration/test_salt_user.py
+               tests/pytests/pkg/integration/test_systemd_config.py
+               tests/pytests/pkg/integration/test_version.py
+               tests/pytests/pkg/upgrade/test_salt_upgrade.py
+               tests/pytests/scenarios/cluster/test_cluster.py
+               tests/pytests/scenarios/dns/multimaster/test_dns.py
+               tests/pytests/scenarios/dns/test_dns.py
+               tests/pytests/unit/client/ssh/test_ssh.py
+               tests/pytests/unit/cloud/clouds/vmware
+               tests/pytests/unit/loader/test_loading_modules.py
+               tests/pytests/unit/runners/test_net.py
+               tests/pytests/unit/states/file/test_mod_beacon.py
+               tests/pytests/unit/test_client.py
+               tests/pytests/unit/utils/test_aws.py
+               tests/pytests/unit/utils/test_http.py
+               tests/unit/modules/test_boto3_elasticsearch.py
+               tests/unit/modules/test_boto3_route53.py
+               tests/unit/modules/test_network.py
+               tests/unit/modules/test_zcbuildout.py
+               tests/unit/states/test_zcbuildout.py
+
+               # tests require root access
+               tests/integration/pillar/test_git_pillar.py
+               tests/integration/states/test_lxd_container.py
+               tests/integration/states/test_lxd_image.py
+               tests/integration/states/test_lxd_profile.py
+               tests/integration/states/test_supervisord.py
+               tests/pytests/functional/cache/test_mysql.py
+               tests/pytests/functional/cli/test_salt.py
+               tests/pytests/functional/modules/test_mysql.py
+               tests/pytests/functional/modules/test_vault.py
+               tests/pytests/functional/states/file/test_accumulated.py
+               tests/pytests/scenarios/performance/test_performance.py
+               tests/pytests/unit/cloud/test_map.py
+               tests/pytests/unit/engines/test_slack_bolt_engine.py
+               tests/pytests/unit/modules/state/test_state.py
+               tests/pytests/unit/modules/state/test_top_file_merge.py
+               tests/pytests/unit/proxy/test_netmiko_px.py
+               tests/pytests/unit/proxy/test_ssh_sample.py
+               tests/pytests/unit/roster/test_sshknownhosts.py
+
+               # tests that require boto
+               tests/pytests/unit/engines/test_sqs_events.py
+
+               # first test always fails
+               tests/pytests/unit/utils/parsers/test_log_parsers.py
+       )
+
+       rm -r "${remove_test_files[@]}" || die
+
+       # axe the boto dep (bug #888235)
+       find "${S}/tests" -name 'test_boto_*.py' -delete || die
+
+       # removes contextvars, see bug: https://bugs.gentoo.org/799431
+       sed -i '/^contextvars/d' requirements/base.txt || die
+
+       # called_once should be assert_called_once_with
+       find "${S}/tests" -name '*.py' -print0 \
+               | xargs -0 -- sed -i -e 
's:[.]called_once:.assert_called_once:g' -- || die
+
+       distutils-r1_python_prepare_all
+}
+
+python_install_all() {
+       local -x USE_SETUPTOOLS=1
+       distutils-r1_python_install_all
+
+       local svc
+       for svc in minion master syndic api; do
+               newinitd "${FILESDIR}"/${svc}-initd-5 salt-${svc}
+               newconfd "${FILESDIR}"/${svc}-confd-1 salt-${svc}
+               systemd_dounit "${FILESDIR}"/salt-${svc}.service
+       done
+
+       insinto /etc/${PN}
+       doins -r conf/*
+}
+
+python_test() {
+       local -a EPYTEST_DESELECT=(
+               # Takes several hours to run
+               tests/integration/states/
+               tests/pytests/unit/modules/
+               tests/unit/modules/
+               tests/unit/states/
+
+               # Relies on removed functionality (OpenSSL.crypto.CRL, removed 
in PyOpenSSL 24.3.0)
+               
tests/integration/modules/test_tls.py::TLSModuleTest::test_revoked_cert_should_return_False_from_validate
+               
tests/integration/modules/test_tls.py::TLSModuleTest::test_validating_revoked_cert_with_no_crl_file_should_return_False
+               
tests/integration/modules/test_tls.py::TLSModuleTest::test_with_existing_ca_signing_csr_should_produce_valid_cert
+
+               # Broken (RuntimeError: The helper being called was not 
registered)
+               tests/pytests/functional/modules/cmd/test_script.py
+               tests/pytests/functional/modules/state/requisites/
+               tests/pytests/functional/modules/state/test_state.py
+               tests/pytests/functional/states/test_blockdev.py
+
+               # doesn't like the distutils warning
+               tests/pytests/integration/cli/test_batch.py::test_batch_retcode
+               
tests/pytests/integration/cli/test_batch.py::test_multiple_modules_in_batch
+
+               # hangs indefinitely
+               
tests/pytests/functional/cli/test_salt_deltaproxy.py::test_exit_status_correct_usage_large_number_of_minions
+               
tests/pytests/functional/transport/server/test_publish_server.py::test_publsh_server
+               tests/pytests/unit/auth/test_auth.py::test_cve_2021_3244
+               tests/pytests/unit/test_minion.py::test_master_type_disable
+
+               # needs root
+               tests/integration/modules/test_lxc.py::LXCModuleTest
+               tests/pytests/functional/modules/cmd/test_runas.py::test_runas
+               
tests/pytests/functional/states/file/test_directory.py::test_directory_max_depth
+               
tests/pytests/functional/states/file/test_directory.py::test_issue_12209_follow_symlinks
+               
tests/pytests/functional/states/file/test_managed.py::test_owner_after_setuid
+               
tests/pytests/unit/modules/test_cmdmod.py::test_runas_env_sudo_group
+               
tests/pytests/unit/modules/test_portage_config.py::test_enforce_nice_config
+               
tests/unit/modules/test_saltcheck.py::SaltcheckTestCase::test_run_test_muliassert
+               
tests/unit/modules/test_saltcheck.py::SaltcheckTestCase::test_run_test_muliassert_failure
+
+               # don't like sandbox
+               
tests/integration/modules/test_cp.py::CPModuleTest::test_get_file_str_https
+               
tests/integration/modules/test_cp.py::CPModuleTest::test_get_url_ftp
+               
tests/integration/modules/test_cp.py::CPModuleTest::test_get_url_https
+               
tests/integration/modules/test_cp.py::CPModuleTest::test_get_url_https_dest_empty
+               
tests/integration/modules/test_cp.py::CPModuleTest::test_get_url_https_no_dest
+               
tests/integration/states/test_git.py::LocalRepoGitTest::test_latest_force_reset_true_fast_forward
+               
tests/pytests/functional/fileserver/test_roots.py::test_symlink_list
+               
tests/pytests/functional/modules/file/test_replace.py::test_append_if_not_found_content
+               
tests/pytests/functional/modules/file/test_replace.py::test_append_if_not_found_empty_file
+               
tests/pytests/functional/modules/file/test_replace.py::test_append_if_not_found_no_append_on_match
+               
tests/pytests/functional/modules/file/test_replace.py::test_append_if_not_found_no_match_newline
+               
tests/pytests/functional/modules/file/test_replace.py::test_append_if_not_found_no_match_no_newline
+               
tests/pytests/functional/modules/test_defaults.py::test_defaults_get
+               
tests/pytests/functional/modules/test_system.py::test_get_system_date_time
+               
tests/pytests/functional/modules/test_system.py::test_get_system_date_time_utc
+               
tests/pytests/functional/pillar/test_top.py::test_pillar_top_compound_match
+               
tests/pytests/functional/states/file/test_append.py::test_file_append_check_cmd
+               
tests/pytests/functional/states/file/test_append.py::test_issue_1896_file_append_source
+               
tests/pytests/functional/states/file/test_blockreplace.py::test_issue_49043
+               
tests/pytests/functional/states/file/test_comment.py::test_issue_62121
+               
tests/pytests/functional/states/file/test_directory.py::test_directory_clean_require_in
+               
tests/pytests/functional/states/file/test_directory.py::test_directory_clean_require_in_with_id
+               
tests/pytests/functional/states/file/test_directory.py::test_directory_clean_require_with_name
+               
tests/pytests/functional/states/file/test_managed.py::test_file_managed_requisites
+               
tests/pytests/functional/states/file/test_managed.py::test_issue_8947_utf8_sls
+               
tests/pytests/functional/states/file/test_managed.py::test_managed_escaped_file_path
+               
tests/pytests/functional/states/file/test_managed.py::test_managed_file_issue_51208
+               
tests/pytests/functional/states/file/test_managed.py::test_managed_file_with_grains_data
+               
tests/pytests/functional/states/file/test_managed.py::test_managed_latin1_diff
+               
tests/pytests/functional/states/file/test_managed.py::test_managed_source_hash_indifferent_case
+               
tests/pytests/functional/states/file/test_managed.py::test_managed_unicode_jinja_with_tojson_filter
+               
tests/pytests/functional/states/file/test_recurse.py::test_issue_2726_mode_kwarg
+               
tests/pytests/functional/states/file/test_replace.py::test_file_replace_check_cmd
+               
tests/pytests/functional/states/file/test_replace.py::test_file_replace_prerequired_issues_55775
+               
tests/pytests/functional/states/test_pip_state.py::test_22359_pip_installed_unless_does_not_trigger_warnings
+               
tests/pytests/functional/states/test_pip_state.py::test_issue_2028_pip_installed_state
+               
tests/pytests/functional/states/test_pip_state.py::test_issue_54755
+               
tests/pytests/functional/states/test_pip_state.py::test_pip_installed_errors
+               
tests/pytests/functional/states/test_pip_state.py::test_pip_installed_removed
+               
tests/pytests/functional/states/test_pip_state.py::test_pip_installed_removed_venv
+               
tests/pytests/functional/states/test_pip_state.py::test_pip_installed_specific_env
+               
tests/pytests/functional/states/test_x509_v2.py::"test_private_key_managed_passphrase_changed_not_overwrite[existing_pk0]"
+               
tests/pytests/functional/utils/functools/test_namespaced_function.py::test_namespacing
+               
tests/pytests/functional/utils/test_pillar.py::test_gitpython_env
+               
tests/pytests/functional/utils/test_pillar.py::test_gitpython_fetch_request
+               
tests/pytests/functional/utils/test_pillar.py::test_gitpython_multiple_repos
+               tests/pytests/functional/utils/test_pillar.py::test_pygit2_env
+               
tests/pytests/functional/utils/test_pillar.py::test_pygit2_multiple_repos
+               
tests/pytests/functional/utils/test_winrepo.py::test_gitpython_winrepo_simple
+               
tests/pytests/functional/utils/test_winrepo.py::test_pygit2_winrepo_simple
+               
tests/pytests/integration/minion/test_return_retries.py::test_pillar_timeout
+               
tests/pytests/integration/minion/test_return_retries.py::test_publish_retry
+               
tests/pytests/integration/modules/saltutil/test_pillar.py::"test_pillar_refresh[False]"
+               
tests/pytests/integration/modules/saltutil/test_pillar.py::"test_pillar_refresh[True]"
+               
tests/pytests/integration/modules/test_state.py::test_logging_and_state_output_order
+               
tests/pytests/integration/modules/test_test.py::test_deprecation_warning_emits_deprecation_warnings
+               
tests/pytests/integration/renderers/test_jinja.py::test_issue_54765_call
+               
tests/pytests/integration/renderers/test_jinja.py::test_issue_54765_salt
+               
tests/pytests/integration/ssh/state/test_pillar_override_template.py::"test_it[args0-kwargs0]"
+               
tests/pytests/integration/ssh/state/test_pillar_override_template.py::"test_it[args1-kwargs1]"
+               
tests/pytests/integration/ssh/state/test_pillar_override_template.py::"test_it[args2-kwargs2]"
+               
tests/pytests/integration/ssh/state/test_retcode_highstate_verification_structure_fail.py::"test_it[args0-20]"
+               
tests/pytests/integration/ssh/state/test_retcode_highstate_verification_structure_fail.py::"test_it[args1-20]"
+               
tests/pytests/integration/ssh/state/test_retcode_highstate_verification_structure_fail.py::"test_it[args2-20]"
+               
tests/pytests/integration/ssh/state/test_retcode_highstate_verification_structure_fail.py::"test_it[args3-20]"
+               
tests/pytests/integration/ssh/state/test_retcode_highstate_verification_structure_fail.py::"test_it[args4-0]"
+               
tests/pytests/integration/ssh/state/test_retcode_highstate_verification_structure_fail.py::"test_it[args5-20]"
+               
tests/pytests/integration/ssh/test_jinja_filters.py::test_dateutils_strftime
+               
tests/pytests/integration/ssh/test_terraform.py::test_terraform_roster
+               
tests/pytests/unit/config/schemas/test_ssh.py::test_config_validate
+               tests/pytests/unit/grains/test_core.py::test_get_machine_id
+               
tests/pytests/unit/grains/test_package.py::test_grain_package_type
+               
tests/pytests/unit/loader/test_loader.py::test_named_loader_context_name_not_packed
+               tests/pytests/unit/modules/test_beacons.py::test_add
+               
tests/pytests/unit/modules/test_beacons.py::test_add_beacon_module
+               tests/pytests/unit/modules/test_beacons.py::test_delete
+               
tests/pytests/unit/modules/test_beacons.py::test_delete_beacon_module
+               tests/pytests/unit/modules/test_beacons.py::test_disable
+               tests/pytests/unit/modules/test_beacons.py::test_enable
+               
tests/pytests/unit/modules/test_beacons.py::test_enable_beacon_module
+               tests/pytests/unit/modules/test_beacons.py::test_save
+               
tests/pytests/unit/modules/test_gpg.py::test_create_key_with_passphrase_with_gpg_passphrase_in_pillar
+               
tests/pytests/unit/modules/test_gpg.py::test_create_key_without_passphrase
+               
tests/pytests/unit/modules/test_saltutil.py::test_clear_job_cache
+               tests/pytests/unit/modules/test_saltutil.py::test_list_extmods
+               
tests/pytests/unit/pillar/test_pillar.py::test_pillar_get_cache_disk
+               
tests/pytests/unit/state/test_state_compiler.py::test_verify_high_too_many_functions_declared_error_message
+               tests/pytests/unit/states/test_pkg.py::test_mod_beacon
+               tests/pytests/unit/states/test_service.py::test_mod_beacon
+               
tests/pytests/unit/test_ext_importers.py::test_tornado_import_override
+               
tests/pytests/unit/utils/test_rsax931.py::test_find_libcrypto_darwin_catalina
+               
tests/pytests/unit/utils/test_versions.py::test_warn_until_good_version_argument
+               
tests/unit/transport/test_ipc.py::IPCMessagePubSubCase::test_async_reading_streamclosederror
+               tests/unit/utils/test_thin.py::SSHThinTestCase::test_thin_dir
+               
tests/unit/utils/test_vt.py::VTTestCase::test_split_multibyte_characters_shiftjis
+               
tests/unit/utils/test_vt.py::VTTestCase::test_split_multibyte_characters_unicode
+               tests/unit/utils/test_vt.py::VTTestCase::test_vt_size
+
+               # tests that need network access
+               
tests/pytests/functional/states/file/test_managed.py::test_verify_ssl_https_source
+               
tests/pytests/unit/modules/test_aptpkg.py::test_sourceslist_architectures
+               
tests/pytests/unit/modules/test_aptpkg.py::test_sourceslist_multiple_comps
+               tests/pytests/unit/modules/test_yumpkg.py::test_get_yum_config
+               
tests/pytests/unit/modules/test_yumpkg.py::test_get_yum_config_value_none
+               
tests/pytests/unit/test_ext_importers.py::test_tornado_import_override
+               
tests/pytests/unit/utils/test_http.py::test_backends_decode_body_false
+               
tests/pytests/unit/utils/test_http.py::test_backends_decode_body_true
+               tests/pytests/unit/utils/test_http.py::test_query_proxy
+               tests/pytests/unit/utils/test_network.py::test_isportopen
+
+               # tests that need root access
+               
tests/integration/modules/test_cmdmod.py::CMDModuleTest::test_quotes_runas
+               
tests/unit/modules/test_saltcheck.py::SaltcheckTestCase::test_call_salt_command
+               
tests/unit/modules/test_saltcheck.py::SaltcheckTestCase::test_call_salt_command2
+               
tests/unit/modules/test_saltcheck.py::SaltcheckTestCase::test_run_test_1
+       )
+       [[ ${EPYTHON#*.} -ge 11 ]] && EPYTEST_DESELECT+=(
+               
tests/unit/test_master.py::TransportMethodsTest::test_aes_funcs_black
+               
tests/unit/test_master.py::TransportMethodsTest::test_clear_funcs_black
+       )
+       [[ ${EPYTHON#*.} -ge 12 ]] && EPYTEST_DESELECT+=(
+               
tests/integration/modules/test_mine.py::MineTest::test_get_allow_tgt
+               
tests/integration/modules/test_mine.py::MineTest::test_mine_delete
+               
tests/integration/modules/test_mine.py::MineTest::test_send_allow_tgt
+               
tests/integration/modules/test_mine.py::MineTest::test_send_allow_tgt_compound
+               
tests/integration/modules/test_saltcheck.py::SaltcheckModuleTest::test_saltcheck_checkall
+               
tests/integration/modules/test_saltcheck.py::SaltcheckModuleTest::test_saltcheck_checkall_saltenv
+               
tests/integration/modules/test_saltcheck.py::SaltcheckModuleTest::test_saltcheck_run
+               
tests/integration/modules/test_saltcheck.py::SaltcheckModuleTest::test_saltcheck_saltenv
+               
tests/integration/modules/test_saltcheck.py::SaltcheckModuleTest::test_saltcheck_state
+               
tests/integration/output/test_output.py::OutputReturnTest::test_output_highstate
+               
tests/integration/output/test_output.py::OutputReturnTest::test_output_json
+               
tests/integration/output/test_output.py::OutputReturnTest::test_output_nested
+               
tests/integration/output/test_output.py::OutputReturnTest::test_output_pprint
+               
tests/integration/output/test_output.py::OutputReturnTest::test_output_raw
+               
tests/integration/output/test_output.py::OutputReturnTest::test_output_txt
+               
tests/integration/output/test_output.py::OutputReturnTest::test_output_yaml
+               
tests/integration/output/test_output.py::OutputReturnTest::test_output_yaml_namespaced_dict_wrapper
+               
tests/integration/output/test_output.py::OutputReturnTest::test_static_simple
+               tests/integration/runners/test_manage.py::ManageTest::test_down
+               tests/integration/runners/test_manage.py::ManageTest::test_up
+               
tests/integration/shell/test_master_tops.py::MasterTopsTest::test_custom_tops_gets_utilized
+               
tests/integration/states/test_archive.py::ArchiveTest::test_local_archive_extracted_with_skip_files_list_verify_and_keep_source_is_false
+               
tests/pytests/functional/states/test_pip_state.py::test_issue_2087_missing_pip
+               
tests/pytests/unit/modules/test_nilrt_ip.py::"test_when_default_value_is_not_a_string_and_option_is_missing_the_default_value_should_be_returned[-99.9]"
+               
tests/pytests/unit/modules/test_nilrt_ip.py::"test_when_default_value_is_not_a_string_and_option_is_missing_the_default_value_should_be_returned[42]"
+               
tests/pytests/unit/modules/test_nilrt_ip.py::"test_when_default_value_is_not_a_string_and_option_is_missing_the_default_value_should_be_returned[default_value2]"
+               
tests/pytests/unit/modules/test_nilrt_ip.py::"test_when_default_value_is_not_a_string_and_option_is_missing_the_default_value_should_be_returned[default_value3]"
+               
tests/pytests/unit/modules/test_nilrt_ip.py::"test_when_default_value_is_not_a_string_and_option_is_missing_the_default_value_should_be_returned[default_value4]"
+               
tests/pytests/unit/modules/test_nilrt_ip.py::test_when_config_has_no_quotes_around_string_it_should_be_returned_as_is
+               
tests/pytests/unit/modules/test_nilrt_ip.py::test_when_config_has_quotes_around_string_they_should_be_removed
+               
tests/pytests/unit/utils/vault/test_auth.py::"test_approle_auth_get_token_login[secret_id-approle]"
+               
tests/unit/modules/test_zypperpkg.py::ZypperTestCase::test_repo_value_info
+               
tests/unit/utils/test_color.py::ColorUtilsTestCase::test_get_colors
+       )
+
+       # testsuite likes lots of files
+       ulimit -n 4096 || die
+
+       # ${T} is too long a path for the tests to work
+       local TMPDIR
+       TMPDIR="$(mktemp --directory --tmpdir=/tmp ${PN}-XXXX)" || die
+       (
+               test_exports=(
+                       TMPDIR
+                       SHELL="/bin/bash"
+                       USE_SETUPTOOLS=1
+                       NO_INTERNET=1
+                       PYTHONDONTWRITEBYTECODE=1
+               )
+               export "${test_exports[@]}"
+
+               cleanup() { rm -rf "${TMPDIR}" || die; }
+
+               trap cleanup EXIT
+
+               addwrite "${TMPDIR}"
+
+               epytest tests/integration/ \
+                               tests/pytests/functional/ \
+                               tests/pytests/pkg/ \
+                               tests/pytests/unit/renderers/ \
+                               tests/pytests/unit/serializers/ \
+                               tests/support/ \
+                               tests/unit/
+       )
+}


Reply via email to