From ef2a2bdb67f463d83190acd8c49187c7549e2f34 Mon Sep 17 00:00:00 2001 From: DavHau Date: Wed, 20 Aug 2025 11:41:52 +0700 Subject: [PATCH] vars: improve tests for --regenerate Ensures that all generators values actually change after running with --regenerate --- pkgs/clan-cli/clan_cli/tests/test_vars.py | 38 ++++++++++++++++------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/pkgs/clan-cli/clan_cli/tests/test_vars.py b/pkgs/clan-cli/clan_cli/tests/test_vars.py index e22a64c27..998e78f79 100644 --- a/pkgs/clan-cli/clan_cli/tests/test_vars.py +++ b/pkgs/clan-cli/clan_cli/tests/test_vars.py @@ -127,7 +127,7 @@ def test_generate_public_and_secret_vars( my_generator["files"]["my_value"]["secret"] = False my_generator["files"]["my_secret"]["secret"] = True my_generator["script"] = ( - 'echo -n public > "$out"/my_value; echo -n secret > "$out"/my_secret; echo -n non-default > "$out"/value_with_default' + 'echo -n public$RANDOM > "$out"/my_value; echo -n secret$RANDOM > "$out"/my_secret; echo -n non-default$RANDOM > "$out"/value_with_default' ) my_generator["files"]["value_with_default"]["secret"] = False @@ -140,7 +140,7 @@ def test_generate_public_and_secret_vars( ] my_shared_generator["share"] = True my_shared_generator["files"]["my_shared_value"]["secret"] = False - my_shared_generator["script"] = 'echo -n shared > "$out"/my_shared_value' + my_shared_generator["script"] = 'echo -n shared$RANDOM > "$out"/my_shared_value' dependent_generator = config["clan"]["core"]["vars"]["generators"][ "dependent_generator" @@ -187,11 +187,12 @@ def test_generate_public_and_secret_vars( "Update vars via generator my_shared_generator for machine my_machine" in commit_message ) - assert get_machine_var(machine, "my_generator/my_value").printable_value == "public" - assert ( - get_machine_var(machine, "my_shared_generator/my_shared_value").printable_value - == "shared" - ) + public_value = get_machine_var(machine, "my_generator/my_value").printable_value + assert public_value.startswith("public") + shared_value = get_machine_var( + machine, "my_shared_generator/my_shared_value" + ).printable_value + assert shared_value.startswith("shared") vars_text = stringify_all_vars(machine) flake_obj = Flake(str(flake.path)) my_generator = Generator("my_generator", machine="my_machine", _flake=flake_obj) @@ -202,9 +203,10 @@ def test_generate_public_and_secret_vars( assert not in_repo_store.exists(my_generator, "my_secret") sops_store = sops.SecretStore(flake=flake_obj) assert sops_store.exists(my_generator, "my_secret") - assert sops_store.get(my_generator, "my_secret").decode() == "secret" + assert sops_store.get(my_generator, "my_secret").decode().startswith("secret") assert sops_store.exists(dependent_generator, "my_secret") - assert sops_store.get(dependent_generator, "my_secret").decode() == "shared" + secret_value = sops_store.get(dependent_generator, "my_secret").decode() + assert secret_value.startswith("shared") assert "my_generator/my_value: public" in vars_text assert "my_generator/my_secret" in vars_text @@ -215,7 +217,7 @@ def test_generate_public_and_secret_vars( ] ) ).stdout.strip() - assert json.loads(vars_eval) == "public" + assert json.loads(vars_eval).startswith("public") value_non_default = run( nix_eval( @@ -224,7 +226,8 @@ def test_generate_public_and_secret_vars( ] ) ).stdout.strip() - assert json.loads(value_non_default) == "non-default" + assert json.loads(value_non_default).startswith("non-default") + # test regeneration works cli.run( ["vars", "generate", "--flake", str(flake.path), "my_machine", "--regenerate"] @@ -241,6 +244,19 @@ def test_generate_public_and_secret_vars( "--no-sandbox", ] ) + # test stuff actually changed after regeneration + public_value_new = get_machine_var(machine, "my_generator/my_value").printable_value + assert public_value_new != public_value, "Value should change after regeneration" + secret_value_new = sops_store.get(dependent_generator, "my_secret").decode() + assert secret_value_new != secret_value, ( + "Secret value should change after regeneration" + ) + shared_value_new = get_machine_var( + machine, "my_shared_generator/my_shared_value" + ).printable_value + assert shared_value != shared_value_new, ( + "Shared value should change after regeneration" + ) # TODO: it doesn't actually test if the group has access