[M6] tests: levenshtein + pc_scan + brute_scan + findmodule_scan + last_failure_dir + cmd_linkdb_add + codegen PkgConfig/brute-force
This commit is contained in:
67
tests/findmodule_scan_live.cpp
Normal file
67
tests/findmodule_scan_live.cpp
Normal file
@@ -0,0 +1,67 @@
|
||||
#include <catch2/catch_test_macros.hpp>
|
||||
|
||||
import cargoxx.resolver;
|
||||
import cargoxx.util;
|
||||
import std;
|
||||
|
||||
using cargoxx::resolver::findmodule_scan;
|
||||
using cargoxx::util::ErrorCode;
|
||||
|
||||
// `findmodule_scan` shells out to `cmake -P` to discover CMAKE_ROOT.
|
||||
// Gate the test on the same env var we use for other live probes so
|
||||
// CI without cmake can still pass.
|
||||
namespace {
|
||||
|
||||
auto live_tests_enabled() -> bool {
|
||||
auto* e = std::getenv("CARGOXX_NETWORK_TESTS");
|
||||
return e != nullptr && *e != 0;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
TEST_CASE("findmodule_scan picks FindSQLite3 for 'sqlite'",
|
||||
"[resolver][findmodule_scan][live]") {
|
||||
if (!live_tests_enabled()) {
|
||||
SKIP("CARGOXX_NETWORK_TESTS not set");
|
||||
}
|
||||
auto r = findmodule_scan("sqlite");
|
||||
REQUIRE(r.has_value());
|
||||
REQUIRE(r->find_package == "SQLite3 REQUIRED");
|
||||
REQUIRE_FALSE(r->targets.empty());
|
||||
auto has = [&](std::string_view t) {
|
||||
return std::ranges::find(r->targets, std::string{t}) != r->targets.end();
|
||||
};
|
||||
REQUIRE((has("SQLite3::SQLite3") || has("SQLite::SQLite3")));
|
||||
REQUIRE(r->module_file.filename() == "FindSQLite3.cmake");
|
||||
}
|
||||
|
||||
TEST_CASE("findmodule_scan picks FindZLIB for 'zlib'",
|
||||
"[resolver][findmodule_scan][live]") {
|
||||
if (!live_tests_enabled()) {
|
||||
SKIP("CARGOXX_NETWORK_TESTS not set");
|
||||
}
|
||||
auto r = findmodule_scan("zlib");
|
||||
REQUIRE(r.has_value());
|
||||
REQUIRE(r->find_package == "ZLIB REQUIRED");
|
||||
REQUIRE(r->module_file.filename() == "FindZLIB.cmake");
|
||||
}
|
||||
|
||||
TEST_CASE("findmodule_scan picks FindThreads for 'threads'",
|
||||
"[resolver][findmodule_scan][live]") {
|
||||
if (!live_tests_enabled()) {
|
||||
SKIP("CARGOXX_NETWORK_TESTS not set");
|
||||
}
|
||||
auto r = findmodule_scan("threads");
|
||||
REQUIRE(r.has_value());
|
||||
REQUIRE(r->find_package == "Threads REQUIRED");
|
||||
}
|
||||
|
||||
TEST_CASE("findmodule_scan errors for a totally unknown name",
|
||||
"[resolver][findmodule_scan][live]") {
|
||||
if (!live_tests_enabled()) {
|
||||
SKIP("CARGOXX_NETWORK_TESTS not set");
|
||||
}
|
||||
auto r = findmodule_scan("definitelynotacmaketmodule12345");
|
||||
REQUIRE_FALSE(r.has_value());
|
||||
REQUIRE(r.error().code == ErrorCode::ResolutionUnknownPackage);
|
||||
}
|
||||
Reference in New Issue
Block a user