about summary refs log tree commit diff
path: root/users/zseri/store-ref-scanner/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'users/zseri/store-ref-scanner/default.nix')
-rw-r--r--users/zseri/store-ref-scanner/default.nix50
1 files changed, 47 insertions, 3 deletions
diff --git a/users/zseri/store-ref-scanner/default.nix b/users/zseri/store-ref-scanner/default.nix
index b78cbfbc6588..38f3fd64ecd7 100644
--- a/users/zseri/store-ref-scanner/default.nix
+++ b/users/zseri/store-ref-scanner/default.nix
@@ -1,5 +1,49 @@
-{ depot, pkgs, ... }:
+{ depot, lib, pkgs, ... }:
+
+let
+  sourceFilter = name: type:
+    let
+      baseName = builtins.baseNameOf (builtins.toString name);
+    in
+    (baseName == "Cargo.toml")
+    || (type == "directory" && baseName == "src")
+    || (lib.hasSuffix ".rs" baseName)
+  ;
+in
+
+pkgs.buildRustCrate rec {
+  pname = "store-ref-scanner";
+  crateName = "store-ref-scanner";
+  version = "0.1.0";
+  edition = "2021";
+  src = lib.cleanSourceWith { filter = sourceFilter; src = ./.; };
+
+  passthru.tests = pkgs.buildRustCrate {
+    pname = "store-ref-scanner-tests";
+    inherit crateName src version edition;
+    buildTests = true;
+    postInstall = ''
+      set -ex
+      export RUST_BACKTRACE=1
+      # recreate a file hierarchy as when running tests with cargo
+      # the source for test data
+      # build outputs
+      testRoot=target/debug
+      mkdir -p $testRoot
+      chmod +w -R .
+      # test harness executables are suffixed with a hash,
+      # like cargo does this allows to prevent name collision
+      # with the main executables of the crate
+      hash=$(basename $out)
+      ls -lasR $out
+      for file in $out/tests/*; do
+        f=$testRoot/$(basename $file)-$hash
+        cp $file $f
+        $f 2>&1 | tee -a $out/tests.log
+      done
+      rm -rf $out/tests
+      set +ex
+    '';
+  };
 
-(import ./Cargo.nix { inherit pkgs; }).rootCrate.build.override {
-  runTests = true;
 }