app-admin/salt: Remove old

Signed-off-by: Michał Górny <mgorny@gentoo.org>
Part-of: https://github.com/gentoo/gentoo/pull/41697
Signed-off-by: Michał Górny <mgorny@gentoo.org>
This commit is contained in:
Michał Górny 2025-04-22 13:29:11 +02:00
parent b4577de500
commit 5ba4466c0b
No known key found for this signature in database
GPG Key ID: 639ADAE2329E240E
10 changed files with 0 additions and 1108 deletions

View File

@ -1,5 +1,3 @@
DIST salt-3005.5.tar.gz 17940104 BLAKE2B c7a820bc946c2cd8124fb6f559608ab1dc3cd85d6f0e7d0a2a87b7bc0dda361178e83b307c2fecd8a47d59032f85dc9f4caeef5698e98c0e349d1c6979f9f68a SHA512 1332c9751a225dbf569601eb1932fe3ebea93c8d8be7485b1b8150d5200ad2e82954c970d59ba0e888860062d059db78a50bffe69fc367bdb7b2388b62e19f32
DIST salt-3006.5.tar.gz 20536455 BLAKE2B cf475dc5e919f6ab180578db2aae5f3655623b39b134d67609da4f607be909340c6e55c940cfb66f129cc75d40b5cdda094e866db116d8a45aa5eef26d8fa1eb SHA512 8aaf5c5d36d8aa17b3fe867cee470f7b3c5dd1f6abaf5bdb49a3df76d3498d0dc1fa305a069bc95ad057489db229454b38b0ea9c1ade1e46b5d9b57aeef10c23
DIST salt-3006.7.tar.gz 20562663 BLAKE2B b4ff9039509b1de7151060cb0e68252868d493e114e327a3c48bfc5584f67521a2106b41b77377f6d43ab5795399b6fe5860ce8e091459687c4a5b2378752729 SHA512 9d1759a7c0dfc9ad4fdc94460f0f3799483737207bfdc8ddd1424e5c6083ea74ef520f13c323d5cbd7f65c1d9bb13bbbeb5f2cafe6dcacbc2689e733794aef2d
DIST salt-3006.9.tar.gz 19691113 BLAKE2B f08dfef58273cef809e4aa954d348b282967affa85e4b2814bb539c41bfcecde29e5a903ed14786b353262e31212c3d581550ac031b5c4866453bec398d5ae88 SHA512 96385f505363645d958c3a05f3d50b240f6c750b28e4a11b419c08ec152fc9a66930e555beeba282ef463986f4b570f6dda1ad944aefd14d4cce586a9f1741e1
DIST salt-3007.0.tar.gz 20304228 BLAKE2B 3db95ce779cfd08d61536dcfb4ff6ac31788ad1d6d4665b640dcc430f5a33847f231f94fd574c5d8df7b14e2854511c80610a37cd19be5429c4643be8bd9e0eb SHA512 0e49d76dafdb981ee380ea89ceba2cddeae8cd95df1d188a6f8ba64a175c606aaf2f8101bacb040792255afdb46ae668cbc9464d0dbb055986e85cee4d5c130b

View File

@ -1,27 +0,0 @@
diff --git a/tests/unit/utils/test_verify.py b/tests/unit/utils/test_verify.py
index 5662cf621b..16aa6d08da 100644
--- a/tests/unit/utils/test_verify.py
+++ b/tests/unit/utils/test_verify.py
@@ -329,6 +329,7 @@ class TestVerifyLog(TestCase):
self.assertTrue(os.path.exists(path))
+@skipIf(True, "skipping since temp dir is a symlink")
class TestCleanPath(TestCase):
"""
salt.utils.clean_path works as expected
@@ -394,12 +395,14 @@ class TestCleanPathLink(TestCase):
def tearDown(self):
shutil.rmtree(self.tmpdir)
+ @skipIf(True, "skipping since temp dir is a symlink")
def test_clean_path_symlinked_src(self):
test_path = os.path.join(self.from_path, "test")
expect_path = os.path.join(self.to_path, "test")
ret = clean_path(self.from_path, test_path)
assert ret == expect_path, "{} is not {}".format(ret, expect_path)
+ @skipIf(True, "skipping since temp dir is a symlink")
def test_clean_path_symlinked_tgt(self):
test_path = os.path.join(self.to_path, "test")
expect_path = os.path.join(self.to_path, "test")

View File

@ -1,25 +0,0 @@
diff --git a/tests/integration/files/file/base/_modules/runtests_helpers.py b/tests/integration/files/file/base/_modules/runtests_helpers.py
index 3ee0e2da5f..abf9b71431 100644
--- a/tests/integration/files/file/base/_modules/runtests_helpers.py
+++ b/tests/integration/files/file/base/_modules/runtests_helpers.py
@@ -27,7 +27,7 @@ except ImportError:
else "/tmp"
)
# This tempdir path is defined on tests.integration.__init__
- TMP = os.path.join(SYS_TMP_DIR, "salt-tests-tmpdir")
+ TMP = os.path.join(SYS_TMP_DIR, "salt-t")
class RUNTIME_VARS:
TMP = TMP
diff --git a/tests/unit/ext/test_ipaddress.py b/tests/unit/ext/test_ipaddress.py
index 4fd87d1c3f..43306ba8f4 100644
--- a/tests/unit/ext/test_ipaddress.py
+++ b/tests/unit/ext/test_ipaddress.py
@@ -137,6 +137,7 @@ class CommonTestMixin:
class CommonTestMixin_v4(CommonTestMixin):
+ @pytest.mark.skipif(sys.hexversion >= 0x03090000, reason="leading zeros disallowed in 3.9+")
def test_leading_zeros(self):
self.assertInstancesEqual("000.000.000.000", "0.0.0.0")
self.assertInstancesEqual("192.168.000.001", "192.168.0.1")

View File

@ -1,94 +0,0 @@
diff --git a/tests/conftest.py b/tests/conftest.py
index 24ecf57e04..babc7ced90 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -684,8 +684,6 @@ def salt_factories_config():
"""
return {
"code_dir": str(CODE_DIR),
- "inject_coverage": MAYBE_RUN_COVERAGE,
- "inject_sitecustomize": MAYBE_RUN_COVERAGE,
"start_timeout": 120
if (os.environ.get("JENKINS_URL") or os.environ.get("CI"))
else 60,
diff --git a/tests/pytests/unit/_logging/handlers/test_deferred_stream_handler.py b/tests/pytests/unit/_logging/handlers/test_deferred_stream_handler.py
index 230da8abc8..f6f1a70ce4 100644
--- a/tests/pytests/unit/_logging/handlers/test_deferred_stream_handler.py
+++ b/tests/pytests/unit/_logging/handlers/test_deferred_stream_handler.py
@@ -62,6 +62,7 @@ def _deferred_write_on_flush_proc_target():
assert stds.stderr == "Foo\nBar\n"
+@pytest.mark.skip("doesn't work with sandbox")
def test_sync_with_handlers():
proc = multiprocessing.Process(target=_sync_with_handlers_proc_target)
proc.start()
@@ -69,6 +70,7 @@ def test_sync_with_handlers():
assert proc.exitcode == 0
+@pytest.mark.skip("doesn't work with sandbox")
def test_deferred_write_on_flush():
proc = multiprocessing.Process(target=_deferred_write_on_flush_proc_target)
proc.start()
diff --git a/tests/pytests/unit/modules/test_portage_config.py b/tests/pytests/unit/modules/test_portage_config.py
index 5cc6b90596..f344526909 100644
--- a/tests/pytests/unit/modules/test_portage_config.py
+++ b/tests/pytests/unit/modules/test_portage_config.py
@@ -53,7 +53,7 @@ def test_enforce_nice_config(tmp_path):
("use", ["apple", "-banana", "ananas", "orange"]),
]
- base_path = str(tmp_path / "/package.{0}")
+ base_path = str(f"{tmp_path}/package.{{0}}")
def make_line(atom, addition):
return atom + (" " + addition if addition != "" else "") + "\n"
@@ -72,14 +72,3 @@ def test_enforce_nice_config(tmp_path):
portage_config, "_merge_flags", lambda l1, l2, _: list(set(l1 + l2))
):
portage_config.enforce_nice_config()
-
- for typ, additions in supported:
- for atom, file_name in atoms:
- with salt.utils.files.fopen(
- base_path.format(typ) + "/" + file_name, "r"
- ) as fh:
- for line in fh:
- for atom in line:
- assert atom not in line
- for addition in additions:
- assert addition not in line
diff --git a/tests/support/cli_scripts.py b/tests/support/cli_scripts.py
index 270af75d4b..50c08f4ed2 100644
--- a/tests/support/cli_scripts.py
+++ b/tests/support/cli_scripts.py
@@ -32,8 +32,6 @@ def get_script_path(bin_dir, script_name):
bin_dir=bin_dir,
script_name=script_name,
code_dir=RUNTIME_VARS.CODE_DIR,
- inject_coverage="COVERAGE_PROCESS_START" in os.environ,
- inject_sitecustomize="COVERAGE_PROCESS_START" in os.environ,
)
log.info("Returning script path %r", script_path)
return script_path
diff --git a/tests/unit/utils/test_schema.py b/tests/unit/utils/test_schema.py
index 8c648f5288..ce5715a562 100644
--- a/tests/unit/utils/test_schema.py
+++ b/tests/unit/utils/test_schema.py
@@ -873,6 +873,7 @@ class ConfigTestCase(TestCase):
)
@skipIf(HAS_JSONSCHEMA is False, "The 'jsonschema' library is missing")
+ @skipIf(True, "Does not work with sandbox")
def test_hostname_config_validation(self):
class TestConf(schema.Schema):
item = schema.HostnameItem(title="Item", description="Item description")
@@ -2099,6 +2100,7 @@ class ConfigTestCase(TestCase):
self.assertEqual(item.serialize(), {"not": item.item.serialize()})
@skipIf(HAS_JSONSCHEMA is False, "The 'jsonschema' library is missing")
+ @skipIf(True, "Does not work with sandbox")
def test_not_config_validation(self):
class TestConf(schema.Schema):
item = schema.ArrayItem(

View File

@ -1,29 +0,0 @@
diff --git a/salt/utils/entrypoints.py b/salt/utils/entrypoints.py
index 3effa0b494..9452878ade 100644
--- a/salt/utils/entrypoints.py
+++ b/salt/utils/entrypoints.py
@@ -38,13 +38,20 @@ def iter_entry_points(group, name=None):
entry_points_listing = []
entry_points = importlib_metadata.entry_points()
- for entry_point_group, entry_points_list in entry_points.items():
- if entry_point_group != group:
- continue
- for entry_point in entry_points_list:
+ try:
+ for entry_point in entry_points.select(group=group):
if name is not None and entry_point.name != name:
continue
entry_points_listing.append(entry_point)
+ except AttributeError:
+ # importlib-metadata<5.0.0
+ for entry_point_group, entry_points_list in entry_points.items():
+ if entry_point_group != group:
+ continue
+ for entry_point in entry_points_list:
+ if name is not None and entry_point.name != name:
+ continue
+ entry_points_listing.append(entry_point)
return entry_points_listing

View File

@ -1,123 +0,0 @@
diff --git a/salt/modules/file.py b/salt/modules/file.py
index f39d618203..93eeaf312e 100644
--- a/salt/modules/file.py
+++ b/salt/modules/file.py
@@ -16,7 +16,6 @@ import hashlib
import itertools
import logging
import mmap
-import operator
import os
import re
import shutil
@@ -28,7 +27,6 @@ import time
import urllib.parse
from collections import namedtuple
from collections.abc import Iterable, Mapping
-from functools import reduce
import salt.utils.args
import salt.utils.atomicfile
@@ -1622,38 +1620,38 @@ def comment_line(path, regex, char="#", cmnt=True, backup=".bak"):
def _get_flags(flags):
"""
- Return an integer appropriate for use as a flag for the re module from a
- list of human-readable strings
+ Return the names of the Regex flags that correspond to flags
.. code-block:: python
- >>> _get_flags(['MULTILINE', 'IGNORECASE'])
- 10
+ >>> _get_flags(['IGNORECASE', 'MULTILINE'])
+ re.IGNORECASE|re.MULTILINE
>>> _get_flags('MULTILINE')
- 8
- >>> _get_flags(2)
- 2
+ re.MULTILINE
+ >>> _get_flags(8)
+ re.MULTILINE
+ >>> _get_flags(re.IGNORECASE)
+ re.IGNORECASE
"""
- if isinstance(flags, str):
+ if isinstance(flags, re.RegexFlag):
+ return flags
+ elif isinstance(flags, int):
+ return re.RegexFlag(flags)
+ elif isinstance(flags, str):
flags = [flags]
if isinstance(flags, Iterable) and not isinstance(flags, Mapping):
- _flags_acc = [0] # An initial 0 avoids resucing on empty list, an error
+ _flags = re.RegexFlag(0)
for flag in flags:
- _flag = getattr(re, str(flag).upper())
-
- if not isinstance(_flag, int):
- raise SaltInvocationError("Invalid re flag given: {}".format(flag))
-
- _flags_acc.append(_flag)
-
- return reduce(operator.__or__, _flags_acc)
- elif isinstance(flags, int):
- return flags
+ _flag = getattr(re.RegexFlag, str(flag).upper(), None)
+ if not _flag:
+ raise CommandExecutionError(f"Invalid re flag given: {flag}")
+ _flags |= _flag
+ return _flags
else:
- raise SaltInvocationError(
- 'Invalid re flags: "{}", must be given either as a single flag '
- "string, a list of strings, or as an integer".format(flags)
+ raise CommandExecutionError(
+ f'Invalid re flags: "{flags}", must be given either as a single flag '
+ "string, a list of strings, as an integer, or as an re flag"
)
@@ -2513,8 +2511,8 @@ def replace(
"Only one of append and prepend_if_not_found is permitted"
)
- flags_num = _get_flags(flags)
- cpattern = re.compile(salt.utils.stringutils.to_bytes(pattern), flags_num)
+ re_flags = _get_flags(flags)
+ cpattern = re.compile(salt.utils.stringutils.to_bytes(pattern), re_flags)
filesize = os.path.getsize(path)
if bufsize == "file":
bufsize = filesize
@@ -2582,7 +2580,7 @@ def replace(
"^{}($|(?=\r\n))".format(re.escape(content))
),
r_data,
- flags=flags_num,
+ flags=re_flags,
):
# Content was found, so set found.
found = True
@@ -3132,7 +3130,11 @@ def search(path, pattern, flags=8, bufsize=1, ignore_if_missing=False, multiline
salt '*' file.search /etc/crontab 'mymaintenance.sh'
"""
if multiline:
- flags = _add_flags(flags, "MULTILINE")
+ re_flags = _add_flags(flags, "MULTILINE")
+ else:
+ re_flags = _get_flags(flags)
+
+ if re.RegexFlag.MULTILINE in re_flags:
bufsize = "file"
# This function wraps file.replace on purpose in order to enforce
@@ -3142,7 +3144,7 @@ def search(path, pattern, flags=8, bufsize=1, ignore_if_missing=False, multiline
path,
pattern,
"",
- flags=flags,
+ flags=re_flags,
bufsize=bufsize,
dry_run=True,
search_only=True,

View File

@ -1,40 +0,0 @@
diff --git a/tests/unit/utils/test_schema.py b/tests/unit/utils/test_schema.py
index 8c648f5288..5886813e28 100644
--- a/tests/unit/utils/test_schema.py
+++ b/tests/unit/utils/test_schema.py
@@ -528,7 +528,7 @@ class ConfigTestCase(TestCase):
jsonschema.validate(
{"personal_access_token": "foo"}, Requirements.serialize()
)
- if JSONSCHEMA_VERSION >= _LooseVersion("3.0.0"):
+ if JSONSCHEMA_VERSION >= _LooseVersion("3.0.0") and JSONSCHEMA_VERSION < _LooseVersion("4.17.0"):
self.assertIn(
"'ssh_key_file' is a required property", excinfo.exception.message
)
@@ -1851,7 +1851,7 @@ class ConfigTestCase(TestCase):
jsonschema.validate(
{"item": {"sides": "4", "color": "blue"}}, TestConf.serialize()
)
- if JSONSCHEMA_VERSION >= _LooseVersion("3.0.0"):
+ if JSONSCHEMA_VERSION >= _LooseVersion("3.0.0") and JSONSCHEMA_VERSION < _LooseVersion("4.17.0"):
self.assertIn("'4'", excinfo.exception.message)
self.assertIn("is not of type", excinfo.exception.message)
self.assertIn("'boolean'", excinfo.exception.message)
@@ -1974,7 +1974,7 @@ class ConfigTestCase(TestCase):
with self.assertRaises(jsonschema.exceptions.ValidationError) as excinfo:
jsonschema.validate({"item": ["maybe"]}, TestConf.serialize())
- if JSONSCHEMA_VERSION >= _LooseVersion("3.0.0"):
+ if JSONSCHEMA_VERSION >= _LooseVersion("3.0.0") and JSONSCHEMA_VERSION < _LooseVersion("4.17.0"):
self.assertIn("'maybe'", excinfo.exception.message)
self.assertIn("is not one of", excinfo.exception.message)
self.assertIn("'yes'", excinfo.exception.message)
@@ -2036,7 +2036,7 @@ class ConfigTestCase(TestCase):
with self.assertRaises(jsonschema.exceptions.ValidationError) as excinfo:
jsonschema.validate({"item": ["maybe"]}, TestConf.serialize())
- if JSONSCHEMA_VERSION >= _LooseVersion("3.0.0"):
+ if JSONSCHEMA_VERSION >= _LooseVersion("3.0.0") and JSONSCHEMA_VERSION < _LooseVersion("4.17.0"):
self.assertIn("'maybe'", excinfo.exception.message)
self.assertIn("is not one of", excinfo.exception.message)
self.assertIn("'yes'", excinfo.exception.message)

View File

@ -1,114 +0,0 @@
diff --git a/tests/pytests/unit/modules/dockermod/test_module.py b/tests/pytests/unit/modules/dockermod/test_module.py
index 8fb7806497..584d416412 100644
--- a/tests/pytests/unit/modules/dockermod/test_module.py
+++ b/tests/pytests/unit/modules/dockermod/test_module.py
@@ -354,10 +354,6 @@ def test_update_mine():
mine_mock.assert_called_once()
-@pytest.mark.skipif(
- docker_mod.docker.version_info < (1, 5, 0),
- reason="docker module must be installed to run this test or is too old. >=1.5.0",
-)
def test_list_networks():
"""
test list networks.
@@ -378,10 +374,6 @@ def test_list_networks():
client.networks.assert_called_once_with(names=["foo"], ids=["01234"])
-@pytest.mark.skipif(
- docker_mod.docker.version_info < (1, 5, 0),
- reason="docker module must be installed to run this test or is too old. >=1.5.0",
-)
def test_create_network():
"""
test create network.
@@ -422,10 +414,6 @@ def test_create_network():
)
-@pytest.mark.skipif(
- docker_mod.docker.version_info < (1, 5, 0),
- reason="docker module must be installed to run this test or is too old. >=1.5.0",
-)
def test_remove_network():
"""
test remove network.
@@ -444,10 +432,6 @@ def test_remove_network():
client.remove_network.assert_called_once_with("foo")
-@pytest.mark.skipif(
- docker_mod.docker.version_info < (1, 5, 0),
- reason="docker module must be installed to run this test or is too old. >=1.5.0",
-)
def test_inspect_network():
"""
test inspect network.
@@ -466,10 +450,6 @@ def test_inspect_network():
client.inspect_network.assert_called_once_with("foo")
-@pytest.mark.skipif(
- docker_mod.docker.version_info < (1, 5, 0),
- reason="docker module must be installed to run this test or is too old. >=1.5.0",
-)
def test_connect_container_to_network():
"""
test connect_container_to_network
@@ -491,10 +471,6 @@ def test_connect_container_to_network():
client.connect_container_to_network.assert_called_once_with("container", "foo")
-@pytest.mark.skipif(
- docker_mod.docker.version_info < (1, 5, 0),
- reason="docker module must be installed to run this test or is too old. >=1.5.0",
-)
def test_disconnect_container_from_network():
"""
test disconnect_container_from_network
@@ -513,10 +489,6 @@ def test_disconnect_container_from_network():
client.disconnect_container_from_network.assert_called_once_with("container", "foo")
-@pytest.mark.skipif(
- docker_mod.docker.version_info < (1, 5, 0),
- reason="docker module must be installed to run this test or is too old. >=1.5.0",
-)
def test_list_volumes():
"""
test list volumes.
@@ -539,10 +511,6 @@ def test_list_volumes():
)
-@pytest.mark.skipif(
- docker_mod.docker.version_info < (1, 5, 0),
- reason="docker module must be installed to run this test or is too old. >=1.5.0",
-)
def test_create_volume():
"""
test create volume.
@@ -569,10 +537,6 @@ def test_create_volume():
)
-@pytest.mark.skipif(
- docker_mod.docker.version_info < (1, 5, 0),
- reason="docker module must be installed to run this test or is too old. >=1.5.0",
-)
def test_remove_volume():
"""
test remove volume.
@@ -591,10 +555,6 @@ def test_remove_volume():
client.remove_volume.assert_called_once_with("foo")
-@pytest.mark.skipif(
- docker_mod.docker.version_info < (1, 5, 0),
- reason="docker module must be installed to run this test or is too old. >=1.5.0",
-)
def test_inspect_volume():
"""
test inspect volume.

View File

@ -1,312 +0,0 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_10 )
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 arm64 ~riscv x86"
fi
LICENSE="Apache-2.0"
SLOT="0"
IUSE="
cheetah cherrypy ldap libcloud libvirt genshi gnupg keyring mako
mongodb neutron nova openssl portage profile redis selinux test raet
+zeromq vim-syntax
"
RDEPEND="
sys-apps/pciutils
>=dev-python/distro-1.5[${PYTHON_USEDEP}]
>=dev-python/jinja2-3.1.2[${PYTHON_USEDEP}]
dev-python/jmespath[${PYTHON_USEDEP}]
dev-python/libnacl[${PYTHON_USEDEP}]
>=dev-python/msgpack-1.0.0[${PYTHON_USEDEP}]
>=dev-python/psutil-5.0.0[${PYTHON_USEDEP}]
>=dev-python/pycryptodome-3.9.8[${PYTHON_USEDEP}]
>=dev-python/pyyaml-6.0.1[${PYTHON_USEDEP}]
>=dev-python/markupsafe-2.1.2[${PYTHON_USEDEP}]
>=dev-python/requests-2.31.0[${PYTHON_USEDEP}]
dev-python/setuptools[${PYTHON_USEDEP}]
dev-python/tomli[${PYTHON_USEDEP}]
dev-python/watchdog[${PYTHON_USEDEP}]
libcloud? (
dev-python/aiohttp[${PYTHON_USEDEP}]
dev-python/aiosignal[${PYTHON_USEDEP}]
>=dev-python/apache-libcloud-2.5.0[${PYTHON_USEDEP}]
dev-python/async-timeout[${PYTHON_USEDEP}]
)
mako? ( dev-python/mako[${PYTHON_USEDEP}] )
ldap? ( dev-python/python-ldap[${PYTHON_USEDEP}] )
libvirt? (
dev-python/libvirt-python[${PYTHON_USEDEP}]
)
openssl? (
dev-libs/openssl:0=[-bindist(-)]
>=dev-python/pyopenssl-23.2.0[${PYTHON_USEDEP}]
)
raet? (
>=dev-python/libnacl-1.0.0[${PYTHON_USEDEP}]
>=dev-python/ioflo-1.1.7[${PYTHON_USEDEP}]
>=dev-python/raet-0.6.0[${PYTHON_USEDEP}]
)
cherrypy? ( >=dev-python/cherrypy-3.2.2[${PYTHON_USEDEP}] )
cheetah? ( >=dev-python/cheetah3-3.2.2[${PYTHON_USEDEP}] )
genshi? ( dev-python/genshi[${PYTHON_USEDEP}] )
mongodb? ( dev-python/pymongo[${PYTHON_USEDEP}] )
portage? ( sys-apps/portage[${PYTHON_USEDEP}] )
keyring? ( dev-python/keyring[${PYTHON_USEDEP}] )
redis? ( dev-python/redis[${PYTHON_USEDEP}] )
selinux? ( sec-policy/selinux-salt )
nova? (
>=dev-python/python-novaclient-2.17.0[${PYTHON_USEDEP}]
)
neutron? (
>=dev-python/python-neutronclient-2.3.6[${PYTHON_USEDEP}]
)
gnupg? ( dev-python/python-gnupg[${PYTHON_USEDEP}] )
profile? ( dev-python/yappi[${PYTHON_USEDEP}] )
vim-syntax? ( app-vim/salt-vim )
zeromq? ( >=dev-python/pyzmq-19.0.0[${PYTHON_USEDEP}] )
"
BDEPEND="
test? (
${RDEPEND}
dev-python/apache-libcloud[${PYTHON_USEDEP}]
>=dev-python/certifi-2023.07.22[${PYTHON_USEDEP}]
dev-python/cherrypy[${PYTHON_USEDEP}]
>=dev-python/jsonschema-3.0[${PYTHON_USEDEP}]
dev-python/mako[${PYTHON_USEDEP}]
>=dev-python/mock-2.0.0[${PYTHON_USEDEP}]
>=dev-python/moto-2.0.0[${PYTHON_USEDEP}]
dev-python/passlib[${PYTHON_USEDEP}]
dev-python/pip[${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.0_rc17[${PYTHON_USEDEP}]
dev-python/pytest-tempdir[${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/flaky[${PYTHON_USEDEP}]
net-dns/bind-tools
>=dev-python/virtualenv-20.3.0[${PYTHON_USEDEP}]
dev-util/yamllint[${PYTHON_USEDEP}]
!x86? ( >=dev-python/boto3-1.17.67[${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-3002-tests.patch"
"${FILESDIR}/salt-3003.1-tests.patch"
"${FILESDIR}/salt-3005-tests.patch"
"${FILESDIR}/salt-3005.1-no-entry-points.patch"
"${FILESDIR}/salt-3005.1-importlib-metadata-5-r1.patch"
"${FILESDIR}/salt-3005.1-tests.patch"
"${FILESDIR}/salt-3005.1-modules-file-python-3.11-host.patch"
"${FILESDIR}/salt-3006.2-tests.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/pytests/functional/fileserver/test_roots.py
tests/pytests/functional/modules/file/test_readlink.py
tests/pytests/functional/modules/file/test_replace.py
tests/pytests/functional/modules/file/test_symlink.py
tests/pytests/functional/modules/state/requisites/test_mixed.py
tests/pytests/functional/modules/state/test_jinja_renderer.py
tests/pytests/functional/modules/state/test_state.py
tests/pytests/functional/pillar/test_top.py
tests/pytests/functional/runners/test_winrepo.py
tests/pytests/functional/transport/server/test_req_channel.py
tests/pytests/functional/utils/functools/test_namespaced_function.py
tests/pytests/functional/utils/test_async_event_publisher.py
tests/pytests/integration/modules/state/test_state.py
tests/pytests/integration/pillar/cache/test_pillar_cache.py
tests/pytests/integration/pillar/test_pillar_include.py
tests/pytests/integration/proxy/test_deltaproxy.py
tests/pytests/integration/returners/test_noop_return.py
tests/pytests/integration/runners/test_manage.py
tests/pytests/integration/utils/test_templates.py
tests/pytests/unit/loader/test_lazy.py
tests/pytests/unit/modules/state/test_top_file_merge.py
tests/pytests/unit/roster/test_dir.py
tests/pytests/unit/state/test_multi_env_highstate.py
tests/pytests/unit/state/test_state_highstate.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_versions.py
tests/support/gitfs.py
tests/unit/modules/test_boto_{vpc,secgroup,elb}.py
tests/unit/runners/test_git_pillar.py
tests/unit/states/test_boto_vpc.py
tests/unit/{test_{zypp_plugins,module_names},utils/test_extend}.py
# tests that require network access
tests/integration/cloud
tests/kitchen/test_kitchen.py
tests/kitchen/tests/wordpress/tests
tests/pytests/functional/cli/test_salt_cloud.py
tests/pytests/functional/modules/state/requisites/test_listen.py
tests/pytests/functional/modules/state/requisites/test_onchanges.py
tests/pytests/functional/modules/state/requisites/test_onfail.py
tests/pytests/functional/modules/state/requisites/test_prereq.py
tests/pytests/functional/modules/state/requisites/test_require.py
tests/pytests/functional/modules/state/requisites/test_unless.py
tests/pytests/functional/modules/state/requisites/test_use.py
tests/pytests/functional/modules/state/requisites/test_watch.py
tests/pytests/functional/modules/test_pip.py
tests/pytests/functional/pillar/test_gpg.py
tests/pytests/functional/states/file/test_comment.py
tests/pytests/functional/states/file/test_rename.py
tests/pytests/integration/cli/test_batch.py
tests/pytests/integration/cli/test_salt_deltaproxy.py
tests/pytests/integration/cli/test_salt_proxy.py
tests/pytests/integration/master/test_clear_funcs.py
tests/pytests/integration/modules/test_state.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/unit/client/ssh/test_ssh.py
tests/pytests/unit/cloud/test_map.py
tests/pytests/unit/fileserver/test_roots.py
tests/pytests/unit/modules/state/test_state.py
tests/pytests/unit/proxy/test_netmiko_px.py
tests/pytests/unit/test_client.py
tests/pytests/unit/test_ext_importers.py
tests/pytests/unit/test_master.py
tests/pytests/{integration,functional}/netapi tests/integration/netapi
tests/unit/cloud/clouds/test_joyent.py
tests/unit/config/schemas/test_ssh.py
tests/unit/modules/test_boto3_elasticsearch.py
tests/unit/modules/test_boto3_route53.py
tests/unit/modules/test_network.py
tests/unit/netapi/rest_tornado/test_saltnado.py
tests/unit/{states,modules}/test_zcbuildout.py
# tests require root access
tests/integration/pillar/test_git_pillar.py
tests/integration/states/test_supervisord.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 svc
USE_SETUPTOOLS=1 distutils-r1_python_install_all
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=(
# hangs indefinitely
tests/pytests/unit/test_minion.py::test_master_type_disable
# don't like sandbox
tests/pytests/functional/modules/test_saltutil.py::test__get_top_file_envs
tests/pytests/functional/modules/state/requisites/test_onlyif.py::test_onlyif_req_retcode
tests/pytests/integration/modules/test_state.py::test_logging_and_state_output_order
tests/pytests/integration/states/test_ini_manage.py::test_options_present
tests/pytests/functional/cli/test_salt.py::test_versions_report
tests/pytests/unit/modules/test_aptpkg.py::test_call_apt_dpkg_lock
tests/pytests/unit/test_master.py::test_fileserver_duration
tests/pytests/unit/utils/test_vt.py::test_log_sanitize
tests/unit/utils/test_schema.py::ConfigTestCase::test_anyof_config_validation
tests/unit/utils/test_schema.py::ConfigTestCase::test_array_config_validation
tests/unit/utils/test_schema.py::ConfigTestCase::test_dict_config_validation
tests/unit/utils/test_schema.py::ConfigTestCase::test_hostname_config_validation
tests/unit/utils/test_schema.py::ConfigTestCase::test_not_config_validation
tests/unit/utils/test_schema.py::ConfigTestCase::test_oneof_config_validation
tests/unit/utils/test_schema.py::ConfigTestCase::test_optional_requirements_config_validation
tests/unit/utils/test_vt.py::VTTestCase::test_split_multibyte_characters_shiftjis
tests/unit/utils/test_vt.py::VTTestCase::test_split_multibyte_characters_unicode
# need root
tests/pytests/unit/modules/test_cmdmod.py::test_runas_env_sudo_group
)
# https://bugs.gentoo.org/924377
has_version 'sys-apps/systemd' || EPYTEST_DESELECT+=(
tests/pytests/unit/modules/test_aptpkg.py::test_autoremove
tests/pytests/unit/modules/test_aptpkg.py::test_upgrade
tests/pytests/unit/modules/test_aptpkg.py::test_upgrade_downloadonly
tests/pytests/unit/modules/test_aptpkg.py::test_upgrade_allow_downgrades
tests/pytests/unit/modules/test_aptpkg.py::test_call_apt_default
tests/pytests/unit/modules/test_aptpkg.py::test_call_apt_with_kwargs
tests/pytests/unit/modules/test_linux_sysctl.py::test_persist_no_conf_failure
tests/pytests/unit/modules/test_yumpkg.py::test_latest_version_with_options
tests/pytests/unit/modules/test_yumpkg.py::test_list_repo_pkgs_with_options
tests/pytests/unit/modules/test_yumpkg.py::test_list_upgrades_dnf
tests/pytests/unit/modules/test_yumpkg.py::test_list_upgrades_yum
tests/pytests/unit/modules/test_yumpkg.py::test_refresh_db_with_options
tests/pytests/unit/modules/test_yumpkg.py::test_call_yum_default
tests/pytests/unit/modules/test_yumpkg.py::test_call_yum_with_kwargs
tests/unit/modules/test_kernelpkg_linux_yum.py::YumKernelPkgTestCase::test_remove_error
tests/unit/modules/test_kernelpkg_linux_yum.py::YumKernelPkgTestCase::test_remove_success
tests/unit/modules/test_zypperpkg.py::ZypperTestCase::test_remove_purge
)
# 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
(
export TMPDIR
cleanup() { rm -rf "${TMPDIR}" || die; }
trap cleanup EXIT
addwrite "${TMPDIR}"
USE_SETUPTOOLS=1 NO_INTERNET=1 SHELL="/bin/bash" \
epytest
)
}

View File

@ -1,342 +0,0 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_10 )
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 ~riscv ~x86"
fi
LICENSE="Apache-2.0"
SLOT="0"
IUSE="
cheetah cherrypy ldap libcloud libvirt genshi gnupg keyring mako
mongodb neutron nova openssl portage profile redis selinux test raet
+zeromq vim-syntax
"
RDEPEND="
sys-apps/pciutils
>=dev-python/cryptography-41.0.3[${PYTHON_USEDEP}]
>=dev-python/distro-1.5[${PYTHON_USEDEP}]
>=dev-python/jinja2-3.1.2[${PYTHON_USEDEP}]
dev-python/jmespath[${PYTHON_USEDEP}]
dev-python/libnacl[${PYTHON_USEDEP}]
dev-python/looseversion[${PYTHON_USEDEP}]
>=dev-python/msgpack-1.0.0[${PYTHON_USEDEP}]
>=dev-python/packaging-21.3[${PYTHON_USEDEP}]
>=dev-python/psutil-5.0.0[${PYTHON_USEDEP}]
>=dev-python/pycryptodome-3.9.8[${PYTHON_USEDEP}]
>=dev-python/pyyaml-6.0.1[${PYTHON_USEDEP}]
>=dev-python/markupsafe-2.1.2[${PYTHON_USEDEP}]
>=dev-python/requests-2.31.0[${PYTHON_USEDEP}]
dev-python/setuptools[${PYTHON_USEDEP}]
dev-python/tomli[${PYTHON_USEDEP}]
dev-python/watchdog[${PYTHON_USEDEP}]
libcloud? (
dev-python/aiohttp[${PYTHON_USEDEP}]
dev-python/aiosignal[${PYTHON_USEDEP}]
>=dev-python/apache-libcloud-2.5.0[${PYTHON_USEDEP}]
dev-python/async-timeout[${PYTHON_USEDEP}]
)
mako? ( dev-python/mako[${PYTHON_USEDEP}] )
ldap? ( dev-python/python-ldap[${PYTHON_USEDEP}] )
libvirt? (
dev-python/libvirt-python[${PYTHON_USEDEP}]
)
openssl? (
dev-libs/openssl:0=[-bindist(-)]
>=dev-python/pyopenssl-23.2.0[${PYTHON_USEDEP}]
)
raet? (
>=dev-python/libnacl-1.0.0[${PYTHON_USEDEP}]
>=dev-python/ioflo-1.1.7[${PYTHON_USEDEP}]
>=dev-python/raet-0.6.0[${PYTHON_USEDEP}]
)
cherrypy? ( >=dev-python/cherrypy-3.2.2[${PYTHON_USEDEP}] )
cheetah? ( >=dev-python/cheetah3-3.2.2[${PYTHON_USEDEP}] )
genshi? ( dev-python/genshi[${PYTHON_USEDEP}] )
mongodb? ( dev-python/pymongo[${PYTHON_USEDEP}] )
portage? ( sys-apps/portage[${PYTHON_USEDEP}] )
keyring? ( dev-python/keyring[${PYTHON_USEDEP}] )
redis? ( dev-python/redis[${PYTHON_USEDEP}] )
selinux? ( sec-policy/selinux-salt )
nova? (
>=dev-python/python-novaclient-2.17.0[${PYTHON_USEDEP}]
)
neutron? (
>=dev-python/python-neutronclient-2.3.6[${PYTHON_USEDEP}]
)
gnupg? ( dev-python/python-gnupg[${PYTHON_USEDEP}] )
profile? ( dev-python/yappi[${PYTHON_USEDEP}] )
vim-syntax? ( app-vim/salt-vim )
zeromq? ( >=dev-python/pyzmq-19.0.0[${PYTHON_USEDEP}] )
"
BDEPEND="
dev-python/build[${PYTHON_USEDEP}]
test? (
${RDEPEND}
dev-python/apache-libcloud[${PYTHON_USEDEP}]
dev-python/boto3[${PYTHON_USEDEP}]
>=dev-python/certifi-2023.07.22[${PYTHON_USEDEP}]
dev-python/cherrypy[${PYTHON_USEDEP}]
>=dev-python/jsonschema-3.0[${PYTHON_USEDEP}]
dev-python/mako[${PYTHON_USEDEP}]
>=dev-python/mock-2.0.0[${PYTHON_USEDEP}]
>=dev-python/moto-2.0.0[${PYTHON_USEDEP}]
dev-python/passlib[${PYTHON_USEDEP}]
dev-python/bcrypt[${PYTHON_USEDEP}]
dev-python/pip[${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.0_rc28[${PYTHON_USEDEP}]
dev-python/pytest-tempdir[${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-tools
>=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-3005.1-no-entry-points.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/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/pillar/test_gpg.py
tests/pytests/functional/runners/test_winrepo.py
tests/pytests/functional/states/file/test_keyvalue.py
tests/pytests/functional/states/file/test_patch.py
tests/pytests/functional/transport/server/test_req_channel.py
tests/pytests/functional/utils/test_async_event_publisher.py
tests/pytests/integration/master/test_clear_funcs.py
tests/pytests/integration/minion/test_reauth.py
tests/pytests/integration/returners/test_noop_return.py
tests/pytests/integration/runners/test_manage.py
tests/pytests/integration/states/test_ini_manage.py
tests/pytests/integration/states/test_state_test.py
tests/pytests/integration/utils/test_templates.py
tests/pytests/unit/loader/test_lazy.py
tests/pytests/unit/modules/test_aptpkg.py
tests/pytests/unit/roster/test_dir.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/unit/modules/test_boto_{vpc,secgroup,elb}.py
tests/unit/netapi/rest_tornado/test_saltnado.py
tests/unit/{test_{zypp_plugins,module_names},utils/test_extend}.py
# tests that require network access
tests/integration/cloud
tests/integration/netapi
tests/kitchen/test_kitchen.py
tests/kitchen/tests/wordpress/tests
tests/pytests/functional/cli/test_salt_cloud.py
tests/pytests/functional/cli/test_salt_run_.py
tests/pytests/functional/modules/test_http.py
tests/pytests/functional/modules/test_pip.py
tests/pytests/integration/cli/test_salt_proxy.py
tests/pytests/integration/modules/state/test_state.py
tests/pytests/integration/modules/state/test_state_state_events.py
tests/pytests/integration/modules/test_jinja.py
tests/pytests/integration/modules/test_state.py
tests/pytests/integration/modules/test_test.py
tests/pytests/integration/pillar/cache/test_pillar_cache.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/unit/client/ssh/test_ssh.py
tests/pytests/unit/test_client.py
tests/pytests/{integration,functional}/netapi
tests/unit/modules/test_boto3_elasticsearch.py
tests/unit/modules/test_boto3_route53.py
tests/unit/modules/test_network.py
tests/unit/{states,modules}/test_zcbuildout.py
# tests require root access
tests/integration/pillar/test_git_pillar.py
tests/integration/states/test_supervisord.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/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
)
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
# make sure pkg_resources doesn't bomb because pycrypto isn't installed
find "${S}" -name '*.txt' -print0 | xargs -0 sed -e '/pycrypto>/ d ; /pycryptodomex/ d' -i || die
# pycryptodome rather than pycryptodomex
find "${S}" -name '*.py' -print0 | xargs -0 -- sed -i -e 's:Cryptodome:Crypto:g' -- || 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 svc
USE_SETUPTOOLS=1 distutils-r1_python_install_all
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=(
# 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/unit/test_minion.py::test_master_type_disable
# needs root
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/pytests/integration/modules/test_cmdmod.py::test_long_stdout
# don't like sandbox
tests/pytests/functional/cli/test_salt.py::test_help_log
tests/pytests/functional/cli/test_salt.py::test_versions_report
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/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_blockreplace.py::test_issue_49043
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_managed.py::test_verify_ssl_https_source[False]
tests/pytests/functional/states/file/test_managed.py::test_verify_ssl_https_source[True]
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/utils/functools/test_namespaced_function.py::test_namespacing
tests/pytests/integration/ssh/test_pillar_compilation.py::test_gpg_pillar
tests/pytests/integration/ssh/test_pillar_compilation.py::test_saltutil_runner
tests/pytests/unit/_logging/handlers/test_deferred_stream_handler.py::test_deferred_write_on_flush
tests/pytests/unit/_logging/handlers/test_deferred_stream_handler.py::test_sync_with_handlers
tests/pytests/unit/client/ssh/test_single.py::test_run_with_pre_flight_args
tests/pytests/unit/config/schemas/test_ssh.py::test_config_validate
tests/pytests/unit/modules/test_aptpkg.py::test_call_apt_dpkg_lock
tests/pytests/unit/modules/test_msteams.py::test_post_card
tests/pytests/unit/modules/test_portage_config.py::test_enforce_nice_config
tests/pytests/unit/modules/test_saltutil.py::test_clear_job_cache
tests/pytests/unit/modules/test_saltutil.py::test_list_extmods
tests/pytests/unit/modules/test_yumpkg.py::test_get_yum_config
tests/pytests/unit/pillar/test_pillar.py::test_pillar_get_cache_disk
tests/pytests/unit/renderers/test_yamlex.py::test_basic
tests/pytests/unit/renderers/test_yamlex.py::test_complex
tests/pytests/unit/states/test_file.py::test_file_recurse_directory_test
tests/pytests/unit/test_ext_importers.py::test_tornado_import_override
tests/pytests/unit/test_master.py::test_fileserver_duration
tests/pytests/unit/test_template.py::test_compile_template_str_mkstemp_cleanup
tests/pytests/unit/utils/test_cache.py::test_context_wrapper
tests/pytests/unit/utils/test_cache.py::test_refill_cache
tests/pytests/unit/utils/test_cache.py::test_set_cache
tests/pytests/unit/utils/test_http.py::test_requests_session_verify_ssl_false
tests/pytests/unit/utils/test_vt.py::test_log_sanitize
tests/unit/utils/test_schema.py::ConfigTestCase::test_anyof_config_validation
tests/unit/utils/test_schema.py::ConfigTestCase::test_array_config_validation
tests/unit/utils/test_schema.py::ConfigTestCase::test_array_config_validation
tests/unit/utils/test_schema.py::ConfigTestCase::test_dict_config_validation
tests/unit/utils/test_schema.py::ConfigTestCase::test_hostname_config_validation
tests/unit/utils/test_schema.py::ConfigTestCase::test_not_config_validation
tests/unit/utils/test_schema.py::ConfigTestCase::test_oneof_config_validation
tests/unit/utils/test_schema.py::ConfigTestCase::test_optional_requirements_config_validation
tests/unit/utils/test_vt.py::test_split_multibyte_characters_shiftjis
tests/unit/utils/test_vt.py::test_split_multibyte_characters_unicode
# tests that need network access
tests/pytests/unit/utils/test_http.py::test_query_proxy
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_network.py::test_isportopen
)
# 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
(
export TMPDIR
cleanup() { rm -rf "${TMPDIR}" || die; }
trap cleanup EXIT
addwrite "${TMPDIR}"
USE_SETUPTOOLS=1 NO_INTERNET=1 SHELL="/bin/bash" \
epytest
)
}