aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src/vcpkg-test/specifier.cpp
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2020-02-07 11:24:35 -0800
committerGitHub <noreply@github.com>2020-02-07 11:24:35 -0800
commit8db6db5dac70c25b04cd4dd84392484dee822fbe (patch)
tree4734de271f966ff4b9a913b15c1b7b537ecd1a8d /toolsrc/src/vcpkg-test/specifier.cpp
parent2873f07823df192ba55693d200850669eabe332c (diff)
downloadvcpkg-8db6db5dac70c25b04cd4dd84392484dee822fbe.tar.gz
vcpkg-8db6db5dac70c25b04cd4dd84392484dee822fbe.zip
[vcpkg] Further parser improvements (#9895)
* [vcpkg] Consolidate several internal parsers together (packagespecs + logicexpression + control) and enhance error messages * [vcpkg] Migrate Build-Depends parsing to new framework * [vcpkg] Fix tests. Re-enable underscores in feature names due to libwebp[vwebp_sdl] -- todo: rename this feature and remove underscores.
Diffstat (limited to 'toolsrc/src/vcpkg-test/specifier.cpp')
-rw-r--r--toolsrc/src/vcpkg-test/specifier.cpp68
1 files changed, 29 insertions, 39 deletions
diff --git a/toolsrc/src/vcpkg-test/specifier.cpp b/toolsrc/src/vcpkg-test/specifier.cpp
index a0a3725e8..2a1398416 100644
--- a/toolsrc/src/vcpkg-test/specifier.cpp
+++ b/toolsrc/src/vcpkg-test/specifier.cpp
@@ -12,8 +12,8 @@ TEST_CASE ("specifier conversion", "[specifier]")
{
constexpr std::size_t SPEC_SIZE = 6;
- auto a_spec = PackageSpec::from_name_and_triplet("a", Triplet::X64_WINDOWS).value_or_exit(VCPKG_LINE_INFO);
- auto b_spec = PackageSpec::from_name_and_triplet("b", Triplet::X64_WINDOWS).value_or_exit(VCPKG_LINE_INFO);
+ PackageSpec a_spec("a", Triplet::X64_WINDOWS);
+ PackageSpec b_spec("b", Triplet::X64_WINDOWS);
auto fspecs = FullPackageSpec{a_spec, {"0", "1"}}.to_feature_specs({}, {});
auto fspecs2 = FullPackageSpec{b_spec, {"2", "3"}}.to_feature_specs({}, {});
@@ -36,67 +36,59 @@ TEST_CASE ("specifier parsing", "[specifier]")
{
SECTION ("parsed specifier from string")
{
- auto maybe_spec = vcpkg::ParsedSpecifier::from_string("zlib");
- REQUIRE(maybe_spec.error() == vcpkg::PackageSpecParseResult::SUCCESS);
+ auto maybe_spec = vcpkg::parse_qualified_specifier("zlib");
+ REQUIRE(maybe_spec.has_value());
auto& spec = *maybe_spec.get();
REQUIRE(spec.name == "zlib");
- REQUIRE(spec.features.size() == 0);
- REQUIRE(spec.triplet == "");
+ REQUIRE(!spec.features);
+ REQUIRE(!spec.triplet);
}
SECTION ("parsed specifier from string with triplet")
{
- auto maybe_spec = vcpkg::ParsedSpecifier::from_string("zlib:x64-uwp");
- REQUIRE(maybe_spec.error() == vcpkg::PackageSpecParseResult::SUCCESS);
+ auto maybe_spec = vcpkg::parse_qualified_specifier("zlib:x64-uwp");
+ REQUIRE(maybe_spec);
auto& spec = *maybe_spec.get();
REQUIRE(spec.name == "zlib");
- REQUIRE(spec.triplet == "x64-uwp");
+ REQUIRE(spec.triplet.value_or("") == "x64-uwp");
}
SECTION ("parsed specifier from string with colons")
{
- auto ec = vcpkg::ParsedSpecifier::from_string("zlib:x86-uwp:").error();
- REQUIRE(ec == vcpkg::PackageSpecParseResult::TOO_MANY_COLONS);
+ auto s = vcpkg::parse_qualified_specifier("zlib:x86-uwp:");
+ REQUIRE(!s);
}
SECTION ("parsed specifier from string with feature")
{
- auto maybe_spec = vcpkg::ParsedSpecifier::from_string("zlib[feature]:x64-uwp");
- REQUIRE(maybe_spec.error() == vcpkg::PackageSpecParseResult::SUCCESS);
+ auto maybe_spec = vcpkg::parse_qualified_specifier("zlib[feature]:x64-uwp");
+ REQUIRE(maybe_spec);
auto& spec = *maybe_spec.get();
REQUIRE(spec.name == "zlib");
- REQUIRE(spec.features.size() == 1);
- REQUIRE(spec.features.at(0) == "feature");
- REQUIRE(spec.triplet == "x64-uwp");
+ REQUIRE(spec.features.value_or(std::vector<std::string>{}) == std::vector<std::string>{"feature"});
+ REQUIRE(spec.triplet.value_or("") == "x64-uwp");
}
SECTION ("parsed specifier from string with many features")
{
- auto maybe_spec = vcpkg::ParsedSpecifier::from_string("zlib[0, 1,2]");
- REQUIRE(maybe_spec.error() == vcpkg::PackageSpecParseResult::SUCCESS);
+ auto maybe_spec = vcpkg::parse_qualified_specifier("zlib[0, 1,2]");
+ REQUIRE(maybe_spec);
auto& spec = *maybe_spec.get();
- REQUIRE(spec.name == "zlib");
- REQUIRE(spec.features.size() == 3);
- REQUIRE(spec.features.at(0) == "0");
- REQUIRE(spec.features.at(1) == "1");
- REQUIRE(spec.features.at(2) == "2");
- REQUIRE(spec.triplet == "");
+ REQUIRE(spec.features.value_or(std::vector<std::string>{}) == std::vector<std::string>{"0", "1", "2"});
}
SECTION ("parsed specifier wildcard feature")
{
- auto maybe_spec = vcpkg::ParsedSpecifier::from_string("zlib[*]");
- REQUIRE(maybe_spec.error() == vcpkg::PackageSpecParseResult::SUCCESS);
+ auto maybe_spec = vcpkg::parse_qualified_specifier("zlib[*]");
+ System::print2(maybe_spec.error());
+ REQUIRE(maybe_spec);
auto& spec = *maybe_spec.get();
- REQUIRE(spec.name == "zlib");
- REQUIRE(spec.features.size() == 1);
- REQUIRE(spec.features.at(0) == "*");
- REQUIRE(spec.triplet == "");
+ REQUIRE(spec.features.value_or(std::vector<std::string>{}) == std::vector<std::string>{"*"});
}
SECTION ("expand wildcards")
@@ -109,17 +101,15 @@ TEST_CASE ("specifier parsing", "[specifier]")
Util::Vectors::append(&specs, specs2);
Util::sort(specs);
- auto spectargets = FeatureSpec::from_strings_and_triplet(
- {
- "openssl",
- "zlib",
- "zlib[0]",
- "zlib[1]",
- },
- Triplet::X86_UWP);
+ std::vector<FeatureSpec> spectargets{
+ {{"openssl", Triplet::X86_UWP}, "core"},
+ {{"zlib", Triplet::X86_UWP}, "core"},
+ {{"zlib", Triplet::X86_UWP}, "0"},
+ {{"zlib", Triplet::X86_UWP}, "1"},
+ };
Util::sort(spectargets);
REQUIRE(specs.size() == spectargets.size());
- REQUIRE(Util::all_equal(specs, spectargets));
+ REQUIRE(specs == spectargets);
}
#if defined(_WIN32)