rspec-terraform 0.1.0.pre.21 → 0.1.0.pre.24
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/configuration/merger.rb +23 -16
- data/lib/rspec/terraform/configuration/var_captor.rb +39 -0
- data/lib/rspec/terraform/configuration.rb +1 -0
- data/lib/rspec/terraform/helpers/apply.rb +56 -7
- data/lib/rspec/terraform/version.rb +1 -1
- data/lib/rspec/terraform.rb +3 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0d7a8abc81671eea02a2fd4f6d3b4f8a3060eca51d50c70ebb76c3b0c064b027
|
4
|
+
data.tar.gz: c423cb560f674bc848cea3fcfdd57ef21e41742bc2a86e0db74755ec0c86c8d4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9623a90a33ba6cd9f7948e3856c3954ef822a9eb94bdd48d44126b467985071e4a27654c1d8848168586a9ead4668d6e407e656163c5b1330500eb48e04c1eec
|
7
|
+
data.tar.gz: 0f4766cda2dd7a4fe0335094e155f5731d215b25dde91d135777546839859a82377833485ef0b8459dd32a77b9cf705d3934fa14bd3d2b330273d4895d944782
|
data/Gemfile.lock
CHANGED
@@ -17,29 +17,36 @@ module RSpec
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def merge_accumulating_maps(left, right)
|
20
|
-
|
21
|
-
|
22
|
-
vars = left_vars.merge(right_vars)
|
23
|
-
|
24
|
-
merged = {}
|
25
|
-
unless left_vars == {} && right_vars == {}
|
26
|
-
merged = merged.merge(vars: vars)
|
20
|
+
%i[vars backend_config].inject({}) do |merged, parameter|
|
21
|
+
merge_accumulating_map(parameter, merged, left, right)
|
27
22
|
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def merge_accumulating_map(parameter, accumulator, left, right)
|
26
|
+
left_value = left[parameter] || {}
|
27
|
+
right_value = right[parameter] || {}
|
28
|
+
merged_value = left_value.merge(right_value)
|
29
|
+
|
30
|
+
return accumulator if merged_value == {}
|
28
31
|
|
29
|
-
|
32
|
+
accumulator.merge(parameter => merged_value)
|
30
33
|
end
|
31
34
|
|
32
35
|
def merge_accumulating_lists(left, right)
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
merged = {}
|
38
|
-
unless left_var_files == [] && right_var_files == []
|
39
|
-
merged = merged.merge(var_files: var_files)
|
36
|
+
%i[var_files targets replaces plugin_dirs platforms]
|
37
|
+
.inject({}) do |merged, parameter|
|
38
|
+
merge_accumulating_list(parameter, merged, left, right)
|
40
39
|
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def merge_accumulating_list(parameter, accumulator, left, right)
|
43
|
+
left_value = left[parameter] || []
|
44
|
+
right_value = right[parameter] || []
|
45
|
+
merged_value = left_value + right_value
|
46
|
+
|
47
|
+
return accumulator if merged_value == []
|
41
48
|
|
42
|
-
|
49
|
+
accumulator.merge(parameter => merged_value)
|
43
50
|
end
|
44
51
|
end
|
45
52
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RSpec
|
4
|
+
module Terraform
|
5
|
+
module Configuration
|
6
|
+
class VarCaptor
|
7
|
+
def initialize(vars)
|
8
|
+
@vars = vars
|
9
|
+
end
|
10
|
+
|
11
|
+
def method_missing(method, *args, &_)
|
12
|
+
if method.to_s =~ /.*=$/
|
13
|
+
set_var(method.to_s.chop.to_sym, args[0])
|
14
|
+
else
|
15
|
+
read_var(method)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def respond_to_missing?
|
20
|
+
true
|
21
|
+
end
|
22
|
+
|
23
|
+
def to_h
|
24
|
+
@vars
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def set_var(var, value)
|
30
|
+
@vars[var] = value
|
31
|
+
end
|
32
|
+
|
33
|
+
def read_var(var)
|
34
|
+
@vars[var]
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
require 'ruby_terraform'
|
4
4
|
|
5
|
+
require_relative '../configuration/var_captor'
|
6
|
+
|
5
7
|
module RSpec
|
6
8
|
module Terraform
|
7
9
|
module Helpers
|
@@ -14,20 +16,55 @@ module RSpec
|
|
14
16
|
configuration_provider || Configuration.identity_provider
|
15
17
|
end
|
16
18
|
|
17
|
-
def execute
|
18
|
-
parameters =
|
19
|
-
parameters = parameters
|
19
|
+
def execute(&block)
|
20
|
+
parameters = with_configuration_provider_parameters(overrides)
|
21
|
+
parameters = with_resolved_vars(parameters, &block)
|
22
|
+
parameters = with_mandatory_parameters(parameters)
|
23
|
+
|
24
|
+
ensure_required_parameters(parameters)
|
25
|
+
|
26
|
+
init(parameters)
|
27
|
+
apply(parameters)
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def with_configuration_provider_parameters(parameters)
|
33
|
+
configuration_provider.resolve(parameters)
|
34
|
+
end
|
35
|
+
|
36
|
+
def with_resolved_vars(parameters, &block)
|
37
|
+
return parameters unless block_given?
|
38
|
+
|
39
|
+
var_captor = Configuration::VarCaptor.new(parameters[:vars] || {})
|
40
|
+
block.call(var_captor)
|
41
|
+
parameters.merge(vars: var_captor.to_h)
|
42
|
+
end
|
43
|
+
|
44
|
+
def with_mandatory_parameters(parameters)
|
45
|
+
parameters.merge(
|
20
46
|
input: false,
|
21
47
|
auto_approve: true
|
22
48
|
)
|
49
|
+
end
|
23
50
|
|
24
|
-
|
51
|
+
def ensure_required_parameters(parameters)
|
52
|
+
return if parameters[:configuration_directory]
|
53
|
+
|
54
|
+
throw StandardError.new(
|
55
|
+
'No Terraform configuration directory specified.'
|
56
|
+
)
|
25
57
|
end
|
26
58
|
|
27
|
-
|
59
|
+
def init(parameters)
|
60
|
+
init_command.execute(
|
61
|
+
chdir: parameters[:configuration_directory],
|
62
|
+
input: parameters[:input]
|
63
|
+
)
|
64
|
+
end
|
28
65
|
|
29
|
-
def
|
30
|
-
|
66
|
+
def apply(parameters)
|
67
|
+
apply_command.execute(
|
31
68
|
chdir: parameters[:configuration_directory],
|
32
69
|
state: parameters[:state_file],
|
33
70
|
vars: parameters[:vars],
|
@@ -35,6 +72,18 @@ module RSpec
|
|
35
72
|
auto_approve: parameters[:auto_approve]
|
36
73
|
)
|
37
74
|
end
|
75
|
+
|
76
|
+
def init_command
|
77
|
+
RubyTerraform::Commands::Init.new(
|
78
|
+
binary: RSpec.configuration.terraform_binary
|
79
|
+
)
|
80
|
+
end
|
81
|
+
|
82
|
+
def apply_command
|
83
|
+
RubyTerraform::Commands::Apply.new(
|
84
|
+
binary: RSpec.configuration.terraform_binary
|
85
|
+
)
|
86
|
+
end
|
38
87
|
end
|
39
88
|
end
|
40
89
|
end
|
data/lib/rspec/terraform.rb
CHANGED
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.24
|
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-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -284,6 +284,7 @@ files:
|
|
284
284
|
- lib/rspec/terraform/configuration/providers.rb
|
285
285
|
- lib/rspec/terraform/configuration/providers/identity.rb
|
286
286
|
- lib/rspec/terraform/configuration/providers/in_memory.rb
|
287
|
+
- lib/rspec/terraform/configuration/var_captor.rb
|
287
288
|
- lib/rspec/terraform/helpers.rb
|
288
289
|
- lib/rspec/terraform/helpers/apply.rb
|
289
290
|
- lib/rspec/terraform/matchers.rb
|