From a802b4b44d4c25fc759812771042553190e853e2 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Sun, 19 Jul 2020 00:27:35 +0100 Subject: [PATCH] fix(3p/nix/tests): Fail DummyStore::addToStore on non-existent srcPath 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 Reviewed-by: glittershark Tested-by: BuildkiteCI --- third_party/nix/src/tests/dummy-store.hh | 7 ++++++- third_party/nix/src/tests/value-to-json.cc | 4 ++-- 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 efa4390d2..d0f8bf14b 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 #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 19591b6fa..fddeae512 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\""); }