rspec-terraform 0.1.0.pre.11 → 0.1.0.pre.14
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 +7 -7
- data/lib/rspec/terraform/matchers/include_resource_change.rb +48 -23
- 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: 91f52906b222af912b150dfe8adeccfcf2a96c6397a925b16e010fe95fdedc7f
|
4
|
+
data.tar.gz: 5f8339be7af3ef1e8734e4eb20114f9da5a92a7bf01d12ccc8b25c29918b39fa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0fc145bf6e79e9a925ede3dee1f01ff0e9d8f645da18edad9ba825d31788cb663cd018b181ea4b2a18c19051690cb4354e6267e0b6775cd06215d400c744303b
|
7
|
+
data.tar.gz: 5593bf9db223bce19a841beb644043b6d9395bb37102aa0e56a39bb7e6b7dd64c36aa6ab1e9f3e2e41c16a3027c46486e78bded63954027dddfd9fda09c950ee
|
data/Gemfile.lock
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rspec-terraform (0.1.0.pre.
|
4
|
+
rspec-terraform (0.1.0.pre.14)
|
5
5
|
rspec (>= 3.0)
|
6
|
-
ruby-terraform (= 1.7.0.pre.
|
6
|
+
ruby-terraform (= 1.7.0.pre.9)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
@@ -21,7 +21,7 @@ GEM
|
|
21
21
|
diff-lcs (1.5.0)
|
22
22
|
docile (1.4.0)
|
23
23
|
excon (0.92.4)
|
24
|
-
faker (2.
|
24
|
+
faker (2.22.0)
|
25
25
|
i18n (>= 1.8.11, < 2)
|
26
26
|
faraday (2.3.0)
|
27
27
|
faraday-net_http (~> 2.0)
|
@@ -83,14 +83,14 @@ GEM
|
|
83
83
|
diff-lcs (>= 1.2.0, < 2.0)
|
84
84
|
rspec-support (~> 3.11.0)
|
85
85
|
rspec-support (3.11.0)
|
86
|
-
rubocop (1.
|
86
|
+
rubocop (1.32.0)
|
87
87
|
json (~> 2.3)
|
88
88
|
parallel (~> 1.10)
|
89
89
|
parser (>= 3.1.0.0)
|
90
90
|
rainbow (>= 2.2.2, < 4.0)
|
91
91
|
regexp_parser (>= 1.8, < 3.0)
|
92
92
|
rexml (>= 3.2.5, < 4.0)
|
93
|
-
rubocop-ast (>= 1.
|
93
|
+
rubocop-ast (>= 1.19.1, < 2.0)
|
94
94
|
ruby-progressbar (~> 1.7)
|
95
95
|
unicode-display_width (>= 1.4.0, < 3.0)
|
96
96
|
rubocop-ast (1.19.1)
|
@@ -100,7 +100,7 @@ GEM
|
|
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.9)
|
104
104
|
immutable-struct (~> 2.4)
|
105
105
|
lino (~> 3.0)
|
106
106
|
ruby2_keywords (0.0.5)
|
@@ -142,4 +142,4 @@ DEPENDENCIES
|
|
142
142
|
simplecov
|
143
143
|
|
144
144
|
BUNDLED WITH
|
145
|
-
2.3.
|
145
|
+
2.3.19
|
@@ -5,6 +5,9 @@ require 'rspec/matchers'
|
|
5
5
|
require 'rspec/matchers/built_in/eq'
|
6
6
|
require 'rspec/matchers/built_in/count_expectation'
|
7
7
|
|
8
|
+
require 'ruby_terraform/models/path'
|
9
|
+
require 'ruby_terraform/models/path_set'
|
10
|
+
|
8
11
|
module RSpec
|
9
12
|
module Terraform
|
10
13
|
module Matchers
|
@@ -34,6 +37,8 @@ module RSpec
|
|
34
37
|
def with_attribute_value(*args)
|
35
38
|
stage, path, value = args.count == 3 ? args : [:after, *args]
|
36
39
|
path = [path] if path.is_a?(Symbol)
|
40
|
+
path = RubyTerraform::Models::Path.new(path)
|
41
|
+
value = maybe_box_value(value)
|
37
42
|
@attributes << { stage: stage, path: path, value: value }
|
38
43
|
self
|
39
44
|
end
|
@@ -66,18 +71,24 @@ module RSpec
|
|
66
71
|
end
|
67
72
|
end
|
68
73
|
|
74
|
+
def maybe_box_value(value)
|
75
|
+
if value.respond_to?(:matches?)
|
76
|
+
value
|
77
|
+
else
|
78
|
+
RubyTerraform::Models::Objects.box(value)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
69
82
|
def attribute_matcher(attribute)
|
70
83
|
expected = attribute[:value]
|
71
84
|
return expected if expected.respond_to?(:matches?)
|
72
85
|
|
73
|
-
RSpec::Matchers::BuiltIn::Eq.new(
|
74
|
-
RubyTerraform::Models::Objects.box(expected)
|
75
|
-
)
|
86
|
+
RSpec::Matchers::BuiltIn::Eq.new(expected)
|
76
87
|
end
|
77
88
|
|
78
89
|
def attribute_value(object, attribute)
|
79
90
|
expected = attribute[:value]
|
80
|
-
actual =
|
91
|
+
actual = attribute[:path].read(object)
|
81
92
|
return actual&.unbox if expected.respond_to?(:matches?)
|
82
93
|
|
83
94
|
actual
|
@@ -127,16 +138,26 @@ module RSpec
|
|
127
138
|
"a plan including #{amount} matching " \
|
128
139
|
"resource change#{plurality}."
|
129
140
|
|
130
|
-
|
131
|
-
got_line
|
132
|
-
|
133
|
-
|
134
|
-
|
141
|
+
with_available_resource_changes(
|
142
|
+
maybe_with_relevant_resource_changes(got_line)
|
143
|
+
)
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
def with_available_resource_changes(got_line)
|
148
|
+
"#{got_line}\n available resource changes are:" \
|
149
|
+
"\n#{available_resource_change_lines}"
|
150
|
+
end
|
135
151
|
|
136
|
-
|
137
|
-
|
152
|
+
def maybe_with_relevant_resource_changes(got_line)
|
153
|
+
unless attributes.empty?
|
154
|
+
got_line =
|
155
|
+
"#{got_line}\n relevant resource changes are:" \
|
156
|
+
"\n#{relevant_resource_change_lines}"
|
138
157
|
end
|
158
|
+
got_line
|
139
159
|
end
|
160
|
+
|
140
161
|
# rubocop:enable Metrics/MethodLength
|
141
162
|
|
142
163
|
def cardinality_fragment
|
@@ -172,28 +193,26 @@ module RSpec
|
|
172
193
|
end
|
173
194
|
|
174
195
|
def expected_attribute_lines
|
175
|
-
|
176
|
-
|
177
|
-
|
196
|
+
paths = attributes.collect { |attribute| attribute[:path] }
|
197
|
+
path_set = RubyTerraform::Models::PathSet.new(paths)
|
198
|
+
values = attributes.collect do |attribute|
|
199
|
+
with_matcher_renderable(attribute[:value])
|
178
200
|
end
|
179
|
-
|
201
|
+
object = RubyTerraform::Models::Objects.object(path_set, values)
|
202
|
+
object.render(level: 6, bare: true)
|
180
203
|
end
|
181
204
|
|
182
|
-
# rubocop:disable Metrics/MethodLength
|
183
205
|
def relevant_resource_change_lines
|
184
206
|
relevant_lines = definition_matches(plan).collect do |rc|
|
185
207
|
address = rc.address
|
186
208
|
actions = rc.change.actions.join(', ')
|
187
209
|
attributes = rc.change.after_object
|
188
|
-
attribute_lines = attributes.
|
189
|
-
|
190
|
-
end
|
191
|
-
attribute_lines = attribute_lines.join("\n")
|
210
|
+
attribute_lines = attributes.render(level: 8, bare: true)
|
211
|
+
|
192
212
|
" - #{address} (#{actions})\n#{attribute_lines}"
|
193
213
|
end
|
194
214
|
relevant_lines.join("\n")
|
195
215
|
end
|
196
|
-
# rubocop:enable Metrics/MethodLength
|
197
216
|
|
198
217
|
def available_resource_change_lines
|
199
218
|
available_lines = plan.resource_changes.collect do |rc|
|
@@ -204,8 +223,14 @@ module RSpec
|
|
204
223
|
available_lines.join("\n")
|
205
224
|
end
|
206
225
|
|
207
|
-
def
|
208
|
-
|
226
|
+
def with_matcher_renderable(value)
|
227
|
+
return value if value.respond_to?(:render)
|
228
|
+
|
229
|
+
value.define_singleton_method(:render) do |_|
|
230
|
+
"a value satisfying: #{value.description}"
|
231
|
+
end
|
232
|
+
|
233
|
+
value
|
209
234
|
end
|
210
235
|
end
|
211
236
|
|
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.9'
|
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.14
|
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-31 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.9
|
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.9
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|