From bf7c5d44e08dd22c1fe5e7c2800aee4543324e05 Mon Sep 17 00:00:00 2001 From: Brent Souza Date: Wed, 27 Jul 2022 11:53:46 -0400 Subject: [PATCH 1/3] Add SingleLineComment support to object --- .../CoreParsers/Hcl/Hcl2TemplateParserTest.cs | 13 ++++++++----- .../Octopus/CoreParsers/Hcl/HclParser.cs | 1 + 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/source/Octopus.Core.Parsers.Hcl.Tests/Octopus/CoreParsers/Hcl/Hcl2TemplateParserTest.cs b/source/Octopus.Core.Parsers.Hcl.Tests/Octopus/CoreParsers/Hcl/Hcl2TemplateParserTest.cs index c490cd5..d011ce9 100644 --- a/source/Octopus.Core.Parsers.Hcl.Tests/Octopus/CoreParsers/Hcl/Hcl2TemplateParserTest.cs +++ b/source/Octopus.Core.Parsers.Hcl.Tests/Octopus/CoreParsers/Hcl/Hcl2TemplateParserTest.cs @@ -46,14 +46,17 @@ public void TestStringLiteralSuccess(string index, string expected) result.ToString().Should().Be(expected); } - [TestCase("object({name = \"string\", age = \"number\"})")] - [TestCase("object({name = \"string\", age = object({name = \"string\", age = \"number\"})})")] + [TestCase("object({name = \"string\", age = \"number\"})", -1)] + [TestCase("object({name = \"string\", age = object({name = \"string\", age = \"number\"})})", -1)] + [TestCase("object({\n name = \"string\"\n # this is a name\n age = \"number\"\n # this is the age\n})", 0)] [TestCase( - "object({name = \"string\", age = object({name = \"string\", age = \"number\"}), address = tuple([\"string\", object({name = \"string\", age = \"number\"})])})")] - public void ObjectTypeTest(string index) + "object({name = \"string\", age = object({name = \"string\", age = \"number\"}), address = tuple([\"string\", object({name = \"string\", age = \"number\"})])})", + -1 + )] + public void ObjectTypeTest(string index, int indent) { var result = HclParser.ObjectTypeProperty.Parse(index); - result.ToString(-1).Should().Be(index); + result.ToString(indent).Should().Be(index); } [TestCase("tuple([\"string\", \"number\"])")] diff --git a/source/Octopus.Core.Parsers.Hcl/Octopus/CoreParsers/Hcl/HclParser.cs b/source/Octopus.Core.Parsers.Hcl/Octopus/CoreParsers/Hcl/HclParser.cs index 5704955..b69b3ae 100644 --- a/source/Octopus.Core.Parsers.Hcl/Octopus/CoreParsers/Hcl/HclParser.cs +++ b/source/Octopus.Core.Parsers.Hcl/Octopus/CoreParsers/Hcl/HclParser.cs @@ -575,6 +575,7 @@ from content in ( from value in ElementTypedObjectProperty .Or(PrimitiveTypeObjectProperty) + .Or(SingleLineComment) from comma in Comma.Optional() select value ).Token().Many() From 441213146c62b79532d4a1653feec4f62743038c Mon Sep 17 00:00:00 2001 From: Brent Souza Date: Fri, 26 Aug 2022 10:57:18 -0400 Subject: [PATCH 2/3] Heredoc was matching terminator within text --- .../CoreParsers/Hcl/HclTemplateParserTest.cs | 2 +- .../Hcl/TemplateSamples/multilinestring.txt | 3 +++ .../Octopus/CoreParsers/Hcl/HclParser.cs | 14 +++++++++----- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/source/Octopus.Core.Parsers.Hcl.Tests/Octopus/CoreParsers/Hcl/HclTemplateParserTest.cs b/source/Octopus.Core.Parsers.Hcl.Tests/Octopus/CoreParsers/Hcl/HclTemplateParserTest.cs index 5715369..4728959 100644 --- a/source/Octopus.Core.Parsers.Hcl.Tests/Octopus/CoreParsers/Hcl/HclTemplateParserTest.cs +++ b/source/Octopus.Core.Parsers.Hcl.Tests/Octopus/CoreParsers/Hcl/HclTemplateParserTest.cs @@ -310,7 +310,7 @@ public void ParseHereDoc() { var template = TerraformLoadTemplate("multilinestring.txt"); var parsed = HclParser.HereDoc.Parse(template); - parsed.Item3.Should().Match("\nHello\nWorld\n"); + parsed.Item3.Should().Match("\nHello\nWorld\nTHEPARSERSHOULDNOTMATCHTHISDESCRIPTION\nHello\nAgain\n"); } [Test] diff --git a/source/Octopus.Core.Parsers.Hcl.Tests/Octopus/CoreParsers/Hcl/TemplateSamples/multilinestring.txt b/source/Octopus.Core.Parsers.Hcl.Tests/Octopus/CoreParsers/Hcl/TemplateSamples/multilinestring.txt index 27b8a63..06b74b3 100644 --- a/source/Octopus.Core.Parsers.Hcl.Tests/Octopus/CoreParsers/Hcl/TemplateSamples/multilinestring.txt +++ b/source/Octopus.Core.Parsers.Hcl.Tests/Octopus/CoreParsers/Hcl/TemplateSamples/multilinestring.txt @@ -1,4 +1,7 @@ < /// Represents the "//" used to start a comment From bffb0f0daa7bc66e2886dca7a8de855d2af08774 Mon Sep 17 00:00:00 2001 From: Brent Souza Date: Fri, 26 Aug 2022 11:13:39 -0400 Subject: [PATCH 3/3] Only match terminator after a new line --- .../Octopus/CoreParsers/Hcl/HclTemplateParserTest.cs | 2 +- .../CoreParsers/Hcl/TemplateSamples/multilinestring.txt | 2 +- .../Octopus/CoreParsers/Hcl/HclParser.cs | 5 ++++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/source/Octopus.Core.Parsers.Hcl.Tests/Octopus/CoreParsers/Hcl/HclTemplateParserTest.cs b/source/Octopus.Core.Parsers.Hcl.Tests/Octopus/CoreParsers/Hcl/HclTemplateParserTest.cs index 4728959..76ebf1e 100644 --- a/source/Octopus.Core.Parsers.Hcl.Tests/Octopus/CoreParsers/Hcl/HclTemplateParserTest.cs +++ b/source/Octopus.Core.Parsers.Hcl.Tests/Octopus/CoreParsers/Hcl/HclTemplateParserTest.cs @@ -310,7 +310,7 @@ public void ParseHereDoc() { var template = TerraformLoadTemplate("multilinestring.txt"); var parsed = HclParser.HereDoc.Parse(template); - parsed.Item3.Should().Match("\nHello\nWorld\nTHEPARSERSHOULDNOTMATCHTHISDESCRIPTION\nHello\nAgain\n"); + parsed.Item3.Should().Match("\nHello\nWorld\nTHEPARSERSHOULDNOTMATCHTHIS DESCRIPTION\nHello\nAgain\n"); } [Test] diff --git a/source/Octopus.Core.Parsers.Hcl.Tests/Octopus/CoreParsers/Hcl/TemplateSamples/multilinestring.txt b/source/Octopus.Core.Parsers.Hcl.Tests/Octopus/CoreParsers/Hcl/TemplateSamples/multilinestring.txt index 06b74b3..3bd0cd5 100644 --- a/source/Octopus.Core.Parsers.Hcl.Tests/Octopus/CoreParsers/Hcl/TemplateSamples/multilinestring.txt +++ b/source/Octopus.Core.Parsers.Hcl.Tests/Octopus/CoreParsers/Hcl/TemplateSamples/multilinestring.txt @@ -1,7 +1,7 @@ <