From 3816eaa5e91cf2cffd4f8d04a2faf31c7f646265 Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Fri, 15 Sep 2023 14:34:48 +0200 Subject: [PATCH] feat(tvix/store): add simple integration test This imports the docs folder into the tvix store, and ensures it comes up with the same store path as Nix. While we validate hashes in general through tvix-cli output path checks already, it doesn't include the tvix-store CLI itself. See https://cl.tvl.fyi/c/depot/+/9329/comment/339f0720_524f0104/ for context. Change-Id: I239ce5b6a07cb962b242142ab716693359b8674c Reviewed-on: https://cl.tvl.fyi/c/depot/+/9338 Reviewed-by: raitobezarius Tested-by: BuildkiteCI Reviewed-by: Connor Brewster --- tvix/store/default.nix | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/tvix/store/default.nix b/tvix/store/default.nix index ec04629ab..e324866a7 100644 --- a/tvix/store/default.nix +++ b/tvix/store/default.nix @@ -1,5 +1,31 @@ -{ depot, ... }: +{ depot, pkgs, ... }: -depot.tvix.crates.workspaceMembers.tvix-store.build.override { +let + mkImportCheck = p: expectedPath: { + label = ":nix :import ${p} with tvix-store import"; + needsOutput = true; + command = pkgs.writeShellScript "tvix-import-check" '' + export BLOB_SERVICE_ADDR=memory:// + export DIRECTORY_SERVICE_ADDR=memory:// + export PATH_INFO_SERVICE_ADDR=memory:// + TVIX_STORE_OUTPUT=$(result/bin/tvix-store import ${p}) + EXPECTED='${/* the vebatim expected Tvix output: */expectedPath}' + + echo "tvix-store output: ''${TVIX_STORE_OUTPUT}" + if [ "$TVIX_STORE_OUTPUT" != "$EXPECTED" ]; then + echo "Correct would have been ''${EXPECTED}" + exit 1 + fi + + echo "Output was correct." + ''; + }; +in + +(depot.tvix.crates.workspaceMembers.tvix-store.build.override { runTests = true; -} +}).overrideAttrs (_: { + meta.ci.extraSteps = { + import-docs = (mkImportCheck "tvix/store/docs" ./docs); + }; +})