rspec-terraform 0.1.0.pre.27 → 0.1.0.pre.28
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 +2 -2
- data/lib/rspec/terraform/helpers/output.rb +130 -0
- data/lib/rspec/terraform/helpers.rb +1 -0
- data/lib/rspec/terraform/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1c8f792e87abefbea94694f0fee81efbae81c54361681352b5f37860a8daad4e
|
4
|
+
data.tar.gz: c95be85f8b07bde0d80fb42c0324b17a0a3973cfd51b29ad025bd377cb0470fe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d17f25036ba285de0d641952ad1ed0b04bf74cebb87d42125631a2eeb725f2a7da8606a156afe82aa695447c9ccb9ce1629cfde833a89cba8fb5c248690ab03b
|
7
|
+
data.tar.gz: 750c207d47f2066f53f76ddc03d072d391163f7312ca83859c3880d9e12e7c0f36f8b28ce941256d8cdc06f5486d4e4fc9b0d56e6274f31f0d3c1013218b5d90
|
data/Gemfile.lock
CHANGED
@@ -0,0 +1,130 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'ruby_terraform'
|
4
|
+
|
5
|
+
module RSpec
|
6
|
+
module Terraform
|
7
|
+
module Helpers
|
8
|
+
class Output
|
9
|
+
attr_reader(
|
10
|
+
:overrides, :configuration_provider, :binary, :execution_mode
|
11
|
+
)
|
12
|
+
|
13
|
+
def initialize(overrides = {}, configuration_provider = nil)
|
14
|
+
@overrides = overrides
|
15
|
+
@configuration_provider =
|
16
|
+
configuration_provider || Configuration.identity_provider
|
17
|
+
@binary = RSpec.configuration.terraform_binary
|
18
|
+
@execution_mode = RSpec.configuration.terraform_execution_mode
|
19
|
+
end
|
20
|
+
|
21
|
+
def execute
|
22
|
+
parameters = with_configuration_provider_parameters(overrides)
|
23
|
+
parameters = with_mandatory_parameters(parameters)
|
24
|
+
|
25
|
+
ensure_required_parameters(parameters)
|
26
|
+
|
27
|
+
clean(parameters)
|
28
|
+
init(parameters)
|
29
|
+
output_value = output(parameters)
|
30
|
+
|
31
|
+
JSON.parse(output_value, symbolize_names: true)
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def with_configuration_provider_parameters(parameters)
|
37
|
+
configuration_provider.resolve(parameters)
|
38
|
+
end
|
39
|
+
|
40
|
+
def with_mandatory_parameters(parameters)
|
41
|
+
parameters.merge(
|
42
|
+
json: true
|
43
|
+
)
|
44
|
+
end
|
45
|
+
|
46
|
+
def required_parameters(execution_mode)
|
47
|
+
{
|
48
|
+
in_place: %i[name configuration_directory],
|
49
|
+
isolated: %i[name source_directory configuration_directory]
|
50
|
+
}[execution_mode] || []
|
51
|
+
end
|
52
|
+
|
53
|
+
def ensure_required_parameters(parameters)
|
54
|
+
missing_parameters =
|
55
|
+
required_parameters(execution_mode)
|
56
|
+
.filter { |parameter| parameters[parameter].nil? }
|
57
|
+
|
58
|
+
return if missing_parameters.empty?
|
59
|
+
|
60
|
+
raise_missing_parameters(missing_parameters)
|
61
|
+
end
|
62
|
+
|
63
|
+
def raise_missing_parameters(parameters)
|
64
|
+
parameters = parameters.collect { |parameter| "`:#{parameter}`" }
|
65
|
+
if parameters.count == 1
|
66
|
+
raise StandardError,
|
67
|
+
"Required parameter: #{parameters[0]} missing."
|
68
|
+
else
|
69
|
+
parameters = "#{parameters[..-2].join(', ')} and #{parameters[-1]}"
|
70
|
+
raise StandardError,
|
71
|
+
"Required parameters: #{parameters} missing."
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def clean(parameters)
|
76
|
+
return unless execution_mode == :isolated
|
77
|
+
|
78
|
+
FileUtils.rm_rf(parameters[:configuration_directory])
|
79
|
+
FileUtils.mkdir_p(parameters[:configuration_directory])
|
80
|
+
end
|
81
|
+
|
82
|
+
def init(parameters)
|
83
|
+
init_command.execute(init_parameters(parameters))
|
84
|
+
end
|
85
|
+
|
86
|
+
def output(parameters)
|
87
|
+
stdout = StringIO.new
|
88
|
+
output_command(stdout: stdout)
|
89
|
+
.execute(output_parameters(parameters))
|
90
|
+
stdout.string
|
91
|
+
end
|
92
|
+
|
93
|
+
def init_command
|
94
|
+
RubyTerraform::Commands::Init.new(binary: binary)
|
95
|
+
end
|
96
|
+
|
97
|
+
def output_command(opts = {})
|
98
|
+
RubyTerraform::Commands::Output.new(opts.merge(binary: binary))
|
99
|
+
end
|
100
|
+
|
101
|
+
def init_parameters(parameters)
|
102
|
+
init_parameters = parameters.merge(
|
103
|
+
chdir: parameters[:configuration_directory],
|
104
|
+
input: false
|
105
|
+
)
|
106
|
+
if execution_mode == :isolated
|
107
|
+
init_parameters =
|
108
|
+
init_parameters.merge(from_module: parameters[:source_directory])
|
109
|
+
end
|
110
|
+
|
111
|
+
init_parameters
|
112
|
+
end
|
113
|
+
|
114
|
+
def output_parameters(parameters)
|
115
|
+
output_parameters =
|
116
|
+
parameters.merge(
|
117
|
+
chdir: parameters[:configuration_directory]
|
118
|
+
)
|
119
|
+
|
120
|
+
if parameters[:state_file]
|
121
|
+
output_parameters =
|
122
|
+
output_parameters.merge(state: parameters[:state_file])
|
123
|
+
end
|
124
|
+
|
125
|
+
output_parameters
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
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.28
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- InfraBlocks Maintainers
|
@@ -288,6 +288,7 @@ files:
|
|
288
288
|
- lib/rspec/terraform/helpers.rb
|
289
289
|
- lib/rspec/terraform/helpers/apply.rb
|
290
290
|
- lib/rspec/terraform/helpers/destroy.rb
|
291
|
+
- lib/rspec/terraform/helpers/output.rb
|
291
292
|
- lib/rspec/terraform/helpers/plan.rb
|
292
293
|
- lib/rspec/terraform/matchers.rb
|
293
294
|
- lib/rspec/terraform/matchers/include_output_change.rb
|