diff options
| author | mo khan <mo@mokhan.ca> | 2021-05-09 12:26:39 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2021-05-09 12:26:39 -0600 |
| commit | 8e6945c1c3b54554bbaf56ce4b6c84fe6d7edcf1 (patch) | |
| tree | 3aecad24655334d6dbc8c7ec14cfcaf3a5b41021 /spec | |
| parent | d15aad9f6ad69c4248a70b11a6534c1c841ec6f9 (diff) | |
feat: flush out terraform lockfile parser
Diffstat (limited to 'spec')
| -rw-r--r-- | spec/unit/terraform/parsers/lock_file_spec.rb | 2 | ||||
| -rw-r--r-- | spec/unit/terraform/parsers/parse_tree_spec.rb | 53 |
2 files changed, 50 insertions, 5 deletions
diff --git a/spec/unit/terraform/parsers/lock_file_spec.rb b/spec/unit/terraform/parsers/lock_file_spec.rb index 8fe8da9..0d7c10d 100644 --- a/spec/unit/terraform/parsers/lock_file_spec.rb +++ b/spec/unit/terraform/parsers/lock_file_spec.rb @@ -8,7 +8,7 @@ RSpec.describe Spandx::Terraform::Parsers::LockFile do Spandx::Core::Dependency.new(name: name, version: version, path: path) end - context "when parsing a .terraform.lock.hcl file" do + context 'when parsing a .terraform.lock.hcl file' do subject { parser.parse(path) } let(:path) { fixture_file('terraform/simple/.terraform.lock.hcl') } diff --git a/spec/unit/terraform/parsers/parse_tree_spec.rb b/spec/unit/terraform/parsers/parse_tree_spec.rb index dd24826..267de2f 100644 --- a/spec/unit/terraform/parsers/parse_tree_spec.rb +++ b/spec/unit/terraform/parsers/parse_tree_spec.rb @@ -6,17 +6,62 @@ RSpec.describe Spandx::Terraform::Parsers::ParseTree do describe '#parse' do subject { parser.parse_with_debug(content) } - context "when parsing an empty provider block" do + context 'when parsing an empty provider block' do let(:content) do <<~HCL - provider "registry.terraform.io/hashicorp/aws" { - - } + provider "registry.terraform.io/hashicorp/aws" { + version = "3.39.0" + } HCL end specify { expect(subject[0].dig(:provider, :name).to_s).to eql('registry.terraform.io/hashicorp/aws') } + specify { expect(subject[0].dig(:provider, :version).to_s).to eql('3.39.0') } specify { expect(subject).to be_truthy } end end + + describe '#version_assignment' do + subject { parser.version_assignment } + + [ + 'version = "3.39.0"', + 'version = "3.39.0-alpha"', + 'version = "3.39.0-beta"', + 'version = "3.39.0-d15aad9f6ad69c4248a70b11a6534c1c841ec6f9"', + 'version = "3.39.0-d15aad9f"', + ].each do |raw| + specify { expect(subject).to parse(raw) } + end + end + + describe '#version' do + [ + '0.1.1-alpha', + '0.1.1-beta', + '1.2.3', + '3.39.0', + '3.39.0-d15aad9f', + '3.39.0-d15aad9f6ad69c4248a70b11a6534c1c841ec6f9', + ].each do |raw| + specify { expect(parser.version).to parse(raw) } + end + end + + (('a'..'z').to_a + ('A'..'Z').to_a).each do |letter| + specify { expect(parser.alpha).to parse(letter) } + end + + (0..9).each { |digit| specify { expect(parser.digit).to parse(digit.to_s) } } + specify { expect(parser.assign).to parse('=') } + 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.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.space).to parse(' ') } end |
