// -*- c++ -*- // Distributed under the BSD 2-Clause License. // See accompanying file LICENSE for details. #include #include #include #include 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;