this derivation will be built: /nix/store/5z4sccsfw1sd1wh7c59bxkm1729bb437-zerotier-tools-pytest.drv building '/nix/store/5z4sccsfw1sd1wh7c59bxkm1729bb437-zerotier-tools-pytest.drv' on 'ssh-ng://builder@build-x86-01.clan.lol' building '/nix/store/5z4sccsfw1sd1wh7c59bxkm1729bb437-zerotier-tools-pytest.drv' zerotier-tools-pytest> Running pytest... zerotier-tools-pytest> ============================= test session starts ============================== zerotier-tools-pytest> platform linux -- Python 3.14.7, pytest-9.1.1, pluggy-1.6.0 -- /nix/store/2365i0z11w9hifffd03lpr43dk9glx0i-python3-3.14.7-env/bin/python zerotier-tools-pytest> cachedir: .pytest_cache zerotier-tools-pytest> rootdir: /build/src zerotier-tools-pytest> configfile: pyproject.toml zerotier-tools-pytest> collected 24 items zerotier-tools-pytest> zerotier-tools-pytest> tests/test_generate.py::TestIdentity::test_from_secret_file_parses_node_id PASSED [ 4%] zerotier-tools-pytest> tests/test_generate.py::TestIdentity::test_from_secret_file_preserves_private PASSED [ 8%] zerotier-tools-pytest> tests/test_generate.py::TestIdentity::test_from_secret_file_agrees_with_directory_constructor PASSED [ 12%] zerotier-tools-pytest> tests/test_generate.py::TestComputeZerotierIp::test_golden_values PASSED [ 16%] zerotier-tools-pytest> tests/test_generate.py::TestComputeZerotierIp::test_different_networks_yield_different_ips PASSED [ 20%] zerotier-tools-pytest> tests/test_generate.py::TestComputeZerotierIp::test_embeds_network_and_node PASSED [ 25%] zerotier-tools-pytest> tests/test_generate.py::TestComputeZerotierIp::test_rejects_short_network_id PASSED [ 29%] zerotier-tools-pytest> tests/test_generate.py::TestComputeZerotierIp::test_rejects_long_network_id PASSED [ 33%] zerotier-tools-pytest> tests/test_generate.py::TestCreateNetworkId::test_format PASSED [ 37%] zerotier-tools-pytest> tests/test_generate.py::TestCreateNetworkId::test_unique PASSED [ 41%] zerotier-tools-pytest> tests/test_generate.py::TestCreateNetworkId::test_rejects_zero_suffix PASSED [ 45%] zerotier-tools-pytest> tests/test_generate.py::TestCliNetworkMode::test_generates_identity_network_and_ip PASSED [ 50%] zerotier-tools-pytest> tests/test_generate.py::TestCliIdentityMode::test_generates_identity_and_derives_ip PASSED [ 54%] zerotier-tools-pytest> tests/test_generate.py::TestCliIdentityMode::test_fails_without_network_id_file PASSED [ 58%] zerotier-tools-pytest> tests/test_generate.py::TestCliComputeIpMode::test_writes_correct_output PASSED [ 62%] zerotier-tools-pytest> tests/test_generate.py::TestCliComputeIpMode::test_does_not_overwrite_identity PASSED [ 66%] zerotier-tools-pytest> tests/test_generate.py::TestCliComputeIpMode::test_fails_without_network_id_file PASSED [ 70%] zerotier-tools-pytest> tests/test_generate.py::TestCliIdentityOnlyMode::test_generates_identity_without_ip PASSED [ 75%] zerotier-tools-pytest> tests/test_generate.py::TestCliIdentityOnlyMode::test_does_not_require_ip PASSED [ 79%] zerotier-tools-pytest> tests/test_generate.py::TestCliIdentityOnlyMode::test_fails_without_identity_secret PASSED [ 83%] zerotier-tools-pytest> tests/test_generate.py::TestCliNetworkIdMode::test_derives_network_id_from_identity PASSED [ 87%] zerotier-tools-pytest> tests/test_generate.py::TestCliNetworkIdMode::test_does_not_require_ip PASSED [ 91%] zerotier-tools-pytest> tests/test_generate.py::TestCliNetworkIdMode::test_fails_without_identity_secret_file PASSED [ 95%] zerotier-tools-pytest> tests/test_generate.py::TestCliNetworkIdMode::test_fails_without_network_id PASSED [100%] zerotier-tools-pytest> zerotier-tools-pytest> ============================== 24 passed in 2.21s ============================== post-build step Upload to niks3: ok time=2026-08-27T20:06:32.750Z level=INFO msg="Uploading 0 paths to niks3.clan.lol (1 already cached)" time=2026-08-27T20:06:32.881Z level=INFO msg="Uploading 1 narinfos" time=2026-08-27T20:06:33.209Z level=INFO msg="Upload complete. (533ms)"