Merge pull request 'test_ssh_remote: skip whole module at once on macOS' (#3626) from darwin-ssh-remote into main

Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/3626
This commit is contained in:
Mic92
2025-05-13 14:07:42 +00:00
2 changed files with 25 additions and 16 deletions

View File

@@ -11,6 +11,9 @@ from clan_cli.ssh.host import Host
from clan_cli.ssh.host_key import HostKeyCheck from clan_cli.ssh.host_key import HostKeyCheck
from clan_cli.ssh.parse import parse_deployment_address from clan_cli.ssh.parse import parse_deployment_address
if sys.platform == "darwin":
pytest.skip("preload doesn't work on darwin", allow_module_level=True)
class ParseTestCase(NamedTuple): class ParseTestCase(NamedTuple):
test_addr: str = "" test_addr: str = ""
@@ -132,10 +135,6 @@ def test_parse_ssh_options() -> None:
assert host.ssh_options["StrictHostKeyChecking"] == "yes" assert host.ssh_options["StrictHostKeyChecking"] == "yes"
is_darwin = sys.platform == "darwin"
@pytest.mark.skipif(is_darwin, reason="preload doesn't work on darwin")
def test_run(hosts: list[Host], runtime: AsyncRuntime) -> None: def test_run(hosts: list[Host], runtime: AsyncRuntime) -> None:
for host in hosts: for host in hosts:
proc = runtime.async_run( proc = runtime.async_run(
@@ -144,7 +143,6 @@ def test_run(hosts: list[Host], runtime: AsyncRuntime) -> None:
assert proc.wait().result.stdout == "hello\n" assert proc.wait().result.stdout == "hello\n"
@pytest.mark.skipif(is_darwin, reason="preload doesn't work on darwin")
def test_run_environment(hosts: list[Host], runtime: AsyncRuntime) -> None: def test_run_environment(hosts: list[Host], runtime: AsyncRuntime) -> None:
for host in hosts: for host in hosts:
proc = runtime.async_run( proc = runtime.async_run(
@@ -167,7 +165,6 @@ def test_run_environment(hosts: list[Host], runtime: AsyncRuntime) -> None:
assert "env_var=true" in p2.wait().result.stdout assert "env_var=true" in p2.wait().result.stdout
@pytest.mark.skipif(is_darwin, reason="preload doesn't work on darwin")
def test_run_no_shell(hosts: list[Host], runtime: AsyncRuntime) -> None: def test_run_no_shell(hosts: list[Host], runtime: AsyncRuntime) -> None:
for host in hosts: for host in hosts:
proc = runtime.async_run( proc = runtime.async_run(
@@ -176,7 +173,6 @@ def test_run_no_shell(hosts: list[Host], runtime: AsyncRuntime) -> None:
assert proc.wait().result.stdout == "hello\n" assert proc.wait().result.stdout == "hello\n"
@pytest.mark.skipif(is_darwin, reason="preload doesn't work on darwin")
def test_run_function(hosts: list[Host], runtime: AsyncRuntime) -> None: def test_run_function(hosts: list[Host], runtime: AsyncRuntime) -> None:
def some_func(h: Host) -> bool: def some_func(h: Host) -> bool:
p = h.run(["echo", "hello"]) p = h.run(["echo", "hello"])
@@ -187,7 +183,6 @@ def test_run_function(hosts: list[Host], runtime: AsyncRuntime) -> None:
assert proc.wait().result assert proc.wait().result
@pytest.mark.skipif(is_darwin, reason="preload doesn't work on darwin")
def test_timeout(hosts: list[Host], runtime: AsyncRuntime) -> None: def test_timeout(hosts: list[Host], runtime: AsyncRuntime) -> None:
for host in hosts: for host in hosts:
proc = runtime.async_run( proc = runtime.async_run(
@@ -197,7 +192,6 @@ def test_timeout(hosts: list[Host], runtime: AsyncRuntime) -> None:
assert isinstance(error, ClanCmdTimeoutError) assert isinstance(error, ClanCmdTimeoutError)
@pytest.mark.skipif(is_darwin, reason="preload doesn't work on darwin")
def test_run_exception(hosts: list[Host], runtime: AsyncRuntime) -> None: def test_run_exception(hosts: list[Host], runtime: AsyncRuntime) -> None:
for host in hosts: for host in hosts:
proc = runtime.async_run( proc = runtime.async_run(
@@ -217,7 +211,6 @@ def test_run_exception(hosts: list[Host], runtime: AsyncRuntime) -> None:
raise AssertionError(msg) raise AssertionError(msg)
@pytest.mark.skipif(is_darwin, reason="preload doesn't work on darwin")
def test_run_function_exception(hosts: list[Host], runtime: AsyncRuntime) -> None: def test_run_function_exception(hosts: list[Host], runtime: AsyncRuntime) -> None:
def some_func(h: Host) -> CmdOut: def some_func(h: Host) -> CmdOut:
return h.run_local(["exit 1"], RunOpts(shell=True)) return h.run_local(["exit 1"], RunOpts(shell=True))

View File

@@ -58,13 +58,16 @@ let
(pythonRuntime.withPackages pyTestDeps) (pythonRuntime.withPackages pyTestDeps)
]; ];
source = nixFilter = import ../../lib/filter-clan-core/nix-filter.nix;
cliSource =
source:
runCommand "clan-cli-source" runCommand "clan-cli-source"
{ {
nativeBuildInputs = [ jq ]; nativeBuildInputs = [ jq ];
} }
'' ''
cp -r ${./.} $out cp -r ${source} $out
chmod -R +w $out chmod -R +w $out
# In cases where the devshell created this file, this will already exist # In cases where the devshell created this file, this will already exist
@@ -78,6 +81,19 @@ let
cp -r ${../../templates} $out/clan_cli/templates cp -r ${../../templates} $out/clan_cli/templates
''; '';
sourceWithoutTests = cliSource (
nixFilter.filter {
root = ./.;
include = [
(
_root: path: _type:
(builtins.match "test_.*\.py" path) == null
)
];
}
);
sourceWithTests = cliSource ./.;
# Create a custom nixpkgs for use within the project # Create a custom nixpkgs for use within the project
nixpkgs' = nixpkgs' =
runCommand "nixpkgs" runCommand "nixpkgs"
@@ -106,7 +122,7 @@ let
in in
pythonRuntime.pkgs.buildPythonApplication { pythonRuntime.pkgs.buildPythonApplication {
name = "clan-cli"; name = "clan-cli";
src = source; src = sourceWithoutTests;
format = "pyproject"; format = "pyproject";
# Arguments for the wrapper to unset LD_LIBRARY_PATH to avoid glibc version issues # Arguments for the wrapper to unset LD_LIBRARY_PATH to avoid glibc version issues
@@ -150,7 +166,7 @@ pythonRuntime.pkgs.buildPythonApplication {
} }
'' ''
set -euo pipefail set -euo pipefail
cp -r ${source} ./src cp -r ${sourceWithTests} ./src
chmod +w -R ./src chmod +w -R ./src
cd ./src cd ./src
@@ -193,7 +209,7 @@ pythonRuntime.pkgs.buildPythonApplication {
} }
'' ''
set -euo pipefail set -euo pipefail
cp -r ${source} ./src cp -r ${sourceWithTests} ./src
chmod +w -R ./src chmod +w -R ./src
cd ./src cd ./src
@@ -246,7 +262,7 @@ pythonRuntime.pkgs.buildPythonApplication {
} }
'' ''
set -euo pipefail set -euo pipefail
cp -r ${source} ./src cp -r ${sourceWithTests} ./src
chmod +w -R ./src chmod +w -R ./src
cd ./src cd ./src