aboutsummaryrefslogtreecommitdiff
path: root/src/libexpr/tests
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2021-03-10 04:22:56 +0000
committerJohn Ericson <John.Ericson@Obsidian.Systems>2023-08-14 08:44:50 -0400
commite7c39ff00b81dfdc48ebe7f41847db84ba779676 (patch)
treeaa32fd11345e50e45500df107bd3af3a8d7b975d /src/libexpr/tests
parenta04720e68ce45943ce0eae3d477f9d554b0d63a4 (diff)
Rework evaluator `SingleDerivedPath` infra
`EvalState::mkSingleDerivedPathString` previously contained its own inverse (printing, rather than parsing) in order to validate what was parsed. Now that is pulled out into its own separate function: `EvalState::coerceToSingleDerivedPath`. In additional that pulled out logic is deduplicated with `EvalState::mkOutputString` via `EvalState::mkOutputStringRaw`, which is itself deduplicated (and generalized) with `DownstreamPlaceholder::mkOutputStringRaw`. All these changes make the unit tests simpler. (We would ideally write more unit tests for `mkSingleDerivedPathString` `coerceToSingleDerivedPath` directly, but we cannot yet do that because the IO in reading the store path won't work when the dummy store cannot hold anything. Someday we'll have a proper in-memory store which will work for this.) Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
Diffstat (limited to 'src/libexpr/tests')
-rw-r--r--src/libexpr/tests/derived-path.cc20
1 files changed, 6 insertions, 14 deletions
diff --git a/src/libexpr/tests/derived-path.cc b/src/libexpr/tests/derived-path.cc
index 2a5ca64f6..d01735db8 100644
--- a/src/libexpr/tests/derived-path.cc
+++ b/src/libexpr/tests/derived-path.cc
@@ -34,8 +34,8 @@ RC_GTEST_FIXTURE_PROP(
RC_GTEST_FIXTURE_PROP(
DerivedPathExpressionTest,
- prop_built_path_placeholder_round_trip,
- (const StorePath & drvPath, const StorePathName & outputName))
+ prop_derived_path_built_placeholder_round_trip,
+ (const SingleDerivedPath::Built & b))
{
/**
* We set these in tests rather than the regular globals so we don't have
@@ -45,27 +45,19 @@ RC_GTEST_FIXTURE_PROP(
mockXpSettings.set("experimental-features", "ca-derivations");
auto * v = state.allocValue();
- state.mkOutputString(*v, drvPath, outputName.name, std::nullopt, mockXpSettings);
+ state.mkOutputString(*v, b, std::nullopt, mockXpSettings);
auto [d, _] = state.coerceToSingleDerivedPathUnchecked(noPos, *v, "");
- SingleDerivedPath::Built b {
- .drvPath = makeConstantStorePathRef(drvPath),
- .output = outputName.name,
- };
RC_ASSERT(SingleDerivedPath { b } == d);
}
RC_GTEST_FIXTURE_PROP(
DerivedPathExpressionTest,
- prop_built_path_out_path_round_trip,
- (const StorePath & drvPath, const StorePathName & outputName, const StorePath & outPath))
+ prop_derived_path_built_out_path_round_trip,
+ (const SingleDerivedPath::Built & b, const StorePath & outPath))
{
auto * v = state.allocValue();
- state.mkOutputString(*v, drvPath, outputName.name, outPath);
+ state.mkOutputString(*v, b, outPath);
auto [d, _] = state.coerceToSingleDerivedPathUnchecked(noPos, *v, "");
- SingleDerivedPath::Built b {
- .drvPath = makeConstantStorePathRef(drvPath),
- .output = outputName.name,
- };
RC_ASSERT(SingleDerivedPath { b } == d);
}