rspec-terraform 0.1.0.pre.18 → 0.1.0.pre.19
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 +1 -1
- data/lib/rspec/terraform/matchers/include_output_change.rb +59 -4
- data/lib/rspec/terraform/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d18507e1fb2c9cb75f1d78660709319e3addcc1eeee92538c2b3134d6c3c6783
|
4
|
+
data.tar.gz: 794b11b381d232bbbfa5e61ca2a759e8240366768ce7462ad2ea5e6489dddada
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b7bcc363f2779b425e544abd7065263e974d36351ed4526b7e768f3d93cc66bd2241c8afc81a65c7ede3418df35eb70bb3fd0cdfca77b3dcca629f20ab9091a1
|
7
|
+
data.tar.gz: 9fd86d2510ffcd78213d9ebf8770a1fa70ed4a3a18fca758a2824388e61afcad802d4f1c3bfa85c9612f4abfefb10307a0c5f282e432ea7d490ff9d1c991d8a6
|
data/Gemfile.lock
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
module RSpec
|
4
4
|
module Terraform
|
5
5
|
module Matchers
|
6
|
+
# rubocop:disable Metrics/ClassLength
|
6
7
|
class IncludeOutputChange
|
7
8
|
attr_reader :definition, :value, :plan
|
8
9
|
|
@@ -69,8 +70,10 @@ module RSpec
|
|
69
70
|
end
|
70
71
|
|
71
72
|
def positive_expected_line
|
72
|
-
|
73
|
-
|
73
|
+
maybe_with_expected_value(
|
74
|
+
maybe_with_definition(
|
75
|
+
positive_plan_line
|
76
|
+
)
|
74
77
|
)
|
75
78
|
end
|
76
79
|
|
@@ -79,13 +82,22 @@ module RSpec
|
|
79
82
|
end
|
80
83
|
|
81
84
|
def maybe_with_definition(expected_line)
|
82
|
-
unless
|
85
|
+
unless definition.empty?
|
83
86
|
expected_line =
|
84
87
|
"#{expected_line} matching definition:\n#{definition_lines}"
|
85
88
|
end
|
86
89
|
expected_line
|
87
90
|
end
|
88
91
|
|
92
|
+
def maybe_with_expected_value(expected_line)
|
93
|
+
unless value.nil?
|
94
|
+
expected_line =
|
95
|
+
"#{expected_line}\n with value after " \
|
96
|
+
"the output change is applied of:\n#{expected_value_lines}"
|
97
|
+
end
|
98
|
+
expected_line
|
99
|
+
end
|
100
|
+
|
89
101
|
def definition_lines
|
90
102
|
indent = ' '
|
91
103
|
definition
|
@@ -93,12 +105,21 @@ module RSpec
|
|
93
105
|
.join("\n")
|
94
106
|
end
|
95
107
|
|
108
|
+
def expected_value_lines
|
109
|
+
renderable_value = with_matcher_renderable(value)
|
110
|
+
value_object =
|
111
|
+
RubyTerraform::Models::Values.map(value: renderable_value)
|
112
|
+
value_object.render(level: 6, bare: true)
|
113
|
+
end
|
114
|
+
|
96
115
|
def positive_got_line
|
97
116
|
if plan.output_changes.empty?
|
98
117
|
'a plan including no output changes.'
|
99
118
|
else
|
100
119
|
with_available_output_changes(
|
101
|
-
|
120
|
+
maybe_with_relevant_output_changes(
|
121
|
+
'a plan including no matching output changes.'
|
122
|
+
)
|
102
123
|
)
|
103
124
|
end
|
104
125
|
end
|
@@ -108,6 +129,15 @@ module RSpec
|
|
108
129
|
"\n#{available_output_change_lines}"
|
109
130
|
end
|
110
131
|
|
132
|
+
def maybe_with_relevant_output_changes(got_line)
|
133
|
+
unless value.nil?
|
134
|
+
got_line =
|
135
|
+
"#{got_line}\n relevant output changes are:" \
|
136
|
+
"\n#{relevant_output_change_lines}"
|
137
|
+
end
|
138
|
+
got_line
|
139
|
+
end
|
140
|
+
|
111
141
|
def available_output_change_lines
|
112
142
|
available_lines = plan.output_changes.collect do |oc|
|
113
143
|
name = oc.name
|
@@ -116,7 +146,32 @@ module RSpec
|
|
116
146
|
end
|
117
147
|
available_lines.join("\n")
|
118
148
|
end
|
149
|
+
|
150
|
+
def relevant_output_change_lines
|
151
|
+
relevant_lines = definition_matches(plan).collect do |oc|
|
152
|
+
name = oc.name
|
153
|
+
actions = oc.change.actions.join(', ')
|
154
|
+
value = oc.change.after_object
|
155
|
+
value_object =
|
156
|
+
RubyTerraform::Models::Values.map(value: value)
|
157
|
+
value_lines = value_object.render(level: 8, bare: true)
|
158
|
+
|
159
|
+
" - #{name} (#{actions})\n#{value_lines}"
|
160
|
+
end
|
161
|
+
relevant_lines.join("\n")
|
162
|
+
end
|
163
|
+
|
164
|
+
def with_matcher_renderable(value)
|
165
|
+
return value if value.respond_to?(:render)
|
166
|
+
|
167
|
+
value.define_singleton_method(:render) do |_|
|
168
|
+
"a value satisfying: #{value.description}"
|
169
|
+
end
|
170
|
+
|
171
|
+
value
|
172
|
+
end
|
119
173
|
end
|
174
|
+
# rubocop:enable Metrics/ClassLength
|
120
175
|
end
|
121
176
|
end
|
122
177
|
end
|
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.19
|
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-08-
|
11
|
+
date: 2022-08-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|