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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
// -*- c++ -*-
// Distributed under the BSD 2-Clause License.
// See accompanying file LICENSE for details.
#include <uunit.h>
#include <ctor.h>
#include <tasks.h>
#include <rebuild.h>
class GeneratedSourcesTest
: public uUnit
{
public:
GeneratedSourcesTest()
{
uTEST(GeneratedSourcesTest::test_custom_output);
}
void setup()
{
// Make sure we start from a clean slate
getConfigFileList().clear();
}
void test_custom_output()
{
using namespace std::string_literals;
ctor::reg(
[](const ctor::settings&)
{
return ctor::build_configurations{
{
.target = "test1",
.sources = {
{"foo.cc", ctor::source_type::generated}
}
},
{
.target = "this_is_unused",
.sources = {
{"bar.x", ctor::output_file{"foo.cc"}},
{"bar.y", ctor::output_file{"bar.cc"}},
},
.function = [](const std::string& input,
const std::string& output,
const ctor::build_configuration& config,
const ctor::settings& settings)
{
return 0;
}
},
};
});
ctor::settings settings{};
auto tasks = getTasks(settings);
for(auto task : tasks)
{
uASSERT(task->registerDepTasks(tasks) == 0);
}
uASSERT_EQUAL(4u, tasks.size());
bool found{false};
for(const auto& task : tasks)
{
if(task->target() == "test1")
{
auto deps_test1 = task->getDependsTasks();
uASSERT_EQUAL(1u, deps_test1.size());
auto deps_foo_o = deps_test1[0]->getDependsTasks();
uASSERT_EQUAL(1u, deps_foo_o.size());
uASSERT_EQUAL("test/bar.x"s, deps_foo_o[0]->source());
found = true;
}
}
uASSERT(found);
}
};
// Registers the fixture into the 'registry'
static GeneratedSourcesTest test;
|