aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/tests/derivation.cc
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2023-04-17 11:22:31 -0400
committerJohn Ericson <John.Ericson@Obsidian.Systems>2023-04-17 17:36:12 -0400
commitaa74c7b0bcd31a6c0f75f5fa09f417bcbef4ad14 (patch)
tree719c00d6fac1b6c4748749f2e035ff7819210080 /src/libstore/tests/derivation.cc
parent64ee02890c965bc5d8747f78e6298205c9307335 (diff)
Gate experimental features in `DerivationOutput::fromJSON`
This is an entry point for outside data, so we need to check enabled experimental features here.
Diffstat (limited to 'src/libstore/tests/derivation.cc')
-rw-r--r--src/libstore/tests/derivation.cc42
1 files changed, 33 insertions, 9 deletions
diff --git a/src/libstore/tests/derivation.cc b/src/libstore/tests/derivation.cc
index 80ee52fd0..6f94904dd 100644
--- a/src/libstore/tests/derivation.cc
+++ b/src/libstore/tests/derivation.cc
@@ -1,6 +1,7 @@
#include <nlohmann/json.hpp>
#include <gtest/gtest.h>
+#include "experimental-features.hh"
#include "derivations.hh"
#include "tests/libstore.hh"
@@ -9,10 +10,32 @@ namespace nix {
class DerivationTest : public LibStoreTest
{
+public:
+ /**
+ * We set these in tests rather than the regular globals so we don't have
+ * to worry about race conditions if the tests run concurrently.
+ */
+ ExperimentalFeatureSettings mockXpSettings;
};
-#define TEST_JSON(NAME, STR, VAL, DRV_NAME, OUTPUT_NAME) \
- TEST_F(DerivationTest, DerivationOutput_ ## NAME ## _to_json) { \
+class CaDerivationTest : public DerivationTest
+{
+ void SetUp() override
+ {
+ mockXpSettings.set("experimental-features", "ca-derivations");
+ }
+};
+
+class ImpureDerivationTest : public DerivationTest
+{
+ void SetUp() override
+ {
+ mockXpSettings.set("experimental-features", "impure-derivations");
+ }
+};
+
+#define TEST_JSON(FIXTURE, NAME, STR, VAL, DRV_NAME, OUTPUT_NAME) \
+ TEST_F(FIXTURE, DerivationOutput_ ## NAME ## _to_json) { \
using nlohmann::literals::operator "" _json; \
ASSERT_EQ( \
STR ## _json, \
@@ -22,7 +45,7 @@ class DerivationTest : public LibStoreTest
OUTPUT_NAME)); \
} \
\
- TEST_F(DerivationTest, DerivationOutput_ ## NAME ## _from_json) { \
+ TEST_F(FIXTURE, DerivationOutput_ ## NAME ## _from_json) { \
using nlohmann::literals::operator "" _json; \
ASSERT_EQ( \
DerivationOutput { VAL }, \
@@ -30,10 +53,11 @@ class DerivationTest : public LibStoreTest
*store, \
DRV_NAME, \
OUTPUT_NAME, \
- STR ## _json)); \
+ STR ## _json, \
+ mockXpSettings)); \
}
-TEST_JSON(inputAddressed,
+TEST_JSON(DerivationTest, inputAddressed,
R"({
"path": "/nix/store/c015dhfh5l0lp6wxyvdn7bmwhbbr6hr9-drv-name-output-name"
})",
@@ -42,7 +66,7 @@ TEST_JSON(inputAddressed,
}),
"drv-name", "output-name")
-TEST_JSON(caFixed,
+TEST_JSON(DerivationTest, caFixed,
R"({
"hashAlgo": "r:sha256",
"hash": "894517c9163c896ec31a2adbd33c0681fd5f45b2c0ef08a64c92a03fb97f390f",
@@ -56,7 +80,7 @@ TEST_JSON(caFixed,
}),
"drv-name", "output-name")
-TEST_JSON(caFloating,
+TEST_JSON(CaDerivationTest, caFloating,
R"({
"hashAlgo": "r:sha256"
})",
@@ -66,12 +90,12 @@ TEST_JSON(caFloating,
}),
"drv-name", "output-name")
-TEST_JSON(deferred,
+TEST_JSON(DerivationTest, deferred,
R"({ })",
DerivationOutput::Deferred { },
"drv-name", "output-name")
-TEST_JSON(impure,
+TEST_JSON(ImpureDerivationTest, impure,
R"({
"hashAlgo": "r:sha256",
"impure": true