[M5+] add resolver::devbox_resolve (search.devbox.sh)

This commit is contained in:
2026-05-10 12:09:58 +00:00
parent afe1856e11
commit df2c25b559
7 changed files with 295 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
// Network-gated integration test for resolver::devbox_resolve.
#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("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);
}