summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2021-05-09 21:05:08 -0600
committermo khan <mo@mokhan.ca>2021-05-09 21:05:08 -0600
commit656a431eee93824a30970d440cbf7e7f42c7c83e (patch)
tree96c5bab01ddb11e846a59f13322958acd007b07b /spec
parenta7f40094fb2f305ec4d05403070e81edda2e350e (diff)
feat: parse array assignments
Diffstat (limited to 'spec')
-rw-r--r--spec/unit/terraform/parsers/hcl_spec.rb73
1 files changed, 68 insertions, 5 deletions
diff --git a/spec/unit/terraform/parsers/hcl_spec.rb b/spec/unit/terraform/parsers/hcl_spec.rb
index fd97a64..a596860 100644
--- a/spec/unit/terraform/parsers/hcl_spec.rb
+++ b/spec/unit/terraform/parsers/hcl_spec.rb
@@ -15,6 +15,20 @@ RSpec.describe Spandx::Terraform::Parsers::Hcl do
provider "registry.terraform.io/hashicorp/aws" {
version = "3.39.0"
constraints = "~> 3.27"
+ hashes = [
+ "h1:fjlp3Pd3QsTLghNm7TUh/KnEMM2D3tLb7jsDLs8oWUE=",
+ "zh:2014b397dd93fa55f2f2d1338c19e5b2b77b025a76a6b1fceea0b8696e984b9c",
+ "zh:23d59c68ab50148a0f5c911a801734e9934a1fccd41118a8efb5194135cbd360",
+ "zh:412eab41d4934ca9c47083faa128e4cd585c3bb44ad718e40d67091aebc02f4e",
+ "zh:4b75e0a259b56d97e66b7d69f3f25bd4cc7be2440c0fe35529f46de7d40a49d3",
+ "zh:694a32519dcca5bd8605d06481d16883d55160d97c1f4039deb13c6ca8de8427",
+ "zh:6a0bcef43c2d9a97aeaaac3c5d1d6728dc2464a51a014f118c691c79029d0903",
+ "zh:6d78fc7c663247ca2a80f276008dcdafece4cac75e2639bbce188c08b796040a",
+ "zh:78f846a505d7b64b67feed1527d4d2b40130dadaf8e3112113685e148f49b156",
+ "zh:881bc969432d3ef6ec70f5a762c3415e037904338579b0a360c6818b74d26e59",
+ "zh:96c1ca80c1d693a3eef80489adb45c076ee8e6878e461d6c29b05388d4b95f48",
+ "zh:9be5fa342272586fc6e319e20f21c0c5c801b05dcf7d59e473ad0882c9ecfa70",
+ ]
}
/*
@@ -32,6 +46,23 @@ RSpec.describe Spandx::Terraform::Parsers::Hcl do
expect(subject[:blocks][0][:arguments]).to match_array([
{ name: 'version', value: '3.39.0' },
{ name: 'constraints', value: '~> 3.27' },
+ {
+ name: 'hashes',
+ values: [
+ { value: 'h1:fjlp3Pd3QsTLghNm7TUh/KnEMM2D3tLb7jsDLs8oWUE=' },
+ { value: 'zh:2014b397dd93fa55f2f2d1338c19e5b2b77b025a76a6b1fceea0b8696e984b9c' },
+ { value: 'zh:23d59c68ab50148a0f5c911a801734e9934a1fccd41118a8efb5194135cbd360' },
+ { value: 'zh:412eab41d4934ca9c47083faa128e4cd585c3bb44ad718e40d67091aebc02f4e' },
+ { value: 'zh:4b75e0a259b56d97e66b7d69f3f25bd4cc7be2440c0fe35529f46de7d40a49d3' },
+ { value: 'zh:694a32519dcca5bd8605d06481d16883d55160d97c1f4039deb13c6ca8de8427' },
+ { value: 'zh:6a0bcef43c2d9a97aeaaac3c5d1d6728dc2464a51a014f118c691c79029d0903' },
+ { value: 'zh:6d78fc7c663247ca2a80f276008dcdafece4cac75e2639bbce188c08b796040a' },
+ { value: 'zh:78f846a505d7b64b67feed1527d4d2b40130dadaf8e3112113685e148f49b156' },
+ { value: 'zh:881bc969432d3ef6ec70f5a762c3415e037904338579b0a360c6818b74d26e59' },
+ { value: 'zh:96c1ca80c1d693a3eef80489adb45c076ee8e6878e461d6c29b05388d4b95f48' },
+ { value: 'zh:9be5fa342272586fc6e319e20f21c0c5c801b05dcf7d59e473ad0882c9ecfa70' },
+ ]
+ },
])
end
end
@@ -103,17 +134,49 @@ RSpec.describe Spandx::Terraform::Parsers::Hcl do
(0..9).each { |digit| specify { expect(parser.digit).to parse(digit.to_s) } }
specify { expect(parser.assign).to parse('=') }
+ specify { expect(parser.comment).to parse('# Manual edits may be lost in future updates.') }
+ specify { expect(parser.comment).to parse('# This file is maintained automatically by "terraform init".') }
+ specify { expect(parser.comment).to parse('// This file is maintained automatically by "terraform init".') }
specify { expect(parser.crlf).to parse("\n") }
specify { expect(parser.crlf).to parse("\r") }
specify { expect(parser.dot).to parse('.') }
- specify { expect(parser.eol).to parse("\n") }
specify { expect(parser.eol).to parse(" \n") }
+ specify { expect(parser.eol).to parse("\n") }
specify { expect(parser.lcurly).to parse('{') }
specify { expect(parser.number).to parse('123') }
- specify { expect(parser.rcurly).to parse('}') }
specify { expect(parser.quote).to parse('"') }
+ specify { expect(parser.rcurly).to parse('}') }
specify { expect(parser.space).to parse(' ') }
- specify { expect(parser.comment).to parse('# This file is maintained automatically by "terraform init".') }
- specify { expect(parser.comment).to parse('# Manual edits may be lost in future updates.') }
- specify { expect(parser.comment).to parse('// This file is maintained automatically by "terraform init".') }
+ specify { expect(parser.whitespace).to parse('# This is a comment') }
+ specify { expect(parser.whitespace).to parse('// This is a comment') }
+
+ specify do
+ expect(parser.whitespace).to parse(<<~HCL)
+ /*
+ This is a multi-line comment
+ that spans multiple lines
+ */
+ HCL
+ end
+
+ specify { expect(parser.argument).to parse('constraints = "~> 3.27"') }
+
+ specify do
+ expect(parser.argument).to parse(<<~HCL.chomp)
+ hashes = [
+ "h1:fjlp3Pd3QsTLghNm7TUh/KnEMM2D3tLb7jsDLs8oWUE=",
+ "zh:2014b397dd93fa55f2f2d1338c19e5b2b77b025a76a6b1fceea0b8696e984b9c",
+ "zh:23d59c68ab50148a0f5c911a801734e9934a1fccd41118a8efb5194135cbd360",
+ "zh:412eab41d4934ca9c47083faa128e4cd585c3bb44ad718e40d67091aebc02f4e",
+ "zh:4b75e0a259b56d97e66b7d69f3f25bd4cc7be2440c0fe35529f46de7d40a49d3",
+ "zh:694a32519dcca5bd8605d06481d16883d55160d97c1f4039deb13c6ca8de8427",
+ "zh:6a0bcef43c2d9a97aeaaac3c5d1d6728dc2464a51a014f118c691c79029d0903",
+ "zh:6d78fc7c663247ca2a80f276008dcdafece4cac75e2639bbce188c08b796040a",
+ "zh:78f846a505d7b64b67feed1527d4d2b40130dadaf8e3112113685e148f49b156",
+ "zh:881bc969432d3ef6ec70f5a762c3415e037904338579b0a360c6818b74d26e59",
+ "zh:96c1ca80c1d693a3eef80489adb45c076ee8e6878e461d6c29b05388d4b95f48",
+ "zh:9be5fa342272586fc6e319e20f21c0c5c801b05dcf7d59e473ad0882c9ecfa70",
+ ]
+ HCL
+ end
end