aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/tests/outputs-spec.cc
blob: d781a930e80578509f1cf0cc3ab92aa3f69238ed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include "outputs-spec.hh"

#include <gtest/gtest.h>

namespace nix {

TEST(parseOutputsSpec, basic)
{
    {
        auto [prefix, outputsSpec] = parseOutputsSpec("foo");
        ASSERT_EQ(prefix, "foo");
        ASSERT_TRUE(std::get_if<DefaultOutputs>(&outputsSpec));
    }

    {
        auto [prefix, outputsSpec] = parseOutputsSpec("foo^*");
        ASSERT_EQ(prefix, "foo");
        ASSERT_TRUE(std::get_if<AllOutputs>(&outputsSpec));
    }

    {
        auto [prefix, outputsSpec] = parseOutputsSpec("foo^out");
        ASSERT_EQ(prefix, "foo");
        ASSERT_TRUE(std::get<OutputNames>(outputsSpec) == OutputNames({"out"}));
    }

    {
        auto [prefix, outputsSpec] = parseOutputsSpec("foo^out,bin");
        ASSERT_EQ(prefix, "foo");
        ASSERT_TRUE(std::get<OutputNames>(outputsSpec) == OutputNames({"out", "bin"}));
    }

    {
        auto [prefix, outputsSpec] = parseOutputsSpec("foo^bar^out,bin");
        ASSERT_EQ(prefix, "foo^bar");
        ASSERT_TRUE(std::get<OutputNames>(outputsSpec) == OutputNames({"out", "bin"}));
    }

    {
        auto [prefix, outputsSpec] = parseOutputsSpec("foo^&*()");
        ASSERT_EQ(prefix, "foo^&*()");
        ASSERT_TRUE(std::get_if<DefaultOutputs>(&outputsSpec));
    }
}

}