rspec-terraform 0.1.0.pre.41 → 0.1.0.pre.44

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6abf52967c937d8a7761aab1289a1a244ed440bd735311360d3888c3746d8e39
4
- data.tar.gz: ef8e4d1ed48f86632623785b6fafa69bef6bc38c63d902c3897ea8083c31bc7a
3
+ metadata.gz: 84471e75598a3fc301a717d206fd91ba40583271430805b183cbaf58610a8331
4
+ data.tar.gz: 6178c6b399ff218dffbb21c4f036c64233e3ac84e96ba86660254af7d6f2d4d0
5
5
  SHA512:
6
- metadata.gz: 2034dd4ce31339bd6e6e834adfba4d0fc7ca894e532e2e0ef1e4e06efd24c3596d5daf2317933c5d4ee50c0da88ee3188840ed141a9a20492f9ba5d66c97ac1f
7
- data.tar.gz: d41ffaa70e27cedc9f6dcaceb2aeec825be58c9bb41cc8344e9780d7cc1f9db77b8f44dba89da6cb159beabcfa6febac2c0ea93d76bd831f33a163b380bd39eb
6
+ metadata.gz: f3b96974345ca144b4314eb2c90237bb238223e706c214fe94b97f4e5462edf969f6b4da8b3cd83a4a81daed33771f18a0e9f415c361ec6f9cb3ebfe97be7b74
7
+ data.tar.gz: 19651b182453d3de16dfca2b5b4fe205df0d2af4bbfdc80dc1aa4d71298cd359a0ce70655720e100dc21f4f1f19b4784f51bdd56b3adfd63c05c3177a825f21d
data/Gemfile.lock CHANGED
@@ -1,10 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rspec-terraform (0.1.0.pre.41)
4
+ rspec-terraform (0.1.0.pre.44)
5
5
  confidante (>= 0.27)
6
6
  rspec (>= 3.0)
7
- ruby-terraform (= 1.7.0.pre.16)
7
+ ruby-terraform (= 1.7.0.pre.17)
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
@@ -148,7 +148,7 @@ GEM
148
148
  rubocop-rspec (2.12.1)
149
149
  rubocop (~> 1.31)
150
150
  ruby-progressbar (1.11.0)
151
- ruby-terraform (1.7.0.pre.16)
151
+ ruby-terraform (1.7.0.pre.17)
152
152
  immutable-struct (~> 2.4)
153
153
  lino (~> 3.0)
154
154
  ruby2_keywords (0.0.5)
@@ -7,15 +7,26 @@ require_relative '../configuration/var_captor'
7
7
  module RSpec
8
8
  module Terraform
9
9
  module Helpers
10
+ # rubocop:disable Metrics/ClassLength
10
11
  class Apply
11
12
  attr_reader(
12
- :configuration_provider, :binary, :execution_mode
13
+ :configuration_provider,
14
+ :binary,
15
+ :logger,
16
+ :stdin,
17
+ :stdout,
18
+ :stderr,
19
+ :execution_mode
13
20
  )
14
21
 
15
22
  def initialize(opts = {})
16
23
  @configuration_provider =
17
24
  opts[:configuration_provider] || Configuration.identity_provider
18
25
  @binary = opts[:binary] || 'terraform'
26
+ @logger = opts[:logger]
27
+ @stdin = opts[:stdin]
28
+ @stdout = opts[:stdout]
29
+ @stderr = opts[:stderr]
19
30
  @execution_mode = opts[:execution_mode] || :in_place
20
31
  end
21
32
 
@@ -24,15 +35,24 @@ module RSpec
24
35
  parameters = with_resolved_vars(parameters, &block)
25
36
  parameters = with_mandatory_parameters(parameters)
26
37
 
27
- ensure_required_parameters(parameters)
28
-
29
- clean(parameters)
30
- init(parameters)
31
- apply(parameters)
38
+ execute_if_required(parameters) do
39
+ validate(parameters)
40
+ clean(parameters)
41
+ init(parameters)
42
+ apply(parameters)
43
+ end
32
44
  end
33
45
 
34
46
  private
35
47
 
48
+ def execute_if_required(parameters, &block)
49
+ only_if = parameters[:only_if]
50
+ only_if_args = only_if ? [parameters].slice(0, only_if.arity) : []
51
+ should_execute = only_if ? only_if.call(*only_if_args) : true
52
+
53
+ block.call if should_execute
54
+ end
55
+
36
56
  def with_configuration_provider_parameters(parameters)
37
57
  configuration_provider.resolve(parameters)
38
58
  end
@@ -59,16 +79,6 @@ module RSpec
59
79
  }[execution_mode] || []
60
80
  end
61
81
 
62
- def ensure_required_parameters(parameters)
63
- missing_parameters =
64
- required_parameters(execution_mode)
65
- .filter { |parameter| parameters[parameter].nil? }
66
-
67
- return if missing_parameters.empty?
68
-
69
- raise_missing_parameters(missing_parameters)
70
- end
71
-
72
82
  def raise_missing_parameters(parameters)
73
83
  parameters = parameters.collect { |parameter| "`:#{parameter}`" }
74
84
  if parameters.count == 1
@@ -81,6 +91,16 @@ module RSpec
81
91
  end
82
92
  end
83
93
 
94
+ def validate(parameters)
95
+ missing_parameters =
96
+ required_parameters(execution_mode)
97
+ .filter { |parameter| parameters[parameter].nil? }
98
+
99
+ return if missing_parameters.empty?
100
+
101
+ raise_missing_parameters(missing_parameters)
102
+ end
103
+
84
104
  def clean(parameters)
85
105
  return unless execution_mode == :isolated
86
106
 
@@ -97,11 +117,11 @@ module RSpec
97
117
  end
98
118
 
99
119
  def init_command
100
- RubyTerraform::Commands::Init.new(binary: binary)
120
+ RubyTerraform::Commands::Init.new(command_options)
101
121
  end
102
122
 
103
123
  def apply_command
104
- RubyTerraform::Commands::Apply.new(binary: binary)
124
+ RubyTerraform::Commands::Apply.new(command_options)
105
125
  end
106
126
 
107
127
  def init_parameters(parameters)
@@ -134,7 +154,18 @@ module RSpec
134
154
  apply_parameters
135
155
  end
136
156
  # rubocop:enable Metrics/MethodLength
157
+
158
+ def command_options
159
+ {
160
+ binary: binary,
161
+ logger: logger,
162
+ stdin: stdin,
163
+ stdout: stdout,
164
+ stderr: stderr
165
+ }
166
+ end
137
167
  end
168
+ # rubocop:enable Metrics/ClassLength
138
169
  end
139
170
  end
140
171
  end
@@ -7,15 +7,26 @@ require_relative '../configuration/var_captor'
7
7
  module RSpec
8
8
  module Terraform
9
9
  module Helpers
10
+ # rubocop:disable Metrics/ClassLength
10
11
  class Destroy
11
12
  attr_reader(
12
- :configuration_provider, :binary, :execution_mode
13
+ :configuration_provider,
14
+ :binary,
15
+ :logger,
16
+ :stdin,
17
+ :stdout,
18
+ :stderr,
19
+ :execution_mode
13
20
  )
14
21
 
15
22
  def initialize(opts = {})
16
23
  @configuration_provider =
17
24
  opts[:configuration_provider] || Configuration.identity_provider
18
25
  @binary = opts[:binary] || 'terraform'
26
+ @logger = opts[:logger]
27
+ @stdin = opts[:stdin]
28
+ @stdout = opts[:stdout]
29
+ @stderr = opts[:stderr]
19
30
  @execution_mode = opts[:execution_mode] || :in_place
20
31
  end
21
32
 
@@ -23,15 +34,24 @@ module RSpec
23
34
  parameters = with_configuration_provider_parameters(overrides)
24
35
  parameters = with_resolved_vars(parameters, &block)
25
36
 
26
- ensure_required_parameters(parameters)
27
-
28
- clean(parameters)
29
- init(parameters)
30
- destroy(parameters)
37
+ execute_if_required(parameters) do
38
+ validate(parameters)
39
+ clean(parameters)
40
+ init(parameters)
41
+ destroy(parameters)
42
+ end
31
43
  end
32
44
 
33
45
  private
34
46
 
47
+ def execute_if_required(parameters, &block)
48
+ only_if = parameters[:only_if]
49
+ only_if_args = only_if ? [parameters].slice(0, only_if.arity) : []
50
+ should_execute = only_if ? only_if.call(*only_if_args) : true
51
+
52
+ block.call if should_execute
53
+ end
54
+
35
55
  def with_configuration_provider_parameters(parameters)
36
56
  configuration_provider.resolve(parameters)
37
57
  end
@@ -51,16 +71,6 @@ module RSpec
51
71
  }[execution_mode] || []
52
72
  end
53
73
 
54
- def ensure_required_parameters(parameters)
55
- missing_parameters =
56
- required_parameters(execution_mode)
57
- .filter { |parameter| parameters[parameter].nil? }
58
-
59
- return if missing_parameters.empty?
60
-
61
- raise_missing_parameters(missing_parameters)
62
- end
63
-
64
74
  def raise_missing_parameters(parameters)
65
75
  parameters = parameters.collect { |parameter| "`:#{parameter}`" }
66
76
  if parameters.count == 1
@@ -73,6 +83,16 @@ module RSpec
73
83
  end
74
84
  end
75
85
 
86
+ def validate(parameters)
87
+ missing_parameters =
88
+ required_parameters(execution_mode)
89
+ .filter { |parameter| parameters[parameter].nil? }
90
+
91
+ return if missing_parameters.empty?
92
+
93
+ raise_missing_parameters(missing_parameters)
94
+ end
95
+
76
96
  def clean(parameters)
77
97
  return unless execution_mode == :isolated
78
98
 
@@ -89,19 +109,18 @@ module RSpec
89
109
  end
90
110
 
91
111
  def init_command
92
- RubyTerraform::Commands::Init.new(binary: binary)
112
+ RubyTerraform::Commands::Init.new(command_options)
93
113
  end
94
114
 
95
115
  def destroy_command
96
- RubyTerraform::Commands::Destroy.new(binary: binary)
116
+ RubyTerraform::Commands::Destroy.new(command_options)
97
117
  end
98
118
 
99
119
  def init_parameters(parameters)
100
- init_parameters =
101
- parameters.merge(
102
- chdir: parameters[:configuration_directory],
103
- input: false
104
- )
120
+ init_parameters = parameters.merge(
121
+ chdir: parameters[:configuration_directory],
122
+ input: false
123
+ )
105
124
  if execution_mode == :isolated
106
125
  init_parameters =
107
126
  init_parameters.merge(from_module: parameters[:source_directory])
@@ -127,7 +146,18 @@ module RSpec
127
146
  destroy_parameters
128
147
  end
129
148
  # rubocop:enable Metrics/MethodLength
149
+
150
+ def command_options
151
+ {
152
+ binary: binary,
153
+ logger: logger,
154
+ stdin: stdin,
155
+ stdout: stdout,
156
+ stderr: stderr
157
+ }
158
+ end
130
159
  end
160
+ # rubocop:enable Metrics/ClassLength
131
161
  end
132
162
  end
133
163
  end
@@ -5,15 +5,26 @@ require 'ruby_terraform'
5
5
  module RSpec
6
6
  module Terraform
7
7
  module Helpers
8
+ # rubocop:disable Metrics/ClassLength
8
9
  class Output
9
10
  attr_reader(
10
- :configuration_provider, :binary, :execution_mode
11
+ :configuration_provider,
12
+ :binary,
13
+ :logger,
14
+ :stdin,
15
+ :stdout,
16
+ :stderr,
17
+ :execution_mode
11
18
  )
12
19
 
13
20
  def initialize(opts = {})
14
21
  @configuration_provider =
15
22
  opts[:configuration_provider] || Configuration.identity_provider
16
23
  @binary = opts[:binary] || 'terraform'
24
+ @logger = opts[:logger]
25
+ @stdin = opts[:stdin]
26
+ @stdout = opts[:stdout]
27
+ @stderr = opts[:stderr]
17
28
  @execution_mode = opts[:execution_mode] || :in_place
18
29
  end
19
30
 
@@ -90,11 +101,11 @@ module RSpec
90
101
  end
91
102
 
92
103
  def init_command
93
- RubyTerraform::Commands::Init.new(binary: binary)
104
+ RubyTerraform::Commands::Init.new(command_options)
94
105
  end
95
106
 
96
107
  def output_command(opts = {})
97
- RubyTerraform::Commands::Output.new(opts.merge(binary: binary))
108
+ RubyTerraform::Commands::Output.new(command_options.merge(opts))
98
109
  end
99
110
 
100
111
  def init_parameters(parameters)
@@ -123,7 +134,18 @@ module RSpec
123
134
 
124
135
  output_parameters
125
136
  end
137
+
138
+ def command_options
139
+ {
140
+ binary: binary,
141
+ logger: logger,
142
+ stdin: stdin,
143
+ stdout: stdout,
144
+ stderr: stderr
145
+ }
146
+ end
126
147
  end
127
148
  end
149
+ # rubocop:enable Metrics/ClassLength
128
150
  end
129
151
  end
@@ -12,13 +12,23 @@ module RSpec
12
12
  # rubocop:disable Metrics/ClassLength
13
13
  class Plan
14
14
  attr_reader(
15
- :configuration_provider, :binary, :execution_mode
15
+ :configuration_provider,
16
+ :binary,
17
+ :logger,
18
+ :stdin,
19
+ :stdout,
20
+ :stderr,
21
+ :execution_mode
16
22
  )
17
23
 
18
24
  def initialize(opts = {})
19
25
  @configuration_provider =
20
26
  opts[:configuration_provider] || Configuration.identity_provider
21
27
  @binary = opts[:binary] || 'terraform'
28
+ @logger = opts[:logger]
29
+ @stdin = opts[:stdin]
30
+ @stdout = opts[:stdout]
31
+ @stderr = opts[:stderr]
22
32
  @execution_mode = opts[:execution_mode] || :in_place
23
33
  end
24
34
 
@@ -116,15 +126,15 @@ module RSpec
116
126
  end
117
127
 
118
128
  def init_command
119
- RubyTerraform::Commands::Init.new(binary: binary)
129
+ RubyTerraform::Commands::Init.new(command_options)
120
130
  end
121
131
 
122
132
  def plan_command
123
- RubyTerraform::Commands::Plan.new(binary: binary)
133
+ RubyTerraform::Commands::Plan.new(command_options)
124
134
  end
125
135
 
126
136
  def show_command(opts = {})
127
- RubyTerraform::Commands::Show.new(opts.merge(binary: binary))
137
+ RubyTerraform::Commands::Show.new(command_options.merge(opts))
128
138
  end
129
139
 
130
140
  def init_parameters(parameters)
@@ -167,6 +177,16 @@ module RSpec
167
177
  json: true
168
178
  )
169
179
  end
180
+
181
+ def command_options
182
+ {
183
+ binary: binary,
184
+ logger: logger,
185
+ stdin: stdin,
186
+ stdout: stdout,
187
+ stderr: stderr
188
+ }
189
+ end
170
190
  end
171
191
  # rubocop:enable Metrics/ClassLength
172
192
  end
@@ -46,6 +46,10 @@ module RSpec
46
46
 
47
47
  {
48
48
  binary: config.terraform_binary,
49
+ logger: config.terraform_logger,
50
+ stdin: config.terraform_stdin,
51
+ stdout: config.terraform_stdout,
52
+ stderr: config.terraform_stderr,
49
53
  execution_mode: config.terraform_execution_mode,
50
54
  configuration_provider: config.terraform_configuration_provider
51
55
  }
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RSpec
4
4
  module Terraform
5
- VERSION = '0.1.0.pre.41'
5
+ VERSION = '0.1.0.pre.44'
6
6
  end
7
7
  end
@@ -39,7 +39,7 @@ Gem::Specification.new do |spec|
39
39
 
40
40
  spec.add_dependency 'confidante', '>= 0.27'
41
41
  spec.add_dependency 'rspec', '>= 3.0'
42
- spec.add_dependency 'ruby-terraform', '1.7.0.pre.16'
42
+ spec.add_dependency 'ruby-terraform', '1.7.0.pre.17'
43
43
 
44
44
  spec.add_development_dependency 'bundler'
45
45
  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.41
4
+ version: 0.1.0.pre.44
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-09-08 00:00:00.000000000 Z
11
+ date: 2022-09-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: confidante
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - '='
46
46
  - !ruby/object:Gem::Version
47
- version: 1.7.0.pre.16
47
+ version: 1.7.0.pre.17
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - '='
53
53
  - !ruby/object:Gem::Version
54
- version: 1.7.0.pre.16
54
+ version: 1.7.0.pre.17
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement