rspec-terraform 0.1.0.pre.5 → 0.1.0.pre.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +6 -6
- data/Rakefile +1 -1
- data/lib/rspec/terraform/matchers/include_resource_change.rb +71 -52
- data/lib/rspec/terraform/version.rb +1 -1
- data/rspec-terraform.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e9616ce6b70683138de564ce5a8e7ff68a892ec5ad3c6db8e8ac5904d07ba889
|
4
|
+
data.tar.gz: cdf25b73c0af2057c9c00130dca4ac9b1a69e282c9134d1389e0ae3862f995d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f27156422ee5fb0742682fec4113fad7429ce5f434c06bd599b5d3fb644988642da7ac582f48950d80060c12ef6215f4859a0f08298da0d7b3d7adbd0eca9b59
|
7
|
+
data.tar.gz: 779b8685fa9858f25bf70ed1455baedebd96f19ec4134f47f8ee3d14fe67dd438e708675c3c6d8f52289798742ca54149f27b3c83476e936fa9e90e0497da02b
|
data/Gemfile.lock
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rspec-terraform (0.1.0.pre.
|
4
|
+
rspec-terraform (0.1.0.pre.8)
|
5
5
|
rspec (>= 3.0)
|
6
|
-
ruby-terraform (= 1.7.0.pre.
|
6
|
+
ruby-terraform (= 1.7.0.pre.5)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
-
activesupport (7.0.3)
|
11
|
+
activesupport (7.0.3.1)
|
12
12
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
13
13
|
i18n (>= 1.6, < 2)
|
14
14
|
minitest (>= 5.1)
|
@@ -30,7 +30,7 @@ GEM
|
|
30
30
|
gem-release (2.2.2)
|
31
31
|
hamster (3.0.0)
|
32
32
|
concurrent-ruby (~> 1.0)
|
33
|
-
i18n (1.
|
33
|
+
i18n (1.12.0)
|
34
34
|
concurrent-ruby (~> 1.0)
|
35
35
|
immutable-struct (2.4.1)
|
36
36
|
json (2.6.2)
|
@@ -93,14 +93,14 @@ GEM
|
|
93
93
|
rubocop-ast (>= 1.18.0, < 2.0)
|
94
94
|
ruby-progressbar (~> 1.7)
|
95
95
|
unicode-display_width (>= 1.4.0, < 3.0)
|
96
|
-
rubocop-ast (1.
|
96
|
+
rubocop-ast (1.19.1)
|
97
97
|
parser (>= 3.1.1.0)
|
98
98
|
rubocop-rake (0.6.0)
|
99
99
|
rubocop (~> 1.0)
|
100
100
|
rubocop-rspec (2.12.1)
|
101
101
|
rubocop (~> 1.31)
|
102
102
|
ruby-progressbar (1.11.0)
|
103
|
-
ruby-terraform (1.7.0.pre.
|
103
|
+
ruby-terraform (1.7.0.pre.5)
|
104
104
|
immutable-struct (~> 2.4)
|
105
105
|
lino (~> 3.0)
|
106
106
|
ruby2_keywords (0.0.5)
|
data/Rakefile
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'rspec/core'
|
4
|
+
require 'rspec/matchers'
|
5
|
+
require 'rspec/matchers/built_in/eq'
|
3
6
|
require 'rspec/matchers/built_in/count_expectation'
|
4
7
|
|
5
8
|
module RSpec
|
@@ -8,7 +11,7 @@ module RSpec
|
|
8
11
|
class IncludeResourceChange
|
9
12
|
include RSpec::Matchers::BuiltIn::CountExpectation
|
10
13
|
|
11
|
-
attr_reader :definition
|
14
|
+
attr_reader :definition, :plan
|
12
15
|
|
13
16
|
def initialize(definition = {})
|
14
17
|
@definition = definition
|
@@ -16,6 +19,7 @@ module RSpec
|
|
16
19
|
end
|
17
20
|
|
18
21
|
def matches?(plan)
|
22
|
+
@plan = plan
|
19
23
|
matches = attribute_matches(plan)
|
20
24
|
|
21
25
|
match_count = matches.count
|
@@ -33,6 +37,16 @@ module RSpec
|
|
33
37
|
self
|
34
38
|
end
|
35
39
|
|
40
|
+
def failure_message
|
41
|
+
"\nexpected: #{positive_expected_line}" \
|
42
|
+
"\n got: #{positive_got_line}"
|
43
|
+
end
|
44
|
+
|
45
|
+
def failure_message_when_negated
|
46
|
+
"\nexpected: a plan including no resource changes" \
|
47
|
+
"\n got: a plan including at least one resource change"
|
48
|
+
end
|
49
|
+
|
36
50
|
private
|
37
51
|
|
38
52
|
def definition_matches(plan)
|
@@ -44,61 +58,66 @@ module RSpec
|
|
44
58
|
change = resource_change.change
|
45
59
|
after = change.after_object
|
46
60
|
@attributes.all? do |attribute|
|
47
|
-
|
48
|
-
|
49
|
-
|
61
|
+
matcher = attribute_matcher(attribute)
|
62
|
+
value = attribute_value(after, attribute)
|
63
|
+
matcher.matches?(value)
|
50
64
|
end
|
51
65
|
end
|
52
66
|
end
|
67
|
+
|
68
|
+
def attribute_matcher(attribute)
|
69
|
+
expected = attribute[:value]
|
70
|
+
return expected if expected.respond_to?(:matches?)
|
71
|
+
|
72
|
+
RSpec::Matchers::BuiltIn::Eq.new(
|
73
|
+
RubyTerraform::Models::Objects.box(expected)
|
74
|
+
)
|
75
|
+
end
|
76
|
+
|
77
|
+
def attribute_value(object, attribute)
|
78
|
+
expected = attribute[:value]
|
79
|
+
actual = object.dig(*attribute[:path])
|
80
|
+
return actual&.unbox if expected.respond_to?(:matches?)
|
81
|
+
|
82
|
+
actual
|
83
|
+
end
|
84
|
+
|
85
|
+
def positive_expected_line
|
86
|
+
cardinality = 'at least one'
|
87
|
+
expected_line = "a plan including #{cardinality} resource change"
|
88
|
+
|
89
|
+
unless @definition.empty?
|
90
|
+
expected_line =
|
91
|
+
"#{expected_line} matching definition:\n#{definition_lines}"
|
92
|
+
end
|
93
|
+
|
94
|
+
expected_line
|
95
|
+
end
|
96
|
+
|
97
|
+
def positive_got_line
|
98
|
+
if plan.resource_changes.empty?
|
99
|
+
return 'a plan including no resource changes'
|
100
|
+
end
|
101
|
+
|
102
|
+
"a plan with resource changes:\n#{resource_change_lines}"
|
103
|
+
end
|
104
|
+
|
105
|
+
def definition_lines
|
106
|
+
definition
|
107
|
+
.collect { |k, v| " #{k}: #{v}" }
|
108
|
+
.join("\n")
|
109
|
+
end
|
110
|
+
|
111
|
+
def resource_change_lines
|
112
|
+
plan.resource_changes
|
113
|
+
.collect do |rc|
|
114
|
+
address = rc.address
|
115
|
+
actions = rc.change.actions.join(', ')
|
116
|
+
" - #{address} (#{actions})"
|
117
|
+
end
|
118
|
+
.join("\n")
|
119
|
+
end
|
53
120
|
end
|
54
121
|
end
|
55
122
|
end
|
56
123
|
end
|
57
|
-
|
58
|
-
# RSpec::Matchers.define :include_resource_creation do |type|
|
59
|
-
# match do |plan|
|
60
|
-
# resource_changes = plan.resource_changes_with_type(type)
|
61
|
-
# resource_creations = resource_changes.filter(&:create?)
|
62
|
-
#
|
63
|
-
# return false if @count && resource_creations.length != @count
|
64
|
-
# return false if resource_creations.empty?
|
65
|
-
#
|
66
|
-
# pp plan.to_h
|
67
|
-
#
|
68
|
-
# if @arguments
|
69
|
-
# return resource_creations.any? do |resource_creation|
|
70
|
-
# @arguments.all? do |name, value|
|
71
|
-
# resource_creation.change.after[name] == value
|
72
|
-
# end
|
73
|
-
# end
|
74
|
-
# end
|
75
|
-
#
|
76
|
-
# return true
|
77
|
-
# end
|
78
|
-
#
|
79
|
-
# chain :count do |count|
|
80
|
-
# @count = count
|
81
|
-
# end
|
82
|
-
#
|
83
|
-
# chain :with_argument_value do |name, value|
|
84
|
-
# @arguments = (@arguments || {}).merge(name => value)
|
85
|
-
# end
|
86
|
-
#
|
87
|
-
# failure_message do |plan|
|
88
|
-
# resource_creations = plan.resource_creations.map do |resource_creation|
|
89
|
-
# "#{resource_creation.type}.#{resource_creation.name}"
|
90
|
-
# end
|
91
|
-
# "\nexpected: a plan with a resource creation for type: #{type}" \
|
92
|
-
# "\n got: a plan with resource creations:" \
|
93
|
-
# "\n - #{resource_creations.join("\n - ")}"
|
94
|
-
# end
|
95
|
-
#
|
96
|
-
# failure_message_when_negated do |plan|
|
97
|
-
# resource_creations = plan.resource_creations.map do |resource_creation|
|
98
|
-
# "#{resource_creation.type}.#{resource_creation.name}"
|
99
|
-
# end
|
100
|
-
# "\nexpected: a plan without a resource creation for type: #{type}" \
|
101
|
-
# "\n got: a plan with resource creations:" \
|
102
|
-
# "\n - #{resource_creations.join("\n - ")}"
|
103
|
-
# end
|
104
|
-
# end
|
data/rspec-terraform.gemspec
CHANGED
@@ -38,7 +38,7 @@ Gem::Specification.new do |spec|
|
|
38
38
|
spec.required_ruby_version = '>= 2.7'
|
39
39
|
|
40
40
|
spec.add_dependency 'rspec', '>= 3.0'
|
41
|
-
spec.add_dependency 'ruby-terraform', '1.7.0.pre.
|
41
|
+
spec.add_dependency 'ruby-terraform', '1.7.0.pre.5'
|
42
42
|
|
43
43
|
spec.add_development_dependency 'bundler'
|
44
44
|
spec.add_development_dependency 'faker'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-terraform
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.0.pre.
|
4
|
+
version: 0.1.0.pre.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- InfraBlocks Maintainers
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-07-
|
11
|
+
date: 2022-07-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.7.0.pre.
|
33
|
+
version: 1.7.0.pre.5
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 1.7.0.pre.
|
40
|
+
version: 1.7.0.pre.5
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|