diff options
Diffstat (limited to 'third_party/nix/src/tests/derivations_test.cc')
-rw-r--r-- | third_party/nix/src/tests/derivations_test.cc | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/third_party/nix/src/tests/derivations_test.cc b/third_party/nix/src/tests/derivations_test.cc index e026fbe3b11c..1e2719addaf1 100644 --- a/third_party/nix/src/tests/derivations_test.cc +++ b/third_party/nix/src/tests/derivations_test.cc @@ -103,4 +103,34 @@ RC_GTEST_FIXTURE_PROP(DerivationsTest, UnparseParseRoundTrip, AssertDerivationsEqual(drv, parsed); } +class ParseDrvPathWithOutputsTest : public DerivationsTest {}; + +TEST(ParseDrvPathWithOutputsTest, ParseDrvPathWithOutputs) { + auto input = "/nix/store/my51f75kp056md84gq2v08pd140pcz57-test.drv!out"; + auto result = nix::parseDrvPathWithOutputs(input); + + ASSERT_EQ(result.first, + "/nix/store/my51f75kp056md84gq2v08pd140pcz57-test.drv"); + ASSERT_EQ(result.second, nix::PathSet{"out"}); +} + +TEST(ParseDrvPathWithOutputsTest, ParseDrvPathWithMultipleOutputs) { + auto input = "/nix/store/my51f75kp056md84gq2v08pd140pcz57-test.drv!out,dev"; + auto result = nix::parseDrvPathWithOutputs(input); + + nix::PathSet expected = {"out", "dev"}; + + ASSERT_EQ(result.first, + "/nix/store/my51f75kp056md84gq2v08pd140pcz57-test.drv"); + ASSERT_EQ(result.second, expected); +} + +TEST(ParseDrvPathWithOutputsTest, ParseDrvPathWithNoOutputs) { + auto input = "/nix/store/my51f75kp056md84gq2v08pd140pcz57-test"; + auto result = nix::parseDrvPathWithOutputs(input); + + ASSERT_EQ(result.first, "/nix/store/my51f75kp056md84gq2v08pd140pcz57-test"); + ASSERT_EQ(result.second, nix::PathSet()); +} + } // namespace nix |