about summary refs log tree commit diff
path: root/tvix/boot/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tvix/boot/tests')
-rw-r--r--tvix/boot/tests/default.nix35
1 files changed, 35 insertions, 0 deletions
diff --git a/tvix/boot/tests/default.nix b/tvix/boot/tests/default.nix
new file mode 100644
index 000000000000..d725a7ac9bb7
--- /dev/null
+++ b/tvix/boot/tests/default.nix
@@ -0,0 +1,35 @@
+{ depot, pkgs, ... }:
+
+depot.nix.readTree.drvTargets {
+  # Seed a tvix-store with the tvix docs, then start a VM, ask it to list all
+  # files in /nix/store, and ensure the store path is present, which acts as a
+  # nice smoketest.
+  docs = pkgs.stdenv.mkDerivation {
+    name = "run-vm";
+    nativeBuildInputs = [
+      depot.tvix.store
+      depot.tvix.boot.runVM
+    ];
+    buildCommand = ''
+      touch $out
+
+      # Configure tvix to put data in the local working directory
+      export BLOB_SERVICE_ADDR=sled://$PWD/blobs.sled
+      export DIRECTORY_SERVICE_ADDR=sled://$PWD/directories.sled
+      export PATH_INFO_SERVICE_ADDR=sled://$PWD/pathinfo.sled
+
+      # Seed the tvix store with some data
+      # Create a `docs` directory with the contents from ../docs
+      # Make sure it still is called "docs" when calling import, so we can
+      # predict the store path.
+      cp -R ${../../docs} docs
+      outpath=$(tvix-store import docs)
+
+      echo "Store contents imported to $outpath"
+
+      CH_CMDLINE="tvix.find" run-tvix-vm 2>&1 | tee output.txt
+      grep ${../../docs} output.txt
+    '';
+    requiredSystemFeatures = [ "kvm" ];
+  };
+}