42 lines
1.2 KiB
C++
42 lines
1.2 KiB
C++
// Network-gated integration test for resolver::conan_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("conan_probe finds 'fmt' in conan-center-index",
|
|
"[resolver][network]") {
|
|
if (!network_tests_enabled()) {
|
|
SKIP("CARGOXX_NETWORK_TESTS != 1");
|
|
}
|
|
auto r = cargoxx::resolver::conan_probe("fmt");
|
|
REQUIRE(r.has_value());
|
|
REQUIRE_FALSE(r->find_package.empty());
|
|
REQUIRE_FALSE(r->targets.empty());
|
|
// fmt's recipe should set cmake_target_name = "fmt::fmt".
|
|
REQUIRE(r->targets.front() == "fmt::fmt");
|
|
}
|
|
|
|
TEST_CASE("conan_probe returns ResolutionUnknownPackage for a 404",
|
|
"[resolver][network]") {
|
|
if (!network_tests_enabled()) {
|
|
SKIP("CARGOXX_NETWORK_TESTS != 1");
|
|
}
|
|
auto r = cargoxx::resolver::conan_probe(
|
|
"definitely_not_a_real_pkg_cargoxx_xyzzy");
|
|
REQUIRE_FALSE(r.has_value());
|
|
REQUIRE(r.error().code ==
|
|
cargoxx::util::ErrorCode::ResolutionUnknownPackage);
|
|
}
|