aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src
diff options
context:
space:
mode:
authorAlexander Karatarakis <alkarata@microsoft.com>2017-04-03 14:12:50 -0700
committerAlexander Karatarakis <alkarata@microsoft.com>2017-04-03 14:12:50 -0700
commit35ccbc869bd6a405ef92db46b4c0eb303ed46a66 (patch)
tree1a6f383e3f8c3803de948ace6bb1ff5986d1e72d /toolsrc/src
parent23887e920822599e04a87bff0d03733b309dce98 (diff)
parentb992a05a5979f4a13e2f51a90c34f99847278030 (diff)
downloadvcpkg-35ccbc869bd6a405ef92db46b4c0eb303ed46a66.tar.gz
vcpkg-35ccbc869bd6a405ef92db46b4c0eb303ed46a66.zip
Merge branch 'tobiaskohlbau-vcpkg_comment'
Diffstat (limited to 'toolsrc/src')
-rw-r--r--toolsrc/src/Paragraphs.cpp23
-rw-r--r--toolsrc/src/tests_paragraph.cpp122
2 files changed, 93 insertions, 52 deletions
diff --git a/toolsrc/src/Paragraphs.cpp b/toolsrc/src/Paragraphs.cpp
index aebe3d1f8..898fc6460 100644
--- a/toolsrc/src/Paragraphs.cpp
+++ b/toolsrc/src/Paragraphs.cpp
@@ -32,6 +32,16 @@ namespace vcpkg::Paragraphs
}
}
+ void skip_comment(char& ch)
+ {
+ while (ch != '\r')
+ next(ch);
+ if (ch == '\r')
+ next(ch);
+ if (ch == '\n')
+ next(ch);
+ }
+
void skip_spaces(char& ch)
{
while (ch == ' ' || ch == '\t')
@@ -45,6 +55,11 @@ namespace vcpkg::Paragraphs
|| (ch >= '0' && ch <= '9');
}
+ static bool is_comment(char ch)
+ {
+ return (ch == '#');
+ }
+
static bool is_lineend(char ch)
{
return ch == '\r' || ch == '\n' || ch == 0;
@@ -68,7 +83,7 @@ namespace vcpkg::Paragraphs
if (ch == '\n')
next(ch);
- if (is_alphanum(ch))
+ if (is_alphanum(ch) || is_comment(ch))
{
// Line begins a new field.
return;
@@ -115,6 +130,12 @@ namespace vcpkg::Paragraphs
std::string fieldvalue;
do
{
+ if (is_comment(ch))
+ {
+ skip_comment(ch);
+ continue;
+ }
+
get_fieldname(ch, fieldname);
auto it = fields.find(fieldname);
diff --git a/toolsrc/src/tests_paragraph.cpp b/toolsrc/src/tests_paragraph.cpp
index ef157f51c..122ea9a0a 100644
--- a/toolsrc/src/tests_paragraph.cpp
+++ b/toolsrc/src/tests_paragraph.cpp
@@ -24,8 +24,8 @@ namespace UnitTest1
TEST_METHOD(SourceParagraph_Construct_Minimum)
{
vcpkg::SourceParagraph pgh({
- {"Source", "zlib"},
- {"Version", "1.2.8"}
+ { "Source", "zlib" },
+ { "Version", "1.2.8" }
});
Assert::AreEqual("zlib", pgh.name.c_str());
@@ -38,11 +38,11 @@ namespace UnitTest1
TEST_METHOD(SourceParagraph_Construct_Maximum)
{
vcpkg::SourceParagraph pgh({
- {"Source", "s"},
- {"Version", "v"},
- {"Maintainer", "m"},
- {"Description", "d"},
- {"Build-Depends", "bd"}
+ { "Source", "s" },
+ { "Version", "v" },
+ { "Maintainer", "m" },
+ { "Description", "d" },
+ { "Build-Depends", "bd" }
});
Assert::AreEqual("s", pgh.name.c_str());
Assert::AreEqual("v", pgh.version.c_str());
@@ -55,9 +55,9 @@ namespace UnitTest1
TEST_METHOD(SourceParagraph_Two_Depends)
{
vcpkg::SourceParagraph pgh({
- {"Source", "zlib"},
- {"Version", "1.2.8"},
- {"Build-Depends", "z, openssl"}
+ { "Source", "zlib" },
+ { "Version", "1.2.8" },
+ { "Build-Depends", "z, openssl" }
});
Assert::AreEqual(size_t(2), pgh.depends.size());
@@ -68,9 +68,9 @@ namespace UnitTest1
TEST_METHOD(SourceParagraph_Three_Depends)
{
vcpkg::SourceParagraph pgh({
- {"Source", "zlib"},
- {"Version", "1.2.8"},
- {"Build-Depends", "z, openssl, xyz"}
+ { "Source", "zlib" },
+ { "Version", "1.2.8" },
+ { "Build-Depends", "z, openssl, xyz" }
});
Assert::AreEqual(size_t(3), pgh.depends.size());
@@ -82,9 +82,9 @@ namespace UnitTest1
TEST_METHOD(SourceParagraph_Construct_Qualified_Depends)
{
vcpkg::SourceParagraph pgh({
- {"Source", "zlib"},
- {"Version", "1.2.8"},
- {"Build-Depends", "libA [windows], libB [uwp]"}
+ { "Source", "zlib" },
+ { "Version", "1.2.8" },
+ { "Build-Depends", "libA [windows], libB [uwp]" }
});
Assert::AreEqual("zlib", pgh.name.c_str());
@@ -101,10 +101,10 @@ namespace UnitTest1
TEST_METHOD(BinaryParagraph_Construct_Minimum)
{
vcpkg::BinaryParagraph pgh({
- {"Package", "zlib"},
- {"Version", "1.2.8"},
- {"Architecture", "x86-windows"},
- {"Multi-Arch", "same"},
+ { "Package", "zlib" },
+ { "Version", "1.2.8" },
+ { "Architecture", "x86-windows" },
+ { "Multi-Arch", "same" },
});
Assert::AreEqual("zlib", pgh.spec.name().c_str());
@@ -118,13 +118,13 @@ namespace UnitTest1
TEST_METHOD(BinaryParagraph_Construct_Maximum)
{
vcpkg::BinaryParagraph pgh({
- {"Package", "s"},
- {"Version", "v"},
- {"Architecture", "x86-windows"},
- {"Multi-Arch", "same"},
- {"Maintainer", "m"},
- {"Description", "d"},
- {"Depends", "bd"}
+ { "Package", "s" },
+ { "Version", "v" },
+ { "Architecture", "x86-windows" },
+ { "Multi-Arch", "same" },
+ { "Maintainer", "m" },
+ { "Description", "d" },
+ { "Depends", "bd" }
});
Assert::AreEqual("s", pgh.spec.name().c_str());
Assert::AreEqual("v", pgh.version.c_str());
@@ -137,11 +137,11 @@ namespace UnitTest1
TEST_METHOD(BinaryParagraph_Three_Depends)
{
vcpkg::BinaryParagraph pgh({
- {"Package", "zlib"},
- {"Version", "1.2.8"},
- {"Architecture", "x86-windows"},
- {"Multi-Arch", "same"},
- {"Depends", "a, b, c"},
+ { "Package", "zlib" },
+ { "Version", "1.2.8" },
+ { "Architecture", "x86-windows" },
+ { "Multi-Arch", "same" },
+ { "Depends", "a, b, c" },
});
Assert::AreEqual(size_t(3), pgh.depends.size());
@@ -267,14 +267,36 @@ namespace UnitTest1
Assert::AreEqual("v4", pghs[1]["f4"].c_str());
}
+ TEST_METHOD(parse_paragraphs_comment)
+ {
+ const char* str =
+ "f1: v1\r\n"
+ "#comment\r\n"
+ "f2: v2\r\n"
+ "#comment\r\n"
+ "\r\n"
+ "#comment\r\n"
+ "f3: v3\r\n"
+ "#comment\r\n"
+ "f4: v4";
+ auto pghs = vcpkg::Paragraphs::parse_paragraphs(str).value_or_exit(VCPKG_LINE_INFO);
+ Assert::AreEqual(size_t(2), pghs.size());
+ Assert::AreEqual(size_t(2), pghs[0].size());
+ Assert::AreEqual("v1", pghs[0]["f1"].c_str());
+ Assert::AreEqual("v2", pghs[0]["f2"].c_str());
+ Assert::AreEqual(size_t(2), pghs[1].size());
+ Assert::AreEqual("v3", pghs[1]["f3"].c_str());
+ Assert::AreEqual("v4", pghs[1]["f4"].c_str());
+ }
+
TEST_METHOD(BinaryParagraph_serialize_min)
{
std::stringstream ss;
vcpkg::BinaryParagraph pgh({
- {"Package", "zlib"},
- {"Version", "1.2.8"},
- {"Architecture", "x86-windows"},
- {"Multi-Arch", "same"},
+ { "Package", "zlib" },
+ { "Version", "1.2.8" },
+ { "Architecture", "x86-windows" },
+ { "Multi-Arch", "same" },
});
ss << pgh;
auto pghs = vcpkg::Paragraphs::parse_paragraphs(ss.str()).value_or_exit(VCPKG_LINE_INFO);
@@ -290,13 +312,13 @@ namespace UnitTest1
{
std::stringstream ss;
vcpkg::BinaryParagraph pgh({
- {"Package", "zlib"},
- {"Version", "1.2.8"},
- {"Architecture", "x86-windows"},
- {"Description", "first line\n second line"},
- {"Maintainer", "abc <abc@abc.abc>"},
- {"Depends", "dep"},
- {"Multi-Arch", "same"},
+ { "Package", "zlib" },
+ { "Version", "1.2.8" },
+ { "Architecture", "x86-windows" },
+ { "Description", "first line\n second line" },
+ { "Maintainer", "abc <abc@abc.abc>" },
+ { "Depends", "dep" },
+ { "Multi-Arch", "same" },
});
ss << pgh;
auto pghs = vcpkg::Paragraphs::parse_paragraphs(ss.str()).value_or_exit(VCPKG_LINE_INFO);
@@ -314,11 +336,11 @@ namespace UnitTest1
{
std::stringstream ss;
vcpkg::BinaryParagraph pgh({
- {"Package", "zlib"},
- {"Version", "1.2.8"},
- {"Architecture", "x86-windows"},
- {"Multi-Arch", "same"},
- {"Depends", "a, b, c"},
+ { "Package", "zlib" },
+ { "Version", "1.2.8" },
+ { "Architecture", "x86-windows" },
+ { "Multi-Arch", "same" },
+ { "Depends", "a, b, c" },
});
ss << pgh;
auto pghs = vcpkg::Paragraphs::parse_paragraphs(ss.str()).value_or_exit(VCPKG_LINE_INFO);
@@ -361,7 +383,5 @@ namespace UnitTest1
}
};
- TEST_CLASS(Metrics)
- {
- };
+ TEST_CLASS(Metrics) { };
}