aboutsummaryrefslogtreecommitdiff
path: root/tests/unit/libstore/derived-path.cc
diff options
context:
space:
mode:
authorPierre Bourdon <delroth@gmail.com>2024-05-17 02:02:48 +0200
committerPierre Bourdon <delroth@gmail.com>2024-05-17 02:16:15 +0200
commit5a1824ebe1fcdeff86b57a13a33d6428e89e4bce (patch)
tree62e0ed09d6024b9a09f92273ee9aa4515f3bca60 /tests/unit/libstore/derived-path.cc
parent9249c89dc617084640848d4b429311ed3dc152d9 (diff)
derived-path: refuse built derived path with a non-derivation base
Example: /nix/store/dr53sp25hyfsnzjpm8mh3r3y36vrw3ng-neovim-0.9.5^out This is nonsensical since selecting outputs can only be done for a buildable derivation, not for a realised store path. The build worker side of things ends up crashing with an assertion when trying to handle such malformed paths. Change-Id: Ia3587c71fe3da5bea45d4e506e1be4dd62291ddf
Diffstat (limited to 'tests/unit/libstore/derived-path.cc')
-rw-r--r--tests/unit/libstore/derived-path.cc9
1 files changed, 9 insertions, 0 deletions
diff --git a/tests/unit/libstore/derived-path.cc b/tests/unit/libstore/derived-path.cc
index c62d79a78..ffa541e9f 100644
--- a/tests/unit/libstore/derived-path.cc
+++ b/tests/unit/libstore/derived-path.cc
@@ -77,6 +77,15 @@ TEST_F(DerivedPathTest, built_built_xp) {
MissingExperimentalFeature);
}
+/**
+ * Built paths with a non-derivation base should fail parsing.
+ */
+TEST_F(DerivedPathTest, non_derivation_base) {
+ ASSERT_THROW(
+ DerivedPath::parse(*store, "/nix/store/g1w7hy3qg1w7hy3qg1w7hy3qg1w7hy3q-x^foo"),
+ InvalidPath);
+}
+
#ifndef COVERAGE
RC_GTEST_FIXTURE_PROP(