aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src/vcpkg-test/paragraph.cpp
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2020-02-09 14:50:26 -0800
committerGitHub <noreply@github.com>2020-02-09 14:50:26 -0800
commita33044c18637d3df6de93128d33dae1fb5ba575c (patch)
tree273838dd27daed933e63bc7d29a28b569557755f /toolsrc/src/vcpkg-test/paragraph.cpp
parent039098c9546195a50e45c41e37d7e2b9168b4245 (diff)
downloadvcpkg-a33044c18637d3df6de93128d33dae1fb5ba575c.tar.gz
vcpkg-a33044c18637d3df6de93128d33dae1fb5ba575c.zip
[vcpkg] Track parser row/col state in Paragraph (renamed from RawParagraph) (#9987)
Diffstat (limited to 'toolsrc/src/vcpkg-test/paragraph.cpp')
-rw-r--r--toolsrc/src/vcpkg-test/paragraph.cpp184
1 files changed, 97 insertions, 87 deletions
diff --git a/toolsrc/src/vcpkg-test/paragraph.cpp b/toolsrc/src/vcpkg-test/paragraph.cpp
index 21da80c5b..ba929ac56 100644
--- a/toolsrc/src/vcpkg-test/paragraph.cpp
+++ b/toolsrc/src/vcpkg-test/paragraph.cpp
@@ -6,15 +6,35 @@
#include <vcpkg/paragraphs.h>
namespace Strings = vcpkg::Strings;
+using vcpkg::Parse::Paragraph;
+
+auto test_parse_control_file(const std::vector<std::unordered_map<std::string, std::string>>& v)
+{
+ std::vector<Paragraph> pghs;
+ for (auto&& p : v)
+ {
+ pghs.emplace_back();
+ for (auto&& kv : p)
+ pghs.back().emplace(kv.first, std::make_pair(kv.second, vcpkg::Parse::TextRowCol{}));
+ }
+ return vcpkg::SourceControlFile::parse_control_file("", std::move(pghs));
+}
+
+auto test_make_binary_paragraph(const std::unordered_map<std::string, std::string>& v)
+{
+ Paragraph pgh;
+ for (auto&& kv : v)
+ pgh.emplace(kv.first, std::make_pair(kv.second, vcpkg::Parse::TextRowCol{}));
+
+ return vcpkg::BinaryParagraph(std::move(pgh));
+}
TEST_CASE ("SourceParagraph construct minimum", "[paragraph]")
{
- auto m_pgh =
- vcpkg::SourceControlFile::parse_control_file("",
- std::vector<std::unordered_map<std::string, std::string>>{{
- {"Source", "zlib"},
- {"Version", "1.2.8"},
- }});
+ auto m_pgh = test_parse_control_file({{
+ {"Source", "zlib"},
+ {"Version", "1.2.8"},
+ }});
REQUIRE(m_pgh.has_value());
auto& pgh = **m_pgh.get();
@@ -28,16 +48,14 @@ TEST_CASE ("SourceParagraph construct minimum", "[paragraph]")
TEST_CASE ("SourceParagraph construct maximum", "[paragraph]")
{
- auto m_pgh =
- vcpkg::SourceControlFile::parse_control_file("",
- std::vector<std::unordered_map<std::string, std::string>>{{
- {"Source", "s"},
- {"Version", "v"},
- {"Maintainer", "m"},
- {"Description", "d"},
- {"Build-Depends", "bd"},
- {"Default-Features", "df"},
- }});
+ auto m_pgh = test_parse_control_file({{
+ {"Source", "s"},
+ {"Version", "v"},
+ {"Maintainer", "m"},
+ {"Description", "d"},
+ {"Build-Depends", "bd"},
+ {"Default-Features", "df"},
+ }});
REQUIRE(m_pgh.has_value());
auto& pgh = **m_pgh.get();
@@ -53,13 +71,11 @@ TEST_CASE ("SourceParagraph construct maximum", "[paragraph]")
TEST_CASE ("SourceParagraph two depends", "[paragraph]")
{
- auto m_pgh =
- vcpkg::SourceControlFile::parse_control_file("",
- std::vector<std::unordered_map<std::string, std::string>>{{
- {"Source", "zlib"},
- {"Version", "1.2.8"},
- {"Build-Depends", "z, openssl"},
- }});
+ auto m_pgh = test_parse_control_file({{
+ {"Source", "zlib"},
+ {"Version", "1.2.8"},
+ {"Build-Depends", "z, openssl"},
+ }});
REQUIRE(m_pgh.has_value());
auto& pgh = **m_pgh.get();
@@ -70,13 +86,11 @@ TEST_CASE ("SourceParagraph two depends", "[paragraph]")
TEST_CASE ("SourceParagraph three depends", "[paragraph]")
{
- auto m_pgh =
- vcpkg::SourceControlFile::parse_control_file("",
- std::vector<std::unordered_map<std::string, std::string>>{{
- {"Source", "zlib"},
- {"Version", "1.2.8"},
- {"Build-Depends", "z, openssl, xyz"},
- }});
+ auto m_pgh = test_parse_control_file({{
+ {"Source", "zlib"},
+ {"Version", "1.2.8"},
+ {"Build-Depends", "z, openssl, xyz"},
+ }});
REQUIRE(m_pgh.has_value());
auto& pgh = **m_pgh.get();
@@ -88,13 +102,11 @@ TEST_CASE ("SourceParagraph three depends", "[paragraph]")
TEST_CASE ("SourceParagraph construct qualified depends", "[paragraph]")
{
- auto m_pgh =
- vcpkg::SourceControlFile::parse_control_file("",
- std::vector<std::unordered_map<std::string, std::string>>{{
- {"Source", "zlib"},
- {"Version", "1.2.8"},
- {"Build-Depends", "liba (windows), libb (uwp)"},
- }});
+ auto m_pgh = test_parse_control_file({{
+ {"Source", "zlib"},
+ {"Version", "1.2.8"},
+ {"Build-Depends", "liba (windows), libb (uwp)"},
+ }});
REQUIRE(m_pgh.has_value());
auto& pgh = **m_pgh.get();
@@ -111,13 +123,11 @@ TEST_CASE ("SourceParagraph construct qualified depends", "[paragraph]")
TEST_CASE ("SourceParagraph default features", "[paragraph]")
{
- auto m_pgh =
- vcpkg::SourceControlFile::parse_control_file("",
- std::vector<std::unordered_map<std::string, std::string>>{{
- {"Source", "a"},
- {"Version", "1.0"},
- {"Default-Features", "a1"},
- }});
+ auto m_pgh = test_parse_control_file({{
+ {"Source", "a"},
+ {"Version", "1.0"},
+ {"Default-Features", "a1"},
+ }});
REQUIRE(m_pgh.has_value());
auto& pgh = **m_pgh.get();
@@ -127,7 +137,7 @@ TEST_CASE ("SourceParagraph default features", "[paragraph]")
TEST_CASE ("BinaryParagraph construct minimum", "[paragraph]")
{
- vcpkg::BinaryParagraph pgh({
+ auto pgh = test_make_binary_paragraph({
{"Package", "zlib"},
{"Version", "1.2.8"},
{"Architecture", "x86-windows"},
@@ -144,7 +154,7 @@ TEST_CASE ("BinaryParagraph construct minimum", "[paragraph]")
TEST_CASE ("BinaryParagraph construct maximum", "[paragraph]")
{
- vcpkg::BinaryParagraph pgh({
+ auto pgh = test_make_binary_paragraph({
{"Package", "s"},
{"Version", "v"},
{"Architecture", "x86-windows"},
@@ -164,7 +174,7 @@ TEST_CASE ("BinaryParagraph construct maximum", "[paragraph]")
TEST_CASE ("BinaryParagraph three depends", "[paragraph]")
{
- vcpkg::BinaryParagraph pgh({
+ auto pgh = test_make_binary_paragraph({
{"Package", "zlib"},
{"Version", "1.2.8"},
{"Architecture", "x86-windows"},
@@ -180,7 +190,7 @@ TEST_CASE ("BinaryParagraph three depends", "[paragraph]")
TEST_CASE ("BinaryParagraph abi", "[paragraph]")
{
- vcpkg::BinaryParagraph pgh({
+ auto pgh = test_make_binary_paragraph({
{"Package", "zlib"},
{"Version", "1.2.8"},
{"Architecture", "x86-windows"},
@@ -194,7 +204,7 @@ TEST_CASE ("BinaryParagraph abi", "[paragraph]")
TEST_CASE ("BinaryParagraph default features", "[paragraph]")
{
- vcpkg::BinaryParagraph pgh({
+ auto pgh = test_make_binary_paragraph({
{"Package", "a"},
{"Version", "1.0"},
{"Architecture", "x86-windows"},
@@ -220,7 +230,7 @@ TEST_CASE ("parse paragraphs one field", "[paragraph]")
auto pghs = vcpkg::Paragraphs::parse_paragraphs(str, "").value_or_exit(VCPKG_LINE_INFO);
REQUIRE(pghs.size() == 1);
REQUIRE(pghs[0].size() == 1);
- REQUIRE(pghs[0]["f1"] == "v1");
+ REQUIRE(pghs[0]["f1"].first == "v1");
}
TEST_CASE ("parse paragraphs one pgh", "[paragraph]")
@@ -230,8 +240,8 @@ TEST_CASE ("parse paragraphs one pgh", "[paragraph]")
auto pghs = vcpkg::Paragraphs::parse_paragraphs(str, "").value_or_exit(VCPKG_LINE_INFO);
REQUIRE(pghs.size() == 1);
REQUIRE(pghs[0].size() == 2);
- REQUIRE(pghs[0]["f1"] == "v1");
- REQUIRE(pghs[0]["f2"] == "v2");
+ REQUIRE(pghs[0]["f1"].first == "v1");
+ REQUIRE(pghs[0]["f2"].first == "v2");
}
TEST_CASE ("parse paragraphs two pgh", "[paragraph]")
@@ -245,11 +255,11 @@ TEST_CASE ("parse paragraphs two pgh", "[paragraph]")
REQUIRE(pghs.size() == 2);
REQUIRE(pghs[0].size() == 2);
- REQUIRE(pghs[0]["f1"] == "v1");
- REQUIRE(pghs[0]["f2"] == "v2");
+ REQUIRE(pghs[0]["f1"].first == "v1");
+ REQUIRE(pghs[0]["f2"].first == "v2");
REQUIRE(pghs[1].size() == 2);
- REQUIRE(pghs[1]["f3"] == "v3");
- REQUIRE(pghs[1]["f4"] == "v4");
+ REQUIRE(pghs[1]["f3"].first == "v3");
+ REQUIRE(pghs[1]["f4"].first == "v4");
}
TEST_CASE ("parse paragraphs field names", "[paragraph]")
@@ -286,8 +296,8 @@ TEST_CASE ("parse paragraphs empty fields", "[paragraph]")
REQUIRE(pghs.size() == 1);
REQUIRE(pghs[0].size() == 2);
- REQUIRE(pghs[0]["f1"] == "");
- REQUIRE(pghs[0]["f2"] == "");
+ REQUIRE(pghs[0]["f1"].first == "");
+ REQUIRE(pghs[0]["f2"].first == "");
REQUIRE(pghs[0].size() == 2);
}
@@ -301,8 +311,8 @@ TEST_CASE ("parse paragraphs multiline fields", "[paragraph]")
auto pghs = vcpkg::Paragraphs::parse_paragraphs(str, "").value_or_exit(VCPKG_LINE_INFO);
REQUIRE(pghs.size() == 1);
- REQUIRE(pghs[0]["f1"] == "simple\n f1");
- REQUIRE(pghs[0]["f2"] == "\n f2\n continue");
+ REQUIRE(pghs[0]["f1"].first == "simple\n f1");
+ REQUIRE(pghs[0]["f2"].first == "\n f2\n continue");
}
TEST_CASE ("parse paragraphs crlfs", "[paragraph]")
@@ -316,11 +326,11 @@ TEST_CASE ("parse paragraphs crlfs", "[paragraph]")
REQUIRE(pghs.size() == 2);
REQUIRE(pghs[0].size() == 2);
- REQUIRE(pghs[0]["f1"] == "v1");
- REQUIRE(pghs[0]["f2"] == "v2");
+ REQUIRE(pghs[0]["f1"].first == "v1");
+ REQUIRE(pghs[0]["f2"].first == "v2");
REQUIRE(pghs[1].size() == 2);
- REQUIRE(pghs[1]["f3"] == "v3");
- REQUIRE(pghs[1]["f4"] == "v4");
+ REQUIRE(pghs[1]["f3"].first == "v3");
+ REQUIRE(pghs[1]["f4"].first == "v4");
}
TEST_CASE ("parse paragraphs comment", "[paragraph]")
@@ -338,11 +348,11 @@ TEST_CASE ("parse paragraphs comment", "[paragraph]")
REQUIRE(pghs.size() == 2);
REQUIRE(pghs[0].size() == 2);
- REQUIRE(pghs[0]["f1"] == "v1");
- REQUIRE(pghs[0]["f2"] == "v2");
+ REQUIRE(pghs[0]["f1"].first == "v1");
+ REQUIRE(pghs[0]["f2"].first == "v2");
REQUIRE(pghs[1].size());
- REQUIRE(pghs[1]["f3"] == "v3");
- REQUIRE(pghs[1]["f4"] == "v4");
+ REQUIRE(pghs[1]["f3"].first == "v3");
+ REQUIRE(pghs[1]["f4"].first == "v4");
}
TEST_CASE ("parse comment before single line feed", "[paragraph]")
@@ -351,12 +361,12 @@ TEST_CASE ("parse comment before single line feed", "[paragraph]")
"#comment\n";
auto pghs = vcpkg::Paragraphs::parse_paragraphs(str, "").value_or_exit(VCPKG_LINE_INFO);
REQUIRE(pghs[0].size() == 1);
- REQUIRE(pghs[0]["f1"] == "v1");
+ REQUIRE(pghs[0]["f1"].first == "v1");
}
TEST_CASE ("BinaryParagraph serialize min", "[paragraph]")
{
- vcpkg::BinaryParagraph pgh({
+ auto pgh = test_make_binary_paragraph({
{"Package", "zlib"},
{"Version", "1.2.8"},
{"Architecture", "x86-windows"},
@@ -367,16 +377,16 @@ TEST_CASE ("BinaryParagraph serialize min", "[paragraph]")
REQUIRE(pghs.size() == 1);
REQUIRE(pghs[0].size() == 5);
- REQUIRE(pghs[0]["Package"] == "zlib");
- REQUIRE(pghs[0]["Version"] == "1.2.8");
- REQUIRE(pghs[0]["Architecture"] == "x86-windows");
- REQUIRE(pghs[0]["Multi-Arch"] == "same");
- REQUIRE(pghs[0]["Type"] == "Port");
+ REQUIRE(pghs[0]["Package"].first == "zlib");
+ REQUIRE(pghs[0]["Version"].first == "1.2.8");
+ REQUIRE(pghs[0]["Architecture"].first == "x86-windows");
+ REQUIRE(pghs[0]["Multi-Arch"].first == "same");
+ REQUIRE(pghs[0]["Type"].first == "Port");
}
TEST_CASE ("BinaryParagraph serialize max", "[paragraph]")
{
- vcpkg::BinaryParagraph pgh({
+ auto pgh = test_make_binary_paragraph({
{"Package", "zlib"},
{"Version", "1.2.8"},
{"Architecture", "x86-windows"},
@@ -390,18 +400,18 @@ TEST_CASE ("BinaryParagraph serialize max", "[paragraph]")
REQUIRE(pghs.size() == 1);
REQUIRE(pghs[0].size() == 8);
- REQUIRE(pghs[0]["Package"] == "zlib");
- REQUIRE(pghs[0]["Version"] == "1.2.8");
- REQUIRE(pghs[0]["Architecture"] == "x86-windows");
- REQUIRE(pghs[0]["Multi-Arch"] == "same");
- REQUIRE(pghs[0]["Description"] == "first line\n second line");
- REQUIRE(pghs[0]["Depends"] == "dep");
- REQUIRE(pghs[0]["Type"] == "Port");
+ REQUIRE(pghs[0]["Package"].first == "zlib");
+ REQUIRE(pghs[0]["Version"].first == "1.2.8");
+ REQUIRE(pghs[0]["Architecture"].first == "x86-windows");
+ REQUIRE(pghs[0]["Multi-Arch"].first == "same");
+ REQUIRE(pghs[0]["Description"].first == "first line\n second line");
+ REQUIRE(pghs[0]["Depends"].first == "dep");
+ REQUIRE(pghs[0]["Type"].first == "Port");
}
TEST_CASE ("BinaryParagraph serialize multiple deps", "[paragraph]")
{
- vcpkg::BinaryParagraph pgh({
+ auto pgh = test_make_binary_paragraph({
{"Package", "zlib"},
{"Version", "1.2.8"},
{"Architecture", "x86-windows"},
@@ -412,12 +422,12 @@ TEST_CASE ("BinaryParagraph serialize multiple deps", "[paragraph]")
auto pghs = vcpkg::Paragraphs::parse_paragraphs(ss, "").value_or_exit(VCPKG_LINE_INFO);
REQUIRE(pghs.size() == 1);
- REQUIRE(pghs[0]["Depends"] == "a, b, c");
+ REQUIRE(pghs[0]["Depends"].first == "a, b, c");
}
TEST_CASE ("BinaryParagraph serialize abi", "[paragraph]")
{
- vcpkg::BinaryParagraph pgh({
+ auto pgh = test_make_binary_paragraph({
{"Package", "zlib"},
{"Version", "1.2.8"},
{"Architecture", "x86-windows"},
@@ -429,5 +439,5 @@ TEST_CASE ("BinaryParagraph serialize abi", "[paragraph]")
auto pghs = vcpkg::Paragraphs::parse_paragraphs(ss, "").value_or_exit(VCPKG_LINE_INFO);
REQUIRE(pghs.size() == 1);
- REQUIRE(pghs[0]["Abi"] == "123abc");
+ REQUIRE(pghs[0]["Abi"].first == "123abc");
}