about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2023-09-15T12·34+0200
committerflokli <flokli@flokli.de>2023-09-15T21·00+0000
commit3816eaa5e91cf2cffd4f8d04a2faf31c7f646265 (patch)
tree11820bb9dd522ef33a5f41504c536c17456d8fdf
parent32f2f8b6182c5eec15acb59ced371e0adfa41db2 (diff)
feat(tvix/store): add simple integration test r/6596
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 <tvl@lahfa.xyz>
Tested-by: BuildkiteCI
Reviewed-by: Connor Brewster <cbrewster@hey.com>
-rw-r--r--tvix/store/default.nix32
1 files changed, 29 insertions, 3 deletions
diff --git a/tvix/store/default.nix b/tvix/store/default.nix
index ec04629ab2..e324866a7f 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);
+  };
+})