about summary refs log tree commit diff
path: root/third_party/nix/src/tests
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2020-07-18T23·27+0100
committertazjin <mail@tazj.in>2020-07-19T00·49+0000
commita802b4b44d4c25fc759812771042553190e853e2 (patch)
tree85ed17d674479c8af60b37e41818b117bb08e2cc /third_party/nix/src/tests
parent989537f972531ab321994e3691312617e343aee4 (diff)
fix(3p/nix/tests): Fail DummyStore::addToStore on non-existent srcPath r/1389
Unfortunately, to guarantee correct behaviour of some evaluation (!)
tests, addToStore needs to actually check whether passed in source
files exist and fail appropriately.

There is a chance that the dependency on this behaviour is actually a
bug in the upstream test suite, but my attempts at finding out more
about this from, say, the git history have so far been unsuccessful.

Change-Id: I311999ea28fcedf5da13a4e627b1c1c8e4e59cbd
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1276
Reviewed-by: isomer <isomer@tvl.fyi>
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
Diffstat (limited to 'third_party/nix/src/tests')
-rw-r--r--third_party/nix/src/tests/dummy-store.hh7
-rw-r--r--third_party/nix/src/tests/value-to-json.cc4
2 files changed, 8 insertions, 3 deletions
diff --git a/third_party/nix/src/tests/dummy-store.hh b/third_party/nix/src/tests/dummy-store.hh
index efa4390d28eb..d0f8bf14b60f 100644
--- a/third_party/nix/src/tests/dummy-store.hh
+++ b/third_party/nix/src/tests/dummy-store.hh
@@ -1,5 +1,6 @@
 #pragma once
 
+#include <filesystem>
 #include "libstore/store-api.hh"
 
 namespace nix::tests {
@@ -20,7 +21,11 @@ class DummyStore final : public Store {
                   bool recursive = true, HashType hashAlgo = htSHA256,
                   PathFilter& filter = defaultPathFilter,
                   RepairFlag repair = NoRepair) {
-    return "/nix/store/g1w7hy3qg1w7hy3qg1w7hy3qg1w7hy3q-x";
+    if (srcPath == "/exists-for-tests") {
+      return "/nix/store/g1w7hy3qg1w7hy3qg1w7hy3qg1w7hy3q-x";
+    }
+
+    throw SysError("file does not exist");
   }
 
   Path addTextToStore(const std::string& name, const std::string& s,
diff --git a/third_party/nix/src/tests/value-to-json.cc b/third_party/nix/src/tests/value-to-json.cc
index 19591b6fa1c7..fddeae512b69 100644
--- a/third_party/nix/src/tests/value-to-json.cc
+++ b/third_party/nix/src/tests/value-to-json.cc
@@ -116,7 +116,7 @@ TEST_F(JSONValueTest, Path) {
   Value v;
   PathSet ps;
 
-  mkPath(v, "test");
+  mkPathNoCopy(v, "/exists-for-tests");
   printValueAsJSON(s, true, v, ss, ps);
   ASSERT_EQ(ss.str(), "\"/nix/store/g1w7hy3qg1w7hy3qg1w7hy3qg1w7hy3q-x\"");
 }
@@ -128,7 +128,7 @@ TEST_F(JSONValueTest, PathNoCopy) {
   Value v;
   PathSet ps;
 
-  mkPathNoCopy(v, "test");
+  mkPathNoCopy(v, "/exists-for-tests");
   printValueAsJSON(s, true, v, ss, ps);
   ASSERT_EQ(ss.str(), "\"/nix/store/g1w7hy3qg1w7hy3qg1w7hy3qg1w7hy3q-x\"");
 }