diff options
| author | mo khan <mo@mokhan.ca> | 2021-05-09 21:05:08 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2021-05-09 21:05:08 -0600 |
| commit | 656a431eee93824a30970d440cbf7e7f42c7c83e (patch) | |
| tree | 96c5bab01ddb11e846a59f13322958acd007b07b /spec | |
| parent | a7f40094fb2f305ec4d05403070e81edda2e350e (diff) | |
feat: parse array assignments
Diffstat (limited to 'spec')
| -rw-r--r-- | spec/unit/terraform/parsers/hcl_spec.rb | 73 |
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 |
