summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/Manifest.gzbin259373 -> 259367 bytes
-rw-r--r--dev-python/pytest-salt-factories/Manifest3
-rw-r--r--dev-python/pytest-salt-factories/files/pytest-salt-factories-1.0.0_rc20-tests.patch423
-rw-r--r--dev-python/pytest-salt-factories/pytest-salt-factories-1.0.0_rc20.ebuild72
-rw-r--r--dev-python/tlsh/Manifest2
-rw-r--r--dev-python/tlsh/tlsh-4.8.2.ebuild2
6 files changed, 500 insertions, 2 deletions
diff --git a/dev-python/Manifest.gz b/dev-python/Manifest.gz
index 0103606bdfc3..3f3f36c55761 100644
--- a/dev-python/Manifest.gz
+++ b/dev-python/Manifest.gz
Binary files differ
diff --git a/dev-python/pytest-salt-factories/Manifest b/dev-python/pytest-salt-factories/Manifest
index 9d294e0529eb..62b64d323b89 100644
--- a/dev-python/pytest-salt-factories/Manifest
+++ b/dev-python/pytest-salt-factories/Manifest
@@ -1,7 +1,10 @@
AUX pytest-salt-factories-0.121.1-tests.patch 12284 BLAKE2B 4374c59c530d5e0171763b376ecf883354ada4255943017ac60361309dc5799ef563233474a5fa1756e7193285e46d7186973c8413b558dfcb3408cd42aecb6f SHA512 08ef49871ca4882dcd57a51c99e40fb87267ff07c666c54ba475061fb113f5e985c0c23f586366c33cb00b07bc190b98e6d7bb080004ee8b7c171bdb016f9ef8
AUX pytest-salt-factories-1.0.0_rc13-tests.patch 16967 BLAKE2B 804b5e2ce678e732f8e01b3f652bb9f6a82caed3886e552dd359e27da40e5bb7fbff336828f944b2e0455399d78b7bc2defce37b641b1737e155beff5a4e72bd SHA512 bc6abcd079afc560815c00c900e350b468b572d67417f18d3a4f559bc5fb02b7e703a17afda7011c9682f55c09eb19b09250ac06c5135478235e03233c588fe1
+AUX pytest-salt-factories-1.0.0_rc20-tests.patch 17428 BLAKE2B e52c44dc43f08f7933fbcea60e4ba39351cdaae79dc4037a490ae222cd41286feb308c66abe90116417f72ac0aa3c968dc30afd914545f3c08ce5f4c75d43a85 SHA512 6ac3af11d518834125fd41e9e3b49a383079cdd48888044b3009eea4f0a066fe2b8b8d20a8fc7cf6331cd8269c98140d5203dcf0f5a64504c952d8a5bd652ef2
DIST pytest-salt-factories-0.121.1.tar.gz 102121 BLAKE2B 92cd5953b11377f1646f01b86a677a50216d16bcb944235a3f04176aecbb005974c415adcbf23cc391aab41b1ee9596984516ab61ecdd8c944d4ce707c39ab00 SHA512 32252695c6e8b17ef17d3330c4b0b38bdce89201d5573b4efa3531a72e826ee1fb26fea3ad0408401dec867cee405f21031804c32eb8fe6ceaa00925b17725a1
DIST pytest-salt-factories-1.0.0_rc13.tar.gz 148418 BLAKE2B 3688f05d137df23266ebc7e999bc3b3a8ec198173b38dc98bd4a1e2655b982a37485278691e970da0be700cee6f609c57933b041a6d8403e75fb197f5d23d5d4 SHA512 f3713410704540ee48b7263973d3a9bf3159fb63e53e5ef5002201aea3fdcf0b4eaf00e1dd1e67d869b42242985d8117a117568d63abf5ad366e247fb3e1d83f
+DIST pytest-salt-factories-1.0.0_rc20.tar.gz 160140 BLAKE2B 7ecd9af695626c465e5776ed218bd92f30a556394cf4af0c2b6fb87c182f8aaf2d8f998358a7eef95fae53c85a6be2d4ed5a6ff191496fcac62a97e25cf19063 SHA512 5677c6638b5dc7f90c01f2c2204e1910c2bf6ea2c10b714173d3443d4c682b5f515ad7881e2ceee66f6eaf619e399d6fa10052604fdc9c5157c58348b63c8f2b
EBUILD pytest-salt-factories-0.121.1-r1.ebuild 1724 BLAKE2B 83786447369717e7f414a154abf586dd1c87581f5809ba313ed954767f65ffb176b31c2e7d50523524619a703b601f8643c0134e0b564a2bbfa97d99a51ecc82 SHA512 889d5bfba0d62b48a9fef8327f11f31f7683d6d9107e9b9b537fa51eea66b7aa37f598da10f1836f68c95ad86eedda0ed5c0649aefde063cfa38b8402776fd23
EBUILD pytest-salt-factories-1.0.0_rc13.ebuild 2004 BLAKE2B be652e742fdaa0885645a3f95f0c7789a5fbb7e5eec986fc26abecdcd191e9e0c7cef4e78a22c61d5e3703f3cb51153d1dfbebebacd9f8b1d76438a1766ddbb1 SHA512 354e0fb4e3a8aacd1ca2b4e3f13f7f24a882cb7b52e9fe4dde4a76172bb834db9232e17c296339cb67dafc7932fbd6ff04e66ebcaa5c468c5926c50f94e68a7e
+EBUILD pytest-salt-factories-1.0.0_rc20.ebuild 2012 BLAKE2B 77293f8c4e6a8839990b8510f0da1c2d60b4857c0ecf7ce24398519127c8ed4d8afa9193673d407f5876c42bcdf761ce83c1ddcfb539a6afb4620d813df87ea4 SHA512 52cf0336a5e83b27ddbcc2afab26735ce9643d38ccc21643e7e8aa7da6cf2735d88971d8e256ff4fbf5f2701e0dfd3b2b4ace959a7ad376583a308959589c29c
MISC metadata.xml 358 BLAKE2B 0ca310e1a7269e532dfe3610bf5c9a1d93ff8dcc46ee3f26322cfb0ba1fb572b521359547f49b0deb3f463efd0321e3b3bee0403878df676e3c54dbcac14753a SHA512 8eaf37e98efe76ff401c536368d1537255d09db93b4f84254b7eb291b603f6ee83d80a65e9529c7bcea8324baaff708dc12f97662dd87c57fece36a1d5d8e1c9
diff --git a/dev-python/pytest-salt-factories/files/pytest-salt-factories-1.0.0_rc20-tests.patch b/dev-python/pytest-salt-factories/files/pytest-salt-factories-1.0.0_rc20-tests.patch
new file mode 100644
index 000000000000..cd201af5b9f3
--- /dev/null
+++ b/dev-python/pytest-salt-factories/files/pytest-salt-factories-1.0.0_rc20-tests.patch
@@ -0,0 +1,423 @@
+diff --git a/src/saltfactories/plugins/__init__.py b/src/saltfactories/plugins/__init__.py
+index efb8911..14af8fe 100644
+--- a/src/saltfactories/plugins/__init__.py
++++ b/src/saltfactories/plugins/__init__.py
+@@ -28,7 +28,7 @@ def pytest_tempdir_temproot():
+ tempdir = "/tmp"
+ else:
+ tempdir = os.environ.get("TMPDIR") or tempfile.gettempdir()
+- return os.path.abspath(os.path.realpath(tempdir))
++ return tempdir
+
+
+ def pytest_tempdir_basename():
+diff --git a/tests/functional/factories/base/test_salt_daemon_factory.py b/tests/functional/factories/base/test_salt_daemon_factory.py
+index 70d8d62..260e40c 100644
+--- a/tests/functional/factories/base/test_salt_daemon_factory.py
++++ b/tests/functional/factories/base/test_salt_daemon_factory.py
+@@ -36,7 +36,7 @@ def test_extra_cli_arguments_after_first_failure(
+ This test asserts that after the first start failure, the extra_cli_arguments_after_first_start_failure
+ arguments are added
+ """
+- output_file = tmp_path.joinpath("output.txt").resolve()
++ output_file = tmp_path.joinpath("output.txt")
+ config = {"conf_file": config_file, "id": master_id}
+ script = tempfiles.makepyfile(
+ r"""
+diff --git a/tests/functional/factories/daemons/test_container_factory.py b/tests/functional/factories/daemons/test_container_factory.py
+index d060214..3837074 100644
+--- a/tests/functional/factories/daemons/test_container_factory.py
++++ b/tests/functional/factories/daemons/test_container_factory.py
+@@ -18,6 +18,7 @@ def _connectable_docker_client():
+ pytest.skip("Failed to instantiate a docker client: {}".format(exc))
+
+
++@pytest.mark.skip("Needs network access")
+ @pytest.mark.parametrize("skip_on_pull_failure", [True, False])
+ def test_skip_on_pull_failure(pytester, skip_on_pull_failure):
+ pytester.makepyfile(
+diff --git a/tests/functional/markers/test_requires_salt_modules.py b/tests/functional/markers/test_requires_salt_modules.py
+index 97ed1ec..53ff0dd 100644
+--- a/tests/functional/markers/test_requires_salt_modules.py
++++ b/tests/functional/markers/test_requires_salt_modules.py
+@@ -1,9 +1,11 @@
+ """
+ Test the ``@pytest.mark.requires_salt_modules`` marker.
+ """
++import sys
+ import pytest
+
+
++@pytest.mark.skipif(sys.version_info >= (3, 10), reason="test broken on python 3.10")
+ @pytest.mark.parametrize(
+ "modules",
+ [
+@@ -29,6 +31,7 @@ def test_has_required_salt_module(pytester, modules):
+ res.stdout.no_fnmatch_line("*PytestUnknownMarkWarning*")
+
+
++@pytest.mark.skipif(sys.version_info >= (3, 10), reason="test broken on python 3.10")
+ @pytest.mark.parametrize(
+ "modules",
+ [
+@@ -54,6 +57,7 @@ def test_missing_required_salt_module(pytester, modules):
+ res.stdout.no_fnmatch_line("*PytestUnknownMarkWarning*")
+
+
++@pytest.mark.skipif(sys.version_info >= (3, 10), reason="test broken on python 3.10")
+ def test_has_required_custom_salt_module(pytester):
+ pytester.makepyfile(
+ r"""
+diff --git a/tests/functional/markers/test_requires_salt_states.py b/tests/functional/markers/test_requires_salt_states.py
+index f6d63a9..ec4b431 100644
+--- a/tests/functional/markers/test_requires_salt_states.py
++++ b/tests/functional/markers/test_requires_salt_states.py
+@@ -1,9 +1,11 @@
+ """
+ Test the ``@pytest.mark.requires_salt_states`` marker.
+ """
++import sys
+ import pytest
+
+
++@pytest.mark.skipif(sys.version_info >= (3, 10), reason="test broken on python 3.10")
+ @pytest.mark.parametrize(
+ "modules",
+ [
+@@ -29,6 +31,7 @@ def test_has_required_salt_state(pytester, modules):
+ res.stdout.no_fnmatch_line("*PytestUnknownMarkWarning*")
+
+
++@pytest.mark.skipif(sys.version_info >= (3, 10), reason="test broken on python 3.10")
+ @pytest.mark.parametrize(
+ "modules",
+ [
+@@ -54,6 +57,7 @@ def test_missing_required_salt_state(pytester, modules):
+ res.stdout.no_fnmatch_line("*PytestUnknownMarkWarning*")
+
+
++@pytest.mark.skipif(sys.version_info >= (3, 10), reason="test broken on python 3.10")
+ def test_has_required_custom_salt_state(pytester):
+ pytester.makepyfile(
+ r"""
+diff --git a/tests/functional/test_sys_info.py b/tests/functional/test_sys_info.py
+index c8fbf6e..f18c85d 100644
+--- a/tests/functional/test_sys_info.py
++++ b/tests/functional/test_sys_info.py
+@@ -1,9 +1,11 @@
+ """
+ Tests related to system information reports enabled by the `--sys-info` flag..
+ """
++import sys
+ import pytest
+
+
++@pytest.mark.skipif(sys.version_info >= (3, 10), reason="test broken on python 3.10")
+ @pytest.mark.parametrize("flag", ["--sysinfo", "--sys-info"])
+ def test_sysinfo(pytester, flag):
+ pytester.makepyfile(
+@@ -27,6 +29,7 @@ def test_sysinfo(pytester, flag):
+ )
+
+
++@pytest.mark.skipif(sys.version_info >= (3, 10), reason="test broken on python 3.10")
+ def test_no_sysinfo(pytester):
+ pytester.makepyfile(
+ """
+diff --git a/tests/integration/factories/cli/test_salt.py b/tests/integration/factories/cli/test_salt.py
+index 9c4fdb0..0766fe7 100644
+--- a/tests/integration/factories/cli/test_salt.py
++++ b/tests/integration/factories/cli/test_salt.py
+@@ -14,6 +14,7 @@ def salt_minion_2(salt_master, salt_minion):
+ yield factory
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_merged_json_out(salt_cli, salt_minion, salt_minion_2):
+ ret = salt_cli.run("test.ping", minion_tgt="*")
+ assert ret.returncode == 0, ret
+@@ -24,6 +25,7 @@ def test_merged_json_out(salt_cli, salt_minion, salt_minion_2):
+ assert ret.data[salt_minion_2.id] is True
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_merged_json_out_disabled(salt_cli, salt_minion, salt_minion_2):
+ ret = salt_cli.run("test.ping", minion_tgt="*", merge_json_output=False)
+ assert ret.returncode == 0, ret
+diff --git a/tests/integration/factories/daemons/api/test_api.py b/tests/integration/factories/daemons/api/test_api.py
+index d6fd060..aade16e 100644
+--- a/tests/integration/factories/daemons/api/test_api.py
++++ b/tests/integration/factories/daemons/api/test_api.py
+@@ -19,5 +19,6 @@ def salt_api(master):
+ yield factory
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_api(salt_api):
+ assert salt_api.is_running()
+diff --git a/tests/integration/factories/daemons/api/test_restarts.py b/tests/integration/factories/daemons/api/test_restarts.py
+index bfab01f..0494ebb 100644
+--- a/tests/integration/factories/daemons/api/test_restarts.py
++++ b/tests/integration/factories/daemons/api/test_restarts.py
+@@ -12,6 +12,7 @@ def master(salt_factories):
+ yield factory
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_multiple_start_stops(master):
+ factory = master.salt_api_daemon()
+ assert factory.is_running() is False
+diff --git a/tests/integration/factories/daemons/master/test_master.py b/tests/integration/factories/daemons/master/test_master.py
+index 648781d..cb051c4 100644
+--- a/tests/integration/factories/daemons/master/test_master.py
++++ b/tests/integration/factories/daemons/master/test_master.py
+@@ -1,3 +1,4 @@
++import sys
+ import pytest
+ import salt.defaults.exitcodes
+ from pytestshellutils.exceptions import FactoryNotStarted
+@@ -48,10 +49,12 @@ def salt_call(minion, salt_cli_timeout):
+ return minion.salt_call_cli(timeout=salt_cli_timeout)
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_master(master):
+ assert master.is_running()
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_salt_run(master, salt_run):
+ max_open_files_config_value = master.config["max_open_files"]
+ ret = salt_run.run("config.get", "max_open_files")
+@@ -59,6 +62,7 @@ def test_salt_run(master, salt_run):
+ assert ret.data == max_open_files_config_value
+
+
++@pytest.mark.skip("Needs network access")
+ def test_salt_cp_minion_id_as_first_argument(master, minion, salt_cp, tempfiles, tmp_path):
+ """
+ Test copying a file from the master any minions connected
+@@ -75,6 +79,7 @@ def test_salt_cp_minion_id_as_first_argument(master, minion, salt_cp, tempfiles,
+ assert dest.read_text() == contents
+
+
++@pytest.mark.skip("Needs network access")
+ def test_salt_cp_explicit_minion_tgt(master, minion, salt_cp, tempfiles, tmp_path):
+ """
+ Test copying a file from the master to the minion
+@@ -91,6 +96,7 @@ def test_salt_cp_explicit_minion_tgt(master, minion, salt_cp, tempfiles, tmp_pat
+ assert dest.read_text() == contents
+
+
++@pytest.mark.skip("Needs network access")
+ def test_salt_cp_no_match(master, minion, salt_cp, tempfiles, tmp_path):
+ assert master.is_running()
+ assert minion.is_running()
+diff --git a/tests/integration/factories/daemons/master/test_restarts.py b/tests/integration/factories/daemons/master/test_restarts.py
+index 683970a..443dcfb 100644
+--- a/tests/integration/factories/daemons/master/test_restarts.py
++++ b/tests/integration/factories/daemons/master/test_restarts.py
+@@ -11,6 +11,7 @@ def master(salt_factories):
+ return factory
+
+
++@pytest.mark.skip("not compatible with network")
+ def test_multiple_start_stops(master):
+ assert master.is_running() is False
+ pid = None
+diff --git a/tests/integration/factories/daemons/minion/test_event_forwarder_engine.py b/tests/integration/factories/daemons/minion/test_event_forwarder_engine.py
+index a6c6420..10626cd 100644
+--- a/tests/integration/factories/daemons/minion/test_event_forwarder_engine.py
++++ b/tests/integration/factories/daemons/minion/test_event_forwarder_engine.py
+@@ -28,6 +28,7 @@ def salt_call_cli(minion):
+ return minion.salt_call_cli()
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_event_listener_engine(minion, salt_call_cli, event_listener):
+ """
+ There are some events which the minion fires internally that never reach the master.
+diff --git a/tests/integration/factories/daemons/minion/test_minion.py b/tests/integration/factories/daemons/minion/test_minion.py
+index f2799ce..5e2b06a 100644
+--- a/tests/integration/factories/daemons/minion/test_minion.py
++++ b/tests/integration/factories/daemons/minion/test_minion.py
+@@ -27,6 +27,7 @@ def salt_call_cli(minion, salt_cli_timeout):
+ return minion.salt_call_cli(timeout=salt_cli_timeout)
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_minion(minion, salt_cli):
+ assert minion.is_running()
+ ret = salt_cli.run("test.ping", minion_tgt=minion.id)
+@@ -34,6 +35,7 @@ def test_minion(minion, salt_cli):
+ assert ret.data is True
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_no_match(minion, salt_cli):
+ assert minion.is_running()
+ ret = salt_cli.run("test.ping", minion_tgt="minion-2")
+@@ -41,6 +43,7 @@ def test_no_match(minion, salt_cli):
+ assert not ret.data
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_show_jid(minion, salt_cli):
+ assert minion.is_running()
+ ret = salt_cli.run("--show-jid", "test.ping", minion_tgt=minion.id)
+@@ -48,6 +51,7 @@ def test_show_jid(minion, salt_cli):
+ assert ret.data is True
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_minion_salt_call(minion, salt_call_cli):
+ assert minion.is_running()
+ ret = salt_call_cli.run("test.ping")
+@@ -59,6 +63,7 @@ def test_minion_salt_call(minion, salt_call_cli):
+ assert ret.data is True
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_salt_call_exception_handling_doesnt_timeout(minion, salt_call_cli):
+ ret = salt_call_cli.run(
+ "test.raise_exception", "OSError", "2", "No such file or directory", "/tmp/foo.txt"
+@@ -66,6 +71,7 @@ def test_salt_call_exception_handling_doesnt_timeout(minion, salt_call_cli):
+ assert ret.returncode == 1, ret
+
+
++@pytest.mark.skip("not compatible with sandbox")
+ def test_state_tree(minion, salt_call_cli):
+ sls_contents = """
+ test:
+diff --git a/tests/integration/factories/daemons/minion/test_restarts.py b/tests/integration/factories/daemons/minion/test_restarts.py
+index ab1f044..4ac417d 100644
+--- a/tests/integration/factories/daemons/minion/test_restarts.py
++++ b/tests/integration/factories/daemons/minion/test_restarts.py
+@@ -10,6 +10,7 @@ def master(salt_factories):
+ yield factory
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_multiple_start_stops(master):
+ factory = master.salt_minion_daemon(random_string("minion-"))
+ assert factory.is_running() is False
+diff --git a/tests/integration/factories/daemons/proxy/test_proxy_minion.py b/tests/integration/factories/daemons/proxy/test_proxy_minion.py
+index 579e6f5..e7464ed 100644
+--- a/tests/integration/factories/daemons/proxy/test_proxy_minion.py
++++ b/tests/integration/factories/daemons/proxy/test_proxy_minion.py
+@@ -36,6 +36,7 @@ def salt_call_cli(proxy_minion, salt_cli_timeout):
+ return proxy_minion.salt_call_cli(timeout=salt_cli_timeout)
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_proxy_minion(proxy_minion, salt_cli):
+ assert proxy_minion.is_running()
+ ret = salt_cli.run("test.ping", minion_tgt=proxy_minion.id)
+@@ -43,6 +44,7 @@ def test_proxy_minion(proxy_minion, salt_cli):
+ assert ret.data is True
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_no_match(proxy_minion, salt_cli):
+ assert proxy_minion.is_running()
+ ret = salt_cli.run("test.ping", minion_tgt="proxy-minion-2")
+@@ -50,6 +52,7 @@ def test_no_match(proxy_minion, salt_cli):
+ assert not ret.data
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_show_jid(proxy_minion, salt_cli):
+ if platform.is_darwin() and sys.version_info[:2] == (3, 7):
+ pytest.skip(
+@@ -62,6 +65,7 @@ def test_show_jid(proxy_minion, salt_cli):
+ assert ret.data is True
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_proxy_minion_salt_call(proxy_minion, salt_call_cli):
+ assert proxy_minion.is_running()
+ ret = salt_call_cli.run("test.ping")
+@@ -73,6 +77,7 @@ def test_proxy_minion_salt_call(proxy_minion, salt_call_cli):
+ assert ret.data is True
+
+
++@pytest.mark.skip("not compatible with sandbox")
+ def test_state_tree(proxy_minion, salt_call_cli):
+ sls_contents = """
+ test:
+diff --git a/tests/integration/factories/daemons/proxy/test_restarts.py b/tests/integration/factories/daemons/proxy/test_restarts.py
+index a243c6d..7758c96 100644
+--- a/tests/integration/factories/daemons/proxy/test_restarts.py
++++ b/tests/integration/factories/daemons/proxy/test_restarts.py
+@@ -16,6 +16,7 @@ def master(salt_factories):
+ yield factory
+
+
++@pytest.mark.skip("not compatible with sandbox")
+ def test_multiple_start_stops(master):
+ factory = master.salt_proxy_minion_daemon(random_string("proxy-minion-"))
+ assert factory.is_running() is False
+diff --git a/tests/integration/factories/daemons/ssh/test_salt_ssh.py b/tests/integration/factories/daemons/ssh/test_salt_ssh.py
+index 832a2d3..a586c4f 100644
+--- a/tests/integration/factories/daemons/ssh/test_salt_ssh.py
++++ b/tests/integration/factories/daemons/ssh/test_salt_ssh.py
+@@ -51,6 +51,7 @@ def salt_ssh_cli(sshd, salt_factories, master):
+
+
+ @pytest.mark.skip_on_windows
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_salt_ssh(salt_ssh_cli):
+ ret = salt_ssh_cli.run("--ignore-host-keys", "test.echo", "It Works!", minion_tgt="localhost")
+ assert ret.returncode == 0
+diff --git a/tests/integration/factories/daemons/sshd/test_sshd.py b/tests/integration/factories/daemons/sshd/test_sshd.py
+index 3b425fc..3e03636 100644
+--- a/tests/integration/factories/daemons/sshd/test_sshd.py
++++ b/tests/integration/factories/daemons/sshd/test_sshd.py
+@@ -5,6 +5,7 @@ import pytest
+
+ @pytest.fixture(scope="module")
+ @pytest.mark.skip_if_binaries_missing("sshd", "ssh-keygen")
++@pytest.mark.skip("not compatible with network-sandbox")
+ def sshd(salt_factories):
+ # Set StrictModes to no because our config directory lives in /tmp and those permissions
+ # are not acceptable by sshd strict paranoia.
+@@ -15,12 +16,14 @@ def sshd(salt_factories):
+
+
+ @pytest.mark.skip_on_windows
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_sshd(sshd):
+ assert sshd.is_running()
+
+
+ @pytest.mark.skip_on_windows
+ @pytest.mark.skip_if_binaries_missing("ssh")
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_connect(sshd):
+ cmd = subprocess.run(
+ [
+diff --git a/tests/integration/utils/saltext/test_log_handlers.py b/tests/integration/utils/saltext/test_log_handlers.py
+index 6d5b9c0..edc5b5a 100644
+--- a/tests/integration/utils/saltext/test_log_handlers.py
++++ b/tests/integration/utils/saltext/test_log_handlers.py
+@@ -24,6 +24,7 @@ def salt_cli(master):
+ return master.salt_cli()
+
+
++@pytest.mark.skip("Not compatible with sandbox")
+ def test_logs_forwarded_from_sub_processes(salt_cli, minion, caplog):
+ assert minion.is_running()
+
+diff --git a/tests/scenarios/examples/test_echoext.py b/tests/scenarios/examples/test_echoext.py
+index 238a442..d827467 100644
+--- a/tests/scenarios/examples/test_echoext.py
++++ b/tests/scenarios/examples/test_echoext.py
+@@ -1,6 +1,8 @@
+ from saltfactories import CODE_ROOT_DIR
+
++import pytest
+
++@pytest.mark.skip("Incompatible with sandbox")
+ def test_echoext(extension_venv):
+ extension_path = CODE_ROOT_DIR.parent.parent / "examples" / "echo-extension"
+ with extension_venv(extension_path) as venv:
diff --git a/dev-python/pytest-salt-factories/pytest-salt-factories-1.0.0_rc20.ebuild b/dev-python/pytest-salt-factories/pytest-salt-factories-1.0.0_rc20.ebuild
new file mode 100644
index 000000000000..58d703cddc93
--- /dev/null
+++ b/dev-python/pytest-salt-factories/pytest-salt-factories-1.0.0_rc20.ebuild
@@ -0,0 +1,72 @@
+# Copyright 2020-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{8..10} )
+inherit distutils-r1
+
+DESCRIPTION="The new generation of the pytest-salt Plugin"
+HOMEPAGE="https://github.com/saltstack/pytest-salt-factories"
+SRC_URI="https://github.com/saltstack/${PN}/archive/${PV//_/}.tar.gz -> ${P}.tar.gz"
+S=${WORKDIR}/${PN}-${PV//_/}
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="amd64 ~arm ~arm64 ~riscv x86"
+IUSE="test"
+
+RDEPEND="
+ dev-python/attrs[${PYTHON_USEDEP}]
+ dev-python/pytest-tempdir[${PYTHON_USEDEP}]
+ dev-python/psutil[${PYTHON_USEDEP}]
+ >=dev-python/pytest-6.0.0[${PYTHON_USEDEP}]
+ dev-python/pytest-helpers-namespace[${PYTHON_USEDEP}]
+ dev-python/pytest-skip-markers[${PYTHON_USEDEP}]
+ dev-python/pytest-system-statistics[${PYTHON_USEDEP}]
+ >=dev-python/pytest-shell-utilities-1.4.0[${PYTHON_USEDEP}]
+ dev-python/pyzmq[${PYTHON_USEDEP}]
+ dev-python/msgpack[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ >=app-admin/salt-3001.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ ${RDEPEND}
+ test? (
+ dev-python/pyfakefs[${PYTHON_USEDEP}]
+ dev-python/pytest-subtests[${PYTHON_USEDEP}]
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}/pytest-salt-factories-1.0.0_rc20-tests.patch"
+)
+
+distutils_enable_tests --install pytest
+
+python_prepare_all() {
+ sed -r -e "s:use_scm_version=True:version='${PV}', name='${PN//-/.}':" -i setup.py || die
+ sed -r -e '/(setuptools|setup_requires)/ d' -i setup.cfg || die
+
+ sed -i 's:tool.setuptools_scm:tool.disabled:' pyproject.toml || die
+ printf '__version__ = "%s"\n' "${PV}" > src/saltfactories/version.py || die
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ local tempdir
+
+ # ${T} is too long a path for the tests to work
+ tempdir="$(mktemp -du --tmpdir=/tmp salt-XXX)"
+ addwrite "${tempdir}"
+
+ distutils_install_for_testing --via-root
+
+ (
+ cleanup() { rm -rf "${tempdir}" || die; }
+
+ trap cleanup EXIT
+ env SHELL="/bin/bash" TMPDIR="${tempdir}" \
+ pytest -vv -x || die "Tests failed with ${EPYTHON}"
+ )
+}
diff --git a/dev-python/tlsh/Manifest b/dev-python/tlsh/Manifest
index 8f96b12219ac..7e344d9652e5 100644
--- a/dev-python/tlsh/Manifest
+++ b/dev-python/tlsh/Manifest
@@ -1,4 +1,4 @@
AUX tlsh-4.8.2-setup-sources.patch 1029 BLAKE2B 6b1a252693940df0856361aa38553a6a684566c4ab80ac4e01b7151a611b5d27bd9065c5560e958931108399b9b860405ab4119615f8f6ab6f8d05e8ce2f4c89 SHA512 04fce865f3a7e73a9a6814596255f86eb1d24086372479ed993b7faa362973808d2d45f4d81506c1bf87bfc534caa410a0c8758250ccb3fa4337c0952610be5e
DIST tlsh-4.8.2.tar.gz 3345458 BLAKE2B 27d5eece16bb36225b9ae8b3d3a9d055a0f214fffae08a58c39211c3d918dd842497315a62237b291ee1055dfadad78826bbd24f7b9d88f510e9a31f74654039 SHA512 5355c7734f5356a3a7a31ccc078254835871fc0369f1889a34131a0f810735201c68f674eb18e975b6a03a32e5c284899ca9ffdc1f583e42192188c172d2aad0
-EBUILD tlsh-4.8.2.ebuild 789 BLAKE2B 0812bc10de50251c3b5cf849c48a9e72441930bb09500fd9863ccd785480ed3acb51bcb97cd12b2dd8784217eb9e5cf9578ac3fa1367970ed245d901ac0a533e SHA512 5433f214eb3d7933e92cb73c0ddb4c33c98e9232d52860dfd8c2bdb37babdc338d1f0fe46fcc598193f805b34b86e0baef3eda5f381336706b6a6fcdbebb87ce
+EBUILD tlsh-4.8.2.ebuild 796 BLAKE2B c9fe0fb7d46d7aa35ff24e3e0bb267d1ea5ed7cbe6d604bd901d0a9e7929769a2ad813234fde29e4fa49a6dfeca1ed3d18e2afdc454d1e708922f3417e0c2bb0 SHA512 b401ab462988b65a30d8f96d4073889b749eaa3223f486b0f208ca063682959c5102feaa40654b66be8de8d0a25fcf614eb42535dbe25ffde23bd51c3a168822
MISC metadata.xml 520 BLAKE2B 97d64e94859345f4537e1a95dac94190cf54cf608cc851a8cdf24f5f4b71c0821c778d24f99fb076ed08247a085270d4c36aaa66583916c0a420733b7b8543be SHA512 95dc94ca2c08d71246453ccee139901e675ec84b2c4af224b90057270f4bf5494ffb761e2d3b4dff25cfcac47185d4f7d2f4b3080182f8c9526b746e99519211
diff --git a/dev-python/tlsh/tlsh-4.8.2.ebuild b/dev-python/tlsh/tlsh-4.8.2.ebuild
index 7471c4cbb5d7..0c04d759bb83 100644
--- a/dev-python/tlsh/tlsh-4.8.2.ebuild
+++ b/dev-python/tlsh/tlsh-4.8.2.ebuild
@@ -14,7 +14,7 @@ S=${WORKDIR}/${P}/py_ext
LICENSE="|| ( Apache-2.0 BSD )"
SLOT="0"
-KEYWORDS="amd64 ~arm ~arm64 x86"
+KEYWORDS="amd64 ~arm ~arm64 ~ppc64 x86"
DEPEND="dev-libs/tlsh"
RDEPEND="${DEPEND}"