Files
cargoxx/tests/vcpkg_probe_live.cpp

44 lines
1.3 KiB
C++

// Network-gated integration test for resolver::vcpkg_probe.
#include <catch2/catch_test_macros.hpp>
import cargoxx.resolver;
import cargoxx.util;
import std;
namespace {
auto network_tests_enabled() -> bool {
auto* env = std::getenv("CARGOXX_NETWORK_TESTS");
return env != nullptr && std::string_view{env} == "1";
}
} // namespace
TEST_CASE("vcpkg_probe finds 'fmt' in microsoft/vcpkg",
"[resolver][network]") {
if (!network_tests_enabled()) {
SKIP("CARGOXX_NETWORK_TESTS != 1");
}
auto r = cargoxx::resolver::vcpkg_probe("fmt");
REQUIRE(r.has_value());
REQUIRE(r->find_package.starts_with("fmt"));
REQUIRE_FALSE(r->targets.empty());
// fmt's vcpkg port should expose at least one fmt:: target.
REQUIRE(std::ranges::any_of(r->targets, [](const std::string& t) {
return t.starts_with("fmt::");
}));
}
TEST_CASE("vcpkg_probe returns ResolutionUnknownPackage for a 404",
"[resolver][network]") {
if (!network_tests_enabled()) {
SKIP("CARGOXX_NETWORK_TESTS != 1");
}
auto r = cargoxx::resolver::vcpkg_probe(
"definitely_not_a_real_pkg_cargoxx_xyzzy");
REQUIRE_FALSE(r.has_value());
REQUIRE(r.error().code ==
cargoxx::util::ErrorCode::ResolutionUnknownPackage);
}