summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2021-05-09 12:26:39 -0600
committermo khan <mo@mokhan.ca>2021-05-09 12:26:39 -0600
commit8e6945c1c3b54554bbaf56ce4b6c84fe6d7edcf1 (patch)
tree3aecad24655334d6dbc8c7ec14cfcaf3a5b41021 /spec
parentd15aad9f6ad69c4248a70b11a6534c1c841ec6f9 (diff)
feat: flush out terraform lockfile parser
Diffstat (limited to 'spec')
-rw-r--r--spec/unit/terraform/parsers/lock_file_spec.rb2
-rw-r--r--spec/unit/terraform/parsers/parse_tree_spec.rb53
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