about summary refs log tree commit diff
path: root/tvix/derivation/src/tests
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2023-01-31T13·45+0100
committerclbot <clbot@tvl.fyi>2023-01-31T15·16+0000
commit2d24c5f260945216ca01371d4120f5d53f08b2cd (patch)
tree5053bbffefd5a41241ab6ea27fafc290e44e665f /tvix/derivation/src/tests
parent9e809e21ccb1768567fc2516c5526ad0cdd56df0 (diff)
refactor(tvix/nix-compat): absorb //tvix/derivation r/5791
Put this in its src/derivation.

Change-Id: Ic047ab1c2da555a833ee454e10ef60c77537b617
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7967
Reviewed-by: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
Autosubmit: flokli <flokli@flokli.de>
Diffstat (limited to 'tvix/derivation/src/tests')
-rw-r--r--tvix/derivation/src/tests/derivation_tests/0hm2f1psjpcwg8fijsmr4wwxrx59s092-bar.drv1
-rw-r--r--tvix/derivation/src/tests/derivation_tests/0hm2f1psjpcwg8fijsmr4wwxrx59s092-bar.drv.json23
-rw-r--r--tvix/derivation/src/tests/derivation_tests/292w8yzv5nn7nhdpxcs8b7vby2p27s09-nested-json.drv1
-rw-r--r--tvix/derivation/src/tests/derivation_tests/292w8yzv5nn7nhdpxcs8b7vby2p27s09-nested-json.drv.json19
-rw-r--r--tvix/derivation/src/tests/derivation_tests/4wvvbi4jwn0prsdxb7vs673qa5h9gr7x-foo.drv1
-rw-r--r--tvix/derivation/src/tests/derivation_tests/4wvvbi4jwn0prsdxb7vs673qa5h9gr7x-foo.drv.json23
-rw-r--r--tvix/derivation/src/tests/derivation_tests/52a9id8hx688hvlnz4d1n25ml1jdykz0-unicode.drv1
-rw-r--r--tvix/derivation/src/tests/derivation_tests/52a9id8hx688hvlnz4d1n25ml1jdykz0-unicode.drv.json19
-rw-r--r--tvix/derivation/src/tests/derivation_tests/9lj1lkjm2ag622mh4h9rpy6j607an8g2-structured-attrs.drv1
-rw-r--r--tvix/derivation/src/tests/derivation_tests/9lj1lkjm2ag622mh4h9rpy6j607an8g2-structured-attrs.drv.json16
-rw-r--r--tvix/derivation/src/tests/derivation_tests/ch49594n9avinrf8ip0aslidkc4lxkqv-foo.drv1
-rw-r--r--tvix/derivation/src/tests/derivation_tests/ch49594n9avinrf8ip0aslidkc4lxkqv-foo.drv.json23
-rw-r--r--tvix/derivation/src/tests/derivation_tests/h32dahq0bx5rp1krcdx3a53asj21jvhk-has-multi-out.drv1
-rw-r--r--tvix/derivation/src/tests/derivation_tests/h32dahq0bx5rp1krcdx3a53asj21jvhk-has-multi-out.drv.json23
-rw-r--r--tvix/derivation/src/tests/derivation_tests/ss2p4wmxijn652haqyd7dckxwl4c7hxx-bar.drv1
-rw-r--r--tvix/derivation/src/tests/derivation_tests/ss2p4wmxijn652haqyd7dckxwl4c7hxx-bar.drv.json23
-rw-r--r--tvix/derivation/src/tests/mod.rs343
17 files changed, 0 insertions, 520 deletions
diff --git a/tvix/derivation/src/tests/derivation_tests/0hm2f1psjpcwg8fijsmr4wwxrx59s092-bar.drv b/tvix/derivation/src/tests/derivation_tests/0hm2f1psjpcwg8fijsmr4wwxrx59s092-bar.drv
deleted file mode 100644
index a4fea3c5f486..000000000000
--- a/tvix/derivation/src/tests/derivation_tests/0hm2f1psjpcwg8fijsmr4wwxrx59s092-bar.drv
+++ /dev/null
@@ -1 +0,0 @@
-Derive([("out","/nix/store/4q0pg5zpfmznxscq3avycvf9xdvx50n3-bar","r:sha256","08813cbee9903c62be4c5027726a418a300da4500b2d369d3af9286f4815ceba")],[],[],":",":",[],[("builder",":"),("name","bar"),("out","/nix/store/4q0pg5zpfmznxscq3avycvf9xdvx50n3-bar"),("outputHash","08813cbee9903c62be4c5027726a418a300da4500b2d369d3af9286f4815ceba"),("outputHashAlgo","sha256"),("outputHashMode","recursive"),("system",":")])
\ No newline at end of file
diff --git a/tvix/derivation/src/tests/derivation_tests/0hm2f1psjpcwg8fijsmr4wwxrx59s092-bar.drv.json b/tvix/derivation/src/tests/derivation_tests/0hm2f1psjpcwg8fijsmr4wwxrx59s092-bar.drv.json
deleted file mode 100644
index c8bbc4cbb5be..000000000000
--- a/tvix/derivation/src/tests/derivation_tests/0hm2f1psjpcwg8fijsmr4wwxrx59s092-bar.drv.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-  "args": [],
-  "builder": ":",
-  "env": {
-    "builder": ":",
-    "name": "bar",
-    "out": "/nix/store/4q0pg5zpfmznxscq3avycvf9xdvx50n3-bar",
-    "outputHash": "08813cbee9903c62be4c5027726a418a300da4500b2d369d3af9286f4815ceba",
-    "outputHashAlgo": "sha256",
-    "outputHashMode": "recursive",
-    "system": ":"
-  },
-  "inputDrvs": {},
-  "inputSrcs": [],
-  "outputs": {
-    "out": {
-      "hash": "08813cbee9903c62be4c5027726a418a300da4500b2d369d3af9286f4815ceba",
-      "hashAlgo": "r:sha256",
-      "path": "/nix/store/4q0pg5zpfmznxscq3avycvf9xdvx50n3-bar"
-    }
-  },
-  "system": ":"
-}
diff --git a/tvix/derivation/src/tests/derivation_tests/292w8yzv5nn7nhdpxcs8b7vby2p27s09-nested-json.drv b/tvix/derivation/src/tests/derivation_tests/292w8yzv5nn7nhdpxcs8b7vby2p27s09-nested-json.drv
deleted file mode 100644
index f0d9230a5a52..000000000000
--- a/tvix/derivation/src/tests/derivation_tests/292w8yzv5nn7nhdpxcs8b7vby2p27s09-nested-json.drv
+++ /dev/null
@@ -1 +0,0 @@
-Derive([("out","/nix/store/pzr7lsd3q9pqsnb42r9b23jc5sh8irvn-nested-json","","")],[],[],":",":",[],[("builder",":"),("json","{\"hello\":\"moto\\n\"}"),("name","nested-json"),("out","/nix/store/pzr7lsd3q9pqsnb42r9b23jc5sh8irvn-nested-json"),("system",":")])
\ No newline at end of file
diff --git a/tvix/derivation/src/tests/derivation_tests/292w8yzv5nn7nhdpxcs8b7vby2p27s09-nested-json.drv.json b/tvix/derivation/src/tests/derivation_tests/292w8yzv5nn7nhdpxcs8b7vby2p27s09-nested-json.drv.json
deleted file mode 100644
index 9cb0b43b4c09..000000000000
--- a/tvix/derivation/src/tests/derivation_tests/292w8yzv5nn7nhdpxcs8b7vby2p27s09-nested-json.drv.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-  "args": [],
-  "builder": ":",
-  "env": {
-    "builder": ":",
-    "json": "{\"hello\":\"moto\\n\"}",
-    "name": "nested-json",
-    "out": "/nix/store/pzr7lsd3q9pqsnb42r9b23jc5sh8irvn-nested-json",
-    "system": ":"
-  },
-  "inputDrvs": {},
-  "inputSrcs": [],
-  "outputs": {
-    "out": {
-      "path": "/nix/store/pzr7lsd3q9pqsnb42r9b23jc5sh8irvn-nested-json"
-    }
-  },
-  "system": ":"
-}
diff --git a/tvix/derivation/src/tests/derivation_tests/4wvvbi4jwn0prsdxb7vs673qa5h9gr7x-foo.drv b/tvix/derivation/src/tests/derivation_tests/4wvvbi4jwn0prsdxb7vs673qa5h9gr7x-foo.drv
deleted file mode 100644
index a2cf9d31f92e..000000000000
--- a/tvix/derivation/src/tests/derivation_tests/4wvvbi4jwn0prsdxb7vs673qa5h9gr7x-foo.drv
+++ /dev/null
@@ -1 +0,0 @@
-Derive([("out","/nix/store/5vyvcwah9l9kf07d52rcgdk70g2f4y13-foo","","")],[("/nix/store/0hm2f1psjpcwg8fijsmr4wwxrx59s092-bar.drv",["out"])],[],":",":",[],[("bar","/nix/store/4q0pg5zpfmznxscq3avycvf9xdvx50n3-bar"),("builder",":"),("name","foo"),("out","/nix/store/5vyvcwah9l9kf07d52rcgdk70g2f4y13-foo"),("system",":")])
\ No newline at end of file
diff --git a/tvix/derivation/src/tests/derivation_tests/4wvvbi4jwn0prsdxb7vs673qa5h9gr7x-foo.drv.json b/tvix/derivation/src/tests/derivation_tests/4wvvbi4jwn0prsdxb7vs673qa5h9gr7x-foo.drv.json
deleted file mode 100644
index 957a85ccab82..000000000000
--- a/tvix/derivation/src/tests/derivation_tests/4wvvbi4jwn0prsdxb7vs673qa5h9gr7x-foo.drv.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-  "args": [],
-  "builder": ":",
-  "env": {
-    "bar": "/nix/store/4q0pg5zpfmznxscq3avycvf9xdvx50n3-bar",
-    "builder": ":",
-    "name": "foo",
-    "out": "/nix/store/5vyvcwah9l9kf07d52rcgdk70g2f4y13-foo",
-    "system": ":"
-  },
-  "inputDrvs": {
-    "/nix/store/0hm2f1psjpcwg8fijsmr4wwxrx59s092-bar.drv": [
-      "out"
-    ]
-  },
-  "inputSrcs": [],
-  "outputs": {
-    "out": {
-      "path": "/nix/store/5vyvcwah9l9kf07d52rcgdk70g2f4y13-foo"
-    }
-  },
-  "system": ":"
-}
diff --git a/tvix/derivation/src/tests/derivation_tests/52a9id8hx688hvlnz4d1n25ml1jdykz0-unicode.drv b/tvix/derivation/src/tests/derivation_tests/52a9id8hx688hvlnz4d1n25ml1jdykz0-unicode.drv
deleted file mode 100644
index bbe88c02c739..000000000000
--- a/tvix/derivation/src/tests/derivation_tests/52a9id8hx688hvlnz4d1n25ml1jdykz0-unicode.drv
+++ /dev/null
@@ -1 +0,0 @@
-Derive([("out","/nix/store/vgvdj6nf7s8kvfbl2skbpwz9kc7xjazc-unicode","","")],[],[],":",":",[],[("builder",":"),("letters","räksmörgås\nrødgrød med fløde\nLübeck\n肥猪\nこんにちは / 今日は\n🌮\n"),("name","unicode"),("out","/nix/store/vgvdj6nf7s8kvfbl2skbpwz9kc7xjazc-unicode"),("system",":")])
\ No newline at end of file
diff --git a/tvix/derivation/src/tests/derivation_tests/52a9id8hx688hvlnz4d1n25ml1jdykz0-unicode.drv.json b/tvix/derivation/src/tests/derivation_tests/52a9id8hx688hvlnz4d1n25ml1jdykz0-unicode.drv.json
deleted file mode 100644
index f8f33c1bba17..000000000000
--- a/tvix/derivation/src/tests/derivation_tests/52a9id8hx688hvlnz4d1n25ml1jdykz0-unicode.drv.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-  "outputs": {
-    "out": {
-      "path": "/nix/store/vgvdj6nf7s8kvfbl2skbpwz9kc7xjazc-unicode"
-    }
-  },
-  "inputSrcs": [],
-  "inputDrvs": {},
-  "system": ":",
-  "builder": ":",
-  "args": [],
-  "env": {
-    "builder": ":",
-    "letters": "räksmörgås\nrødgrød med fløde\nLübeck\n肥猪\nこんにちは / 今日は\n🌮\n",
-    "name": "unicode",
-    "out": "/nix/store/vgvdj6nf7s8kvfbl2skbpwz9kc7xjazc-unicode",
-    "system": ":"
-  }
-}
diff --git a/tvix/derivation/src/tests/derivation_tests/9lj1lkjm2ag622mh4h9rpy6j607an8g2-structured-attrs.drv b/tvix/derivation/src/tests/derivation_tests/9lj1lkjm2ag622mh4h9rpy6j607an8g2-structured-attrs.drv
deleted file mode 100644
index 4b9338c0b953..000000000000
--- a/tvix/derivation/src/tests/derivation_tests/9lj1lkjm2ag622mh4h9rpy6j607an8g2-structured-attrs.drv
+++ /dev/null
@@ -1 +0,0 @@
-Derive([("out","/nix/store/6a39dl014j57bqka7qx25k0vb20vkqm6-structured-attrs","","")],[],[],":",":",[],[("__json","{\"builder\":\":\",\"name\":\"structured-attrs\",\"system\":\":\"}"),("out","/nix/store/6a39dl014j57bqka7qx25k0vb20vkqm6-structured-attrs")])
\ No newline at end of file
diff --git a/tvix/derivation/src/tests/derivation_tests/9lj1lkjm2ag622mh4h9rpy6j607an8g2-structured-attrs.drv.json b/tvix/derivation/src/tests/derivation_tests/9lj1lkjm2ag622mh4h9rpy6j607an8g2-structured-attrs.drv.json
deleted file mode 100644
index 74e3d7df55c5..000000000000
--- a/tvix/derivation/src/tests/derivation_tests/9lj1lkjm2ag622mh4h9rpy6j607an8g2-structured-attrs.drv.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "args": [],
-  "builder": ":",
-  "env": {
-    "__json": "{\"builder\":\":\",\"name\":\"structured-attrs\",\"system\":\":\"}",
-    "out": "/nix/store/6a39dl014j57bqka7qx25k0vb20vkqm6-structured-attrs"
-  },
-  "inputDrvs": {},
-  "inputSrcs": [],
-  "outputs": {
-    "out": {
-      "path": "/nix/store/6a39dl014j57bqka7qx25k0vb20vkqm6-structured-attrs"
-    }
-  },
-  "system": ":"
-}
diff --git a/tvix/derivation/src/tests/derivation_tests/ch49594n9avinrf8ip0aslidkc4lxkqv-foo.drv b/tvix/derivation/src/tests/derivation_tests/ch49594n9avinrf8ip0aslidkc4lxkqv-foo.drv
deleted file mode 100644
index 1699c2a75e48..000000000000
--- a/tvix/derivation/src/tests/derivation_tests/ch49594n9avinrf8ip0aslidkc4lxkqv-foo.drv
+++ /dev/null
@@ -1 +0,0 @@
-Derive([("out","/nix/store/fhaj6gmwns62s6ypkcldbaj2ybvkhx3p-foo","","")],[("/nix/store/ss2p4wmxijn652haqyd7dckxwl4c7hxx-bar.drv",["out"])],[],":",":",[],[("bar","/nix/store/mp57d33657rf34lzvlbpfa1gjfv5gmpg-bar"),("builder",":"),("name","foo"),("out","/nix/store/fhaj6gmwns62s6ypkcldbaj2ybvkhx3p-foo"),("system",":")])
\ No newline at end of file
diff --git a/tvix/derivation/src/tests/derivation_tests/ch49594n9avinrf8ip0aslidkc4lxkqv-foo.drv.json b/tvix/derivation/src/tests/derivation_tests/ch49594n9avinrf8ip0aslidkc4lxkqv-foo.drv.json
deleted file mode 100644
index 831d27956d86..000000000000
--- a/tvix/derivation/src/tests/derivation_tests/ch49594n9avinrf8ip0aslidkc4lxkqv-foo.drv.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-  "args": [],
-  "builder": ":",
-  "env": {
-    "bar": "/nix/store/mp57d33657rf34lzvlbpfa1gjfv5gmpg-bar",
-    "builder": ":",
-    "name": "foo",
-    "out": "/nix/store/fhaj6gmwns62s6ypkcldbaj2ybvkhx3p-foo",
-    "system": ":"
-  },
-  "inputDrvs": {
-    "/nix/store/ss2p4wmxijn652haqyd7dckxwl4c7hxx-bar.drv": [
-      "out"
-    ]
-  },
-  "inputSrcs": [],
-  "outputs": {
-    "out": {
-      "path": "/nix/store/fhaj6gmwns62s6ypkcldbaj2ybvkhx3p-foo"
-    }
-  },
-  "system": ":"
-}
diff --git a/tvix/derivation/src/tests/derivation_tests/h32dahq0bx5rp1krcdx3a53asj21jvhk-has-multi-out.drv b/tvix/derivation/src/tests/derivation_tests/h32dahq0bx5rp1krcdx3a53asj21jvhk-has-multi-out.drv
deleted file mode 100644
index 523612238c76..000000000000
--- a/tvix/derivation/src/tests/derivation_tests/h32dahq0bx5rp1krcdx3a53asj21jvhk-has-multi-out.drv
+++ /dev/null
@@ -1 +0,0 @@
-Derive([("lib","/nix/store/2vixb94v0hy2xc6p7mbnxxcyc095yyia-has-multi-out-lib","",""),("out","/nix/store/55lwldka5nyxa08wnvlizyqw02ihy8ic-has-multi-out","","")],[],[],":",":",[],[("builder",":"),("lib","/nix/store/2vixb94v0hy2xc6p7mbnxxcyc095yyia-has-multi-out-lib"),("name","has-multi-out"),("out","/nix/store/55lwldka5nyxa08wnvlizyqw02ihy8ic-has-multi-out"),("outputs","out lib"),("system",":")])
\ No newline at end of file
diff --git a/tvix/derivation/src/tests/derivation_tests/h32dahq0bx5rp1krcdx3a53asj21jvhk-has-multi-out.drv.json b/tvix/derivation/src/tests/derivation_tests/h32dahq0bx5rp1krcdx3a53asj21jvhk-has-multi-out.drv.json
deleted file mode 100644
index 0bd7a2991cc7..000000000000
--- a/tvix/derivation/src/tests/derivation_tests/h32dahq0bx5rp1krcdx3a53asj21jvhk-has-multi-out.drv.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-  "args": [],
-  "builder": ":",
-  "env": {
-    "builder": ":",
-    "lib": "/nix/store/2vixb94v0hy2xc6p7mbnxxcyc095yyia-has-multi-out-lib",
-    "name": "has-multi-out",
-    "out": "/nix/store/55lwldka5nyxa08wnvlizyqw02ihy8ic-has-multi-out",
-    "outputs": "out lib",
-    "system": ":"
-  },
-  "inputDrvs": {},
-  "inputSrcs": [],
-  "outputs": {
-    "lib": {
-      "path": "/nix/store/2vixb94v0hy2xc6p7mbnxxcyc095yyia-has-multi-out-lib"
-    },
-    "out": {
-      "path": "/nix/store/55lwldka5nyxa08wnvlizyqw02ihy8ic-has-multi-out"
-    }
-  },
-  "system": ":"
-}
diff --git a/tvix/derivation/src/tests/derivation_tests/ss2p4wmxijn652haqyd7dckxwl4c7hxx-bar.drv b/tvix/derivation/src/tests/derivation_tests/ss2p4wmxijn652haqyd7dckxwl4c7hxx-bar.drv
deleted file mode 100644
index 559e93ed0ed6..000000000000
--- a/tvix/derivation/src/tests/derivation_tests/ss2p4wmxijn652haqyd7dckxwl4c7hxx-bar.drv
+++ /dev/null
@@ -1 +0,0 @@
-Derive([("out","/nix/store/mp57d33657rf34lzvlbpfa1gjfv5gmpg-bar","r:sha1","0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33")],[],[],":",":",[],[("builder",":"),("name","bar"),("out","/nix/store/mp57d33657rf34lzvlbpfa1gjfv5gmpg-bar"),("outputHash","0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33"),("outputHashAlgo","sha1"),("outputHashMode","recursive"),("system",":")])
\ No newline at end of file
diff --git a/tvix/derivation/src/tests/derivation_tests/ss2p4wmxijn652haqyd7dckxwl4c7hxx-bar.drv.json b/tvix/derivation/src/tests/derivation_tests/ss2p4wmxijn652haqyd7dckxwl4c7hxx-bar.drv.json
deleted file mode 100644
index e297d271592f..000000000000
--- a/tvix/derivation/src/tests/derivation_tests/ss2p4wmxijn652haqyd7dckxwl4c7hxx-bar.drv.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-  "args": [],
-  "builder": ":",
-  "env": {
-    "builder": ":",
-    "name": "bar",
-    "out": "/nix/store/mp57d33657rf34lzvlbpfa1gjfv5gmpg-bar",
-    "outputHash": "0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33",
-    "outputHashAlgo": "sha1",
-    "outputHashMode": "recursive",
-    "system": ":"
-  },
-  "inputDrvs": {},
-  "inputSrcs": [],
-  "outputs": {
-    "out": {
-      "hash": "0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33",
-      "hashAlgo": "r:sha1",
-      "path": "/nix/store/mp57d33657rf34lzvlbpfa1gjfv5gmpg-bar"
-    }
-  },
-  "system": ":"
-}
diff --git a/tvix/derivation/src/tests/mod.rs b/tvix/derivation/src/tests/mod.rs
deleted file mode 100644
index 2906bae1f76a..000000000000
--- a/tvix/derivation/src/tests/mod.rs
+++ /dev/null
@@ -1,343 +0,0 @@
-use crate::derivation::Derivation;
-use crate::output::{Hash, Output};
-use nix_compat::store_path::StorePath;
-use std::collections::BTreeSet;
-use std::fs::File;
-use std::io::Read;
-use std::path::Path;
-use test_case::test_case;
-use test_generator::test_resources;
-
-const RESOURCES_PATHS: &str = "src/tests/derivation_tests";
-
-fn read_file(path: &str) -> String {
-    let path = Path::new(path);
-    let mut file = File::open(path).unwrap();
-    let mut data = String::new();
-
-    file.read_to_string(&mut data).unwrap();
-
-    return data;
-}
-
-#[test_resources("src/tests/derivation_tests/*.drv")]
-fn check_serizaliation(path_to_drv_file: &str) {
-    let data = read_file(&format!("{}.json", path_to_drv_file));
-    let derivation: Derivation = serde_json::from_str(&data).expect("JSON was not well-formatted");
-
-    let mut serialized_derivation = String::new();
-    derivation.serialize(&mut serialized_derivation).unwrap();
-
-    let expected = read_file(path_to_drv_file);
-
-    assert_eq!(expected, serialized_derivation);
-}
-
-#[test_resources("src/tests/derivation_tests/*.drv")]
-fn validate(path_to_drv_file: &str) {
-    let data = read_file(&format!("{}.json", path_to_drv_file));
-    let derivation: Derivation = serde_json::from_str(&data).expect("JSON was not well-formatted");
-
-    derivation
-        .validate(true)
-        .expect("derivation failed to validate")
-}
-
-#[test_resources("src/tests/derivation_tests/*.drv")]
-fn check_to_string(path_to_drv_file: &str) {
-    let data = read_file(&format!("{}.json", path_to_drv_file));
-    let derivation: Derivation = serde_json::from_str(&data).expect("JSON was not well-formatted");
-
-    let expected = read_file(path_to_drv_file);
-
-    assert_eq!(expected, derivation.to_string());
-}
-
-#[test_case("bar","0hm2f1psjpcwg8fijsmr4wwxrx59s092-bar.drv"; "fixed_sha256")]
-#[test_case("foo", "4wvvbi4jwn0prsdxb7vs673qa5h9gr7x-foo.drv"; "simple-sha256")]
-#[test_case("bar", "ss2p4wmxijn652haqyd7dckxwl4c7hxx-bar.drv"; "fixed-sha1")]
-#[test_case("foo", "ch49594n9avinrf8ip0aslidkc4lxkqv-foo.drv"; "simple-sha1")]
-#[test_case("has-multi-out", "h32dahq0bx5rp1krcdx3a53asj21jvhk-has-multi-out.drv"; "multiple-outputs")]
-#[test_case("structured-attrs", "9lj1lkjm2ag622mh4h9rpy6j607an8g2-structured-attrs.drv"; "structured-attrs")]
-#[test_case("unicode", "52a9id8hx688hvlnz4d1n25ml1jdykz0-unicode.drv"; "unicode")]
-fn derivation_path(name: &str, expected_path: &str) {
-    let data = read_file(&format!("{}/{}.json", RESOURCES_PATHS, expected_path));
-    let derivation: Derivation = serde_json::from_str(&data).expect("JSON was not well-formatted");
-
-    assert_eq!(
-        derivation.calculate_derivation_path(name).unwrap(),
-        StorePath::from_string(expected_path).unwrap()
-    );
-}
-
-/// This trims all outputs from a Derivation struct,
-/// by setting outputs[$outputName].path and environment[$outputName] to the empty string.
-fn derivation_with_trimmed_outputs(derivation: &Derivation) -> Derivation {
-    let mut trimmed_env = derivation.environment.clone();
-    let mut trimmed_outputs = derivation.outputs.clone();
-
-    for (output_name, output) in &derivation.outputs {
-        trimmed_env.insert(output_name.clone(), "".to_string());
-        assert!(trimmed_outputs.contains_key(output_name));
-        trimmed_outputs.insert(
-            output_name.to_string(),
-            Output {
-                path: "".to_string(),
-                ..output.clone()
-            },
-        );
-    }
-
-    // replace environment and outputs with the trimmed variants
-    Derivation {
-        environment: trimmed_env,
-        outputs: trimmed_outputs,
-        ..derivation.clone()
-    }
-}
-
-#[test_case("0hm2f1psjpcwg8fijsmr4wwxrx59s092-bar.drv", "724f3e3634fce4cbbbd3483287b8798588e80280660b9a63fd13a1bc90485b33"; "fixed_sha256")]
-#[test_case("ss2p4wmxijn652haqyd7dckxwl4c7hxx-bar.drv", "c79aebd0ce3269393d4a1fde2cbd1d975d879b40f0bf40a48f550edc107fd5df";"fixed-sha1")]
-fn replacement_drv_path(drv_path: &str, expected_replacement_str: &str) {
-    // read in the fixture
-    let data = read_file(&format!("{}/{}.json", RESOURCES_PATHS, drv_path));
-    let drv: Derivation = serde_json::from_str(&data).expect("must deserialize");
-
-    let drv_replacement_str = drv.calculate_drv_replacement_str(|_| panic!("must not be called"));
-
-    assert_eq!(expected_replacement_str, drv_replacement_str);
-}
-
-#[test_case("bar","0hm2f1psjpcwg8fijsmr4wwxrx59s092-bar.drv"; "fixed_sha256")]
-#[test_case("foo", "4wvvbi4jwn0prsdxb7vs673qa5h9gr7x-foo.drv"; "simple-sha256")]
-#[test_case("bar", "ss2p4wmxijn652haqyd7dckxwl4c7hxx-bar.drv"; "fixed-sha1")]
-#[test_case("foo", "ch49594n9avinrf8ip0aslidkc4lxkqv-foo.drv"; "simple-sha1")]
-#[test_case("has-multi-out", "h32dahq0bx5rp1krcdx3a53asj21jvhk-has-multi-out.drv"; "multiple-outputs")]
-#[test_case("structured-attrs", "9lj1lkjm2ag622mh4h9rpy6j607an8g2-structured-attrs.drv"; "structured-attrs")]
-#[test_case("unicode", "52a9id8hx688hvlnz4d1n25ml1jdykz0-unicode.drv"; "unicode")]
-fn output_paths(name: &str, drv_path: &str) {
-    // read in the fixture
-    let data = read_file(&format!("{}/{}.json", RESOURCES_PATHS, drv_path));
-    let expected_derivation: Derivation = serde_json::from_str(&data).expect("must deserialize");
-
-    let mut derivation = derivation_with_trimmed_outputs(&expected_derivation);
-
-    // calculate the drv replacement string.
-    // We don't expect the lookup function to be called for most derivations.
-    let replacement_str = derivation.calculate_drv_replacement_str(|drv_name| {
-        // 4wvvbi4jwn0prsdxb7vs673qa5h9gr7x-foo.drv may lookup /nix/store/0hm2f1psjpcwg8fijsmr4wwxrx59s092-bar.drv
-        // ch49594n9avinrf8ip0aslidkc4lxkqv-foo.drv may lookup /nix/store/ss2p4wmxijn652haqyd7dckxwl4c7hxx-bar.drv
-        if name == "foo"
-            && ((drv_path == "4wvvbi4jwn0prsdxb7vs673qa5h9gr7x-foo.drv"
-                && drv_name == "/nix/store/0hm2f1psjpcwg8fijsmr4wwxrx59s092-bar.drv")
-                || (drv_path == "ch49594n9avinrf8ip0aslidkc4lxkqv-foo.drv"
-                    && drv_name == "/nix/store/ss2p4wmxijn652haqyd7dckxwl4c7hxx-bar.drv"))
-        {
-            // do the lookup, by reading in the fixture of the requested
-            // drv_name, and calculating its drv replacement (on the non-stripped version)
-            // In a real-world scenario you would have already done this during construction.
-
-            let data = read_file(&format!(
-                "{}/{}.json",
-                RESOURCES_PATHS,
-                Path::new(drv_name).file_name().unwrap().to_string_lossy()
-            ));
-
-            let drv: Derivation = serde_json::from_str(&data).expect("must deserialize");
-
-            // calculate replacement string. These don't trigger any subsequent requests, as they're both FOD.
-            drv.calculate_drv_replacement_str(|_| panic!("must not lookup"))
-        } else {
-            // we only expect this to be called in the "foo" testcase, for the "bar derivations"
-            panic!("may only be called for foo testcase on bar derivations");
-        }
-    });
-
-    // We need to calculate the replacement_str, as fixed-sha1 does use it.
-    derivation
-        .calculate_output_paths(&name, &replacement_str)
-        .unwrap();
-
-    // The derivation should now look like it was before
-    assert_eq!(expected_derivation, derivation);
-}
-
-/// Exercises the output path calculation functions like a constructing client
-/// (an implementation of builtins.derivation) would do:
-///
-/// ```nix
-/// rec {
-///   bar = builtins.derivation {
-///     name = "bar";
-///     builder = ":";
-///     system = ":";
-///     outputHash = "08813cbee9903c62be4c5027726a418a300da4500b2d369d3af9286f4815ceba";
-///     outputHashAlgo = "sha256";
-///     outputHashMode = "recursive";
-///   };
-///
-///   foo = builtins.derivation {
-///     name = "foo";
-///     builder = ":";
-///     system = ":";
-///     inherit bar;
-///   };
-/// }
-/// ```
-/// It first assembles the bar derivation, does the output path calculation on
-/// it, then continues with the foo derivation.
-///
-/// The code ensures the resulting Derivations match our fixtures.
-#[test]
-fn output_path_construction() {
-    // create the bar derivation
-    let mut bar_drv = Derivation {
-        builder: ":".to_string(),
-        system: ":".to_string(),
-        ..Default::default()
-    };
-
-    // assemble bar env
-    let bar_env = &mut bar_drv.environment;
-    bar_env.insert("builder".to_string(), ":".to_string());
-    bar_env.insert("name".to_string(), "bar".to_string());
-    bar_env.insert("out".to_string(), "".to_string()); // will be calculated
-    bar_env.insert(
-        "outputHash".to_string(),
-        "08813cbee9903c62be4c5027726a418a300da4500b2d369d3af9286f4815ceba".to_string(),
-    );
-    bar_env.insert("outputHashAlgo".to_string(), "sha256".to_string());
-    bar_env.insert("outputHashMode".to_string(), "recursive".to_string());
-    bar_env.insert("system".to_string(), ":".to_string());
-
-    // assemble bar outputs
-    bar_drv.outputs.insert(
-        "out".to_string(),
-        Output {
-            path: "".to_string(), // will be calculated
-            hash: Some(Hash {
-                digest: "08813cbee9903c62be4c5027726a418a300da4500b2d369d3af9286f4815ceba"
-                    .to_string(),
-                algo: "r:sha256".to_string(),
-            }),
-        },
-    );
-
-    // calculate bar output paths
-    let bar_calc_result = bar_drv.calculate_output_paths(
-        "bar",
-        &bar_drv.calculate_drv_replacement_str(|_| panic!("is FOD, should not lookup")),
-    );
-    assert!(bar_calc_result.is_ok());
-
-    // ensure it matches our bar fixture
-    let bar_data = read_file(&format!(
-        "{}/{}.json",
-        RESOURCES_PATHS, "0hm2f1psjpcwg8fijsmr4wwxrx59s092-bar.drv"
-    ));
-    let bar_drv_expected: Derivation = serde_json::from_str(&bar_data).expect("must deserialize");
-    assert_eq!(bar_drv_expected, bar_drv);
-
-    // now construct foo, which requires bar_drv
-    // Note how we refer to the output path, drv name and replacement_str (with calculated output paths) of bar.
-    let bar_output_path = &bar_drv.outputs.get("out").expect("must exist").path;
-    let bar_drv_replacement_str =
-        &bar_drv.calculate_drv_replacement_str(|_| panic!("is FOD, should not lookup"));
-
-    let bar_drv_path = bar_drv
-        .calculate_derivation_path("bar")
-        .expect("must succeed");
-
-    // create foo derivation
-    let mut foo_drv = Derivation {
-        builder: ":".to_string(),
-        system: ":".to_string(),
-        ..Default::default()
-    };
-
-    // assemble foo env
-    let foo_env = &mut foo_drv.environment;
-    foo_env.insert("bar".to_string(), bar_output_path.to_string());
-    foo_env.insert("builder".to_string(), ":".to_string());
-    foo_env.insert("name".to_string(), "foo".to_string());
-    foo_env.insert("out".to_string(), "".to_string()); // will be calculated
-    foo_env.insert("system".to_string(), ":".to_string());
-
-    // asssemble foo outputs
-    foo_drv.outputs.insert(
-        "out".to_string(),
-        Output {
-            path: "".to_string(), // will be calculated
-            hash: None,
-        },
-    );
-
-    // assemble foo input_derivations
-    foo_drv.input_derivations.insert(
-        bar_drv_path.to_absolute_path(),
-        BTreeSet::from(["out".to_string()]),
-    );
-
-    // calculate foo output paths
-    let foo_calc_result = foo_drv.calculate_output_paths(
-        "foo",
-        &foo_drv.calculate_drv_replacement_str(|drv_name| {
-            if drv_name != "/nix/store/0hm2f1psjpcwg8fijsmr4wwxrx59s092-bar.drv" {
-                panic!("lookup called with unexpected drv_name: {}", drv_name);
-            }
-            bar_drv_replacement_str.clone()
-        }),
-    );
-    assert!(foo_calc_result.is_ok());
-
-    // ensure it matches our foo fixture
-    let foo_data = read_file(&format!(
-        "{}/{}.json",
-        RESOURCES_PATHS, "4wvvbi4jwn0prsdxb7vs673qa5h9gr7x-foo.drv",
-    ));
-    let foo_drv_expected: Derivation = serde_json::from_str(&foo_data).expect("must deserialize");
-    assert_eq!(foo_drv_expected, foo_drv);
-
-    assert_eq!(
-        StorePath::from_string("4wvvbi4jwn0prsdxb7vs673qa5h9gr7x-foo.drv").expect("must succeed"),
-        foo_drv
-            .calculate_derivation_path("foo")
-            .expect("must succeed")
-    );
-}
-
-#[test]
-fn path_with_zero_references() {
-    // This hash should match `builtins.toFile`, e.g.:
-    //
-    // nix-repl> builtins.toFile "foo" "bar"
-    // "/nix/store/vxjiwkjkn7x4079qvh1jkl5pn05j2aw0-foo"
-
-    let store_path = crate::path_with_references("foo", "bar", Vec::<String>::new())
-        .expect("path_with_references() should succeed");
-
-    assert_eq!(
-        store_path.to_absolute_path().as_str(),
-        "/nix/store/vxjiwkjkn7x4079qvh1jkl5pn05j2aw0-foo"
-    );
-}
-
-#[test]
-fn path_with_non_zero_references() {
-    // This hash should match:
-    //
-    // nix-repl> builtins.toFile "baz" "${builtins.toFile "foo" "bar"}"
-    // "/nix/store/5xd714cbfnkz02h2vbsj4fm03x3f15nf-baz"
-
-    let inner = crate::path_with_references("foo", "bar", Vec::<String>::new())
-        .expect("path_with_references() should succeed");
-    let inner_path = inner.to_absolute_path();
-
-    let outer = crate::path_with_references("baz", &inner_path, vec![inner_path.as_str()])
-        .expect("path_with_references() should succeed");
-
-    assert_eq!(
-        outer.to_absolute_path().as_str(),
-        "/nix/store/5xd714cbfnkz02h2vbsj4fm03x3f15nf-baz"
-    );
-}