1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-11-08 11:36:03 +01:00

refactor(tests/nixos/s3-binary-cache-store): add verify_packages_in_store helper

This commit is contained in:
Bernardo Meurer Costa 2025-10-19 00:21:46 +00:00
parent 55ea3d3476
commit d9c808f8a7
No known key found for this signature in database

View file

@ -131,6 +131,22 @@ in
print(output) print(output)
raise Exception(f"{error_msg}: expected {expected}, got {actual}") raise Exception(f"{error_msg}: expected {expected}, got {actual}")
def verify_packages_in_store(machine, pkg_paths, should_exist=True):
"""
Verify whether packages exist in the store.
Args:
machine: The machine to check on
pkg_paths: List of package paths to check (or single path)
should_exist: If True, verify packages exist; if False, verify they don't
"""
paths = [pkg_paths] if isinstance(pkg_paths, str) else pkg_paths
for pkg in paths:
if should_exist:
machine.succeed(f"nix path-info {pkg}")
else:
machine.fail(f"nix path-info {pkg}")
def setup_s3(populate_bucket=[], public=False): def setup_s3(populate_bucket=[], public=False):
""" """
Decorator that creates/destroys a unique bucket for each test. Decorator that creates/destroys a unique bucket for each test.
@ -321,7 +337,7 @@ in
print(f" Store URL: {store_info['url']}") print(f" Store URL: {store_info['url']}")
# Test copy from store # Test copy from store
client.fail(f"nix path-info {PKGS['A']}") verify_packages_in_store(client, PKGS['A'], should_exist=False)
output = client.succeed( output = client.succeed(
f"{ENV_WITH_CREDS} nix copy --debug --no-check-sigs " f"{ENV_WITH_CREDS} nix copy --debug --no-check-sigs "
@ -335,7 +351,7 @@ in
"Client credential provider caching failed" "Client credential provider caching failed"
) )
client.succeed(f"nix path-info {PKGS['A']}") verify_packages_in_store(client, [PKGS['A'], PKGS['B'], PKGS['C']])
print(" nix copy works") print(" nix copy works")
print(" Credentials cached on client") print(" Credentials cached on client")
@ -361,8 +377,7 @@ in
print(f" Store URL: {store_info['url']}") print(f" Store URL: {store_info['url']}")
# Verify packages are not yet in client store # Verify packages are not yet in client store
client.fail(f"nix path-info {PKGS['A']}") verify_packages_in_store(client, [PKGS['A'], PKGS['B']], should_exist=False)
client.fail(f"nix path-info {PKGS['B']}")
# Test copy from public bucket without credentials # Test copy from public bucket without credentials
client.succeed( client.succeed(
@ -371,8 +386,7 @@ in
) )
# Verify packages were copied successfully # Verify packages were copied successfully
client.succeed(f"nix path-info {PKGS['A']}") verify_packages_in_store(client, [PKGS['A'], PKGS['B']])
client.succeed(f"nix path-info {PKGS['B']}")
print(" nix copy from public bucket works without credentials") print(" nix copy from public bucket works without credentials")
@ -475,7 +489,7 @@ in
# Verify client can download and decompress # Verify client can download and decompress
client.succeed(f"{ENV_WITH_CREDS} nix copy --from '{store_url}' --no-check-sigs {PKGS['B']}") client.succeed(f"{ENV_WITH_CREDS} nix copy --from '{store_url}' --no-check-sigs {PKGS['B']}")
client.succeed(f"nix path-info {PKGS['B']}") verify_packages_in_store(client, PKGS['B'])
print(" Client decompressed .narinfo successfully") print(" Client decompressed .narinfo successfully")
@ -503,7 +517,7 @@ in
# Verify client can download with mixed compression # Verify client can download with mixed compression
client.succeed(f"{ENV_WITH_CREDS} nix copy --from '{store_url}' --no-check-sigs {PKGS['C']}") client.succeed(f"{ENV_WITH_CREDS} nix copy --from '{store_url}' --no-check-sigs {PKGS['C']}")
client.succeed(f"nix path-info {PKGS['C']}") verify_packages_in_store(client, PKGS['C'])
print(" Client downloaded package with mixed compression") print(" Client downloaded package with mixed compression")