mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-01-06 02:17:34 -08:00
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:
parent
b4577de500
commit
5ba4466c0b
@ -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
|
||||
|
||||
@ -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")
|
||||
@ -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")
|
||||
@ -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(
|
||||
@ -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
|
||||
|
||||
@ -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,
|
||||
@ -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)
|
||||
@ -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.
|
||||
@ -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
|
||||
)
|
||||
}
|
||||
@ -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
|
||||
)
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user