// Network-gated integration test for resolver::devbox_resolve. #include 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("devbox_resolve returns a commit_hash for fmt 10.2.1", "[resolver][network]") { if (!network_tests_enabled()) { SKIP("CARGOXX_NETWORK_TESTS != 1"); } auto r = cargoxx::resolver::devbox_resolve("fmt", "10.2.1"); REQUIRE(r.has_value()); REQUIRE(r->name == "fmt"); REQUIRE(r->version == "10.2.1"); REQUIRE(r->commit_hash.size() == 40); // git sha // attr_paths should at minimum include the package name itself. REQUIRE(std::ranges::find(r->attr_paths, std::string{"fmt"}) != r->attr_paths.end()); } TEST_CASE("devbox_resolve returns ResolutionUnknownPackage on 404", "[resolver][network]") { if (!network_tests_enabled()) { SKIP("CARGOXX_NETWORK_TESTS != 1"); } auto r = cargoxx::resolver::devbox_resolve( "definitely_not_a_real_pkg_cargoxx_xyzzy", "1.0"); REQUIRE_FALSE(r.has_value()); INFO("error msg: " << r.error().message); REQUIRE(r.error().code == cargoxx::util::ErrorCode::ResolutionUnknownPackage); }