[M5+] add resolver::devbox_resolve (search.devbox.sh)
This commit is contained in:
44
tests/devbox_resolve_live.cpp
Normal file
44
tests/devbox_resolve_live.cpp
Normal 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);
|
||||
}
|
||||
Reference in New Issue
Block a user