#include "cmake.hpp" #include "config.hpp" #include "process.hpp" #include "project_build.hpp" #include #include #include using namespace std; int main() { auto tests_path = boost::filesystem::canonical(JUCI_TESTS_PATH); { auto project_path = boost::filesystem::canonical(tests_path / ".."); { CMake cmake(project_path); TinyProcessLib::Process process("cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..", (project_path / "build").string(), [](const char *bytes, size_t n) {}); g_assert(process.get_exit_status() == 0); g_assert(cmake.get_executable(project_path / "build", project_path) == ""); g_assert(cmake.get_executable(project_path / "build" / "non_existing_file.cpp", project_path) == ""); } { CMake cmake(project_path / "src"); g_assert(cmake.get_executable(project_path / "build", project_path / "src") == project_path / "build" / "src" / "juci"); g_assert(cmake.get_executable(project_path / "build", project_path / "src" / "cmake.cpp") == project_path / "build" / "src" / "juci"); g_assert(cmake.get_executable(project_path / "build", project_path / "src" / "juci.cpp") == project_path / "build" / "src" / "juci"); g_assert(cmake.get_executable(project_path / "build", project_path / "src" / "non_existing_file.cpp") == project_path / "build" / "src" / "juci"); } { CMake cmake(tests_path); g_assert(cmake.project_path == project_path); auto functions_parameters = cmake.get_functions_parameters("project"); g_assert(functions_parameters.at(0).second.at(0) == "juci"); g_assert(cmake.get_executable(project_path / "build", tests_path).parent_path() == project_path / "build" / "tests"); g_assert(cmake.get_executable(project_path / "build", tests_path / "cmake_build_test.cpp") == project_path / "build" / "tests" / "cmake_build_test"); g_assert(cmake.get_executable(project_path / "build", tests_path / "non_existing_file.cpp").parent_path() == project_path / "build" / "tests"); } auto build = Project::Build::create(tests_path); g_assert(dynamic_cast(build.get())); build = Project::Build::create(tests_path / "stubs"); g_assert(dynamic_cast(build.get())); g_assert(build->project_path == project_path); Config::get().project.default_build_path = "./build"; g_assert(build->get_default_path() == project_path / "build"); Config::get().project.debug_build_path = "/debug"; g_assert(build->get_debug_path() == project_path / "build/debug"); auto project_path_filename = project_path.filename(); Config::get().project.debug_build_path = "../debug_"; g_assert(build->get_debug_path() == project_path.parent_path() / ("debug_" + project_path_filename.string())); Config::get().project.default_build_path = "../build_"; g_assert(build->get_default_path() == project_path.parent_path() / ("build_" + project_path_filename.string())); } { auto project_path = tests_path / "source_clang_test_files"; CMake cmake(project_path); g_assert(cmake.project_path == project_path); g_assert(cmake.get_executable(project_path / "build", project_path / "main.cpp") == boost::filesystem::path(".") / "test"); g_assert(cmake.get_executable(project_path / "build", project_path / "non_existing_file.cpp") == boost::filesystem::path(".") / "test"); g_assert(cmake.get_executable(project_path / "build", project_path) == boost::filesystem::path(".") / "test"); } }