diff options
| author | Robert Schumacher <roschuma@microsoft.com> | 2020-02-07 11:24:35 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-02-07 11:24:35 -0800 |
| commit | 8db6db5dac70c25b04cd4dd84392484dee822fbe (patch) | |
| tree | 4734de271f966ff4b9a913b15c1b7b537ecd1a8d /toolsrc/src/vcpkg-test/specifier.cpp | |
| parent | 2873f07823df192ba55693d200850669eabe332c (diff) | |
| download | vcpkg-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.cpp | 68 |
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) |
