rspec-terraform 0.1.0.pre.43 → 0.1.0.pre.45

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: 8d338f5e02d75bdf58441300199c8902f712adf6582abff8b9e5021230c2d344
4
- data.tar.gz: 16844e10dec62df8e57c1b84216c0f95742586be4fcca7792195d680e526200e
3
+ metadata.gz: f5e1e41e777f174198e1de6459ef21f280d11227fd2a0b97e0d6604458b48e34
4
+ data.tar.gz: 071164c5440ab7b9a094c0125c7d562acb40d235485baac554dfd6e14bbc55fb
5
5
  SHA512:
6
- metadata.gz: 49b0bc41cde756000e9e74218ab4b2c9ab451e19b8dbdf6f84a3d1d0329c7d6a1bb94ea801bfd15caaa374c512173b62dd137b610c942efafb5401180bc970ea
7
- data.tar.gz: 0631d0581d8f6c6f9a13d8e6edcd9a714b44b6487803c95c0d4a3a5ec5650b129a80fe70054162121b0330e7430cdcf35171727eb406a7da6f964a247f676b43
6
+ metadata.gz: d8f45a75288ba61061d435320509688ac960e4be4b1842b62d4a4c87cc6e5a75af656f6b6fad60b39fbe24f12060cc8d9d1bec4038616efb2d7dea02649caba9
7
+ data.tar.gz: d2e42b5ca9bbfbcb59842e656e9d2816fb838c8bed600aaeaeb008f6601dd64755fa8ac33c27b79cc38c84efc2c8f99b612b25498c98f0292c0fb115433e9e4d
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rspec-terraform (0.1.0.pre.43)
4
+ rspec-terraform (0.1.0.pre.45)
5
5
  confidante (>= 0.27)
6
6
  rspec (>= 3.0)
7
7
  ruby-terraform (= 1.7.0.pre.17)
@@ -145,8 +145,8 @@ GEM
145
145
  parser (>= 3.1.1.0)
146
146
  rubocop-rake (0.6.0)
147
147
  rubocop (~> 1.0)
148
- rubocop-rspec (2.12.1)
149
- rubocop (~> 1.31)
148
+ rubocop-rspec (2.13.1)
149
+ rubocop (~> 1.33)
150
150
  ruby-progressbar (1.11.0)
151
151
  ruby-terraform (1.7.0.pre.17)
152
152
  immutable-struct (~> 2.4)
@@ -2,65 +2,41 @@
2
2
 
3
3
  require 'ruby_terraform'
4
4
 
5
+ require_relative './base'
5
6
  require_relative '../configuration/var_captor'
6
7
 
7
8
  module RSpec
8
9
  module Terraform
9
10
  module Helpers
10
- # rubocop:disable Metrics/ClassLength
11
- class Apply
12
- attr_reader(
13
- :configuration_provider,
14
- :binary,
15
- :logger,
16
- :stdin,
17
- :stdout,
18
- :stderr,
19
- :execution_mode
20
- )
21
-
22
- def initialize(opts = {})
23
- @configuration_provider =
24
- opts[:configuration_provider] || Configuration.identity_provider
25
- @binary = opts[:binary] || 'terraform'
26
- @logger = opts[:logger]
27
- @stdin = opts[:stdin]
28
- @stdout = opts[:stdout]
29
- @stderr = opts[:stderr]
30
- @execution_mode = opts[:execution_mode] || :in_place
31
- end
32
-
11
+ class Apply < Base
33
12
  def execute(overrides = {}, &block)
34
13
  parameters = with_configuration_provider_parameters(overrides)
35
14
  parameters = with_resolved_vars(parameters, &block)
36
15
  parameters = with_mandatory_parameters(parameters)
37
16
 
38
- ensure_required_parameters(parameters)
39
-
40
- clean(parameters)
41
- init(parameters)
42
- apply(parameters)
17
+ execute_if_required(parameters) do
18
+ validate(parameters)
19
+ clean(parameters)
20
+ init(parameters)
21
+ apply(parameters)
22
+ end
43
23
  end
44
24
 
45
25
  private
46
26
 
47
- def with_configuration_provider_parameters(parameters)
48
- configuration_provider.resolve(parameters)
49
- end
50
-
51
- def with_resolved_vars(parameters, &block)
52
- return parameters unless block_given?
27
+ def execute_if_required(parameters, &block)
28
+ only_if = parameters[:only_if]
29
+ only_if_args = only_if ? [parameters].slice(0, only_if.arity) : []
30
+ should_execute = only_if ? only_if.call(*only_if_args) : true
53
31
 
54
- var_captor = Configuration::VarCaptor.new(parameters[:vars] || {})
55
- block.call(var_captor)
56
- parameters.merge(vars: var_captor.to_h)
32
+ block.call if should_execute
57
33
  end
58
34
 
59
- def with_mandatory_parameters(parameters)
60
- parameters.merge(
35
+ def mandatory_parameters
36
+ {
61
37
  input: false,
62
38
  auto_approve: true
63
- )
39
+ }
64
40
  end
65
41
 
66
42
  def required_parameters(execution_mode)
@@ -70,28 +46,6 @@ module RSpec
70
46
  }[execution_mode] || []
71
47
  end
72
48
 
73
- def ensure_required_parameters(parameters)
74
- missing_parameters =
75
- required_parameters(execution_mode)
76
- .filter { |parameter| parameters[parameter].nil? }
77
-
78
- return if missing_parameters.empty?
79
-
80
- raise_missing_parameters(missing_parameters)
81
- end
82
-
83
- def raise_missing_parameters(parameters)
84
- parameters = parameters.collect { |parameter| "`:#{parameter}`" }
85
- if parameters.count == 1
86
- raise StandardError,
87
- "Required parameter: #{parameters[0]} missing."
88
- else
89
- parameters = "#{parameters[..-2].join(', ')} and #{parameters[-1]}"
90
- raise StandardError,
91
- "Required parameters: #{parameters} missing."
92
- end
93
- end
94
-
95
49
  def clean(parameters)
96
50
  return unless execution_mode == :isolated
97
51
 
@@ -145,18 +99,7 @@ module RSpec
145
99
  apply_parameters
146
100
  end
147
101
  # rubocop:enable Metrics/MethodLength
148
-
149
- def command_options
150
- {
151
- binary: binary,
152
- logger: logger,
153
- stdin: stdin,
154
- stdout: stdout,
155
- stderr: stderr
156
- }
157
- end
158
102
  end
159
- # rubocop:enable Metrics/ClassLength
160
103
  end
161
104
  end
162
105
  end
@@ -0,0 +1,90 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../configuration/var_captor'
4
+
5
+ module RSpec
6
+ module Terraform
7
+ module Helpers
8
+ class Base
9
+ attr_reader(
10
+ :configuration_provider,
11
+ :binary,
12
+ :logger,
13
+ :stdin,
14
+ :stdout,
15
+ :stderr,
16
+ :execution_mode
17
+ )
18
+
19
+ def initialize(opts = {})
20
+ @configuration_provider =
21
+ opts[:configuration_provider] || Configuration.identity_provider
22
+ @binary = opts[:binary] || 'terraform'
23
+ @logger = opts[:logger]
24
+ @stdin = opts[:stdin]
25
+ @stdout = opts[:stdout]
26
+ @stderr = opts[:stderr]
27
+ @execution_mode = opts[:execution_mode] || :in_place
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(mandatory_parameters)
46
+ end
47
+
48
+ def raise_missing_parameters(parameters)
49
+ parameters = parameters.collect { |parameter| "`:#{parameter}`" }
50
+ if parameters.count == 1
51
+ raise StandardError,
52
+ "Required parameter: #{parameters[0]} missing."
53
+ else
54
+ parameters = "#{parameters[..-2].join(', ')} and #{parameters[-1]}"
55
+ raise StandardError,
56
+ "Required parameters: #{parameters} missing."
57
+ end
58
+ end
59
+
60
+ def validate(parameters)
61
+ missing_parameters =
62
+ required_parameters(execution_mode)
63
+ .filter { |parameter| parameters[parameter].nil? }
64
+
65
+ return if missing_parameters.empty?
66
+
67
+ raise_missing_parameters(missing_parameters)
68
+ end
69
+
70
+ def mandatory_parameters
71
+ {}
72
+ end
73
+
74
+ def required_parameters(_)
75
+ []
76
+ end
77
+
78
+ def command_options
79
+ {
80
+ binary: binary,
81
+ logger: logger,
82
+ stdin: stdin,
83
+ stdout: stdout,
84
+ stderr: stderr
85
+ }
86
+ end
87
+ end
88
+ end
89
+ end
90
+ end
@@ -2,57 +2,32 @@
2
2
 
3
3
  require 'ruby_terraform'
4
4
 
5
- require_relative '../configuration/var_captor'
5
+ require_relative './base'
6
6
 
7
7
  module RSpec
8
8
  module Terraform
9
9
  module Helpers
10
- # rubocop:disable Metrics/ClassLength
11
- class Destroy
12
- attr_reader(
13
- :configuration_provider,
14
- :binary,
15
- :logger,
16
- :stdin,
17
- :stdout,
18
- :stderr,
19
- :execution_mode
20
- )
21
-
22
- def initialize(opts = {})
23
- @configuration_provider =
24
- opts[:configuration_provider] || Configuration.identity_provider
25
- @binary = opts[:binary] || 'terraform'
26
- @logger = opts[:logger]
27
- @stdin = opts[:stdin]
28
- @stdout = opts[:stdout]
29
- @stderr = opts[:stderr]
30
- @execution_mode = opts[:execution_mode] || :in_place
31
- end
32
-
10
+ class Destroy < Base
33
11
  def execute(overrides = {}, &block)
34
12
  parameters = with_configuration_provider_parameters(overrides)
35
13
  parameters = with_resolved_vars(parameters, &block)
36
14
 
37
- ensure_required_parameters(parameters)
38
-
39
- clean(parameters)
40
- init(parameters)
41
- destroy(parameters)
15
+ execute_if_required(parameters) do
16
+ validate(parameters)
17
+ clean(parameters)
18
+ init(parameters)
19
+ destroy(parameters)
20
+ end
42
21
  end
43
22
 
44
23
  private
45
24
 
46
- def with_configuration_provider_parameters(parameters)
47
- configuration_provider.resolve(parameters)
48
- end
49
-
50
- def with_resolved_vars(parameters, &block)
51
- return parameters unless block_given?
25
+ def execute_if_required(parameters, &block)
26
+ only_if = parameters[:only_if]
27
+ only_if_args = only_if ? [parameters].slice(0, only_if.arity) : []
28
+ should_execute = only_if ? only_if.call(*only_if_args) : true
52
29
 
53
- var_captor = Configuration::VarCaptor.new(parameters[:vars] || {})
54
- block.call(var_captor)
55
- parameters.merge(vars: var_captor.to_h)
30
+ block.call if should_execute
56
31
  end
57
32
 
58
33
  def required_parameters(execution_mode)
@@ -62,28 +37,6 @@ module RSpec
62
37
  }[execution_mode] || []
63
38
  end
64
39
 
65
- def ensure_required_parameters(parameters)
66
- missing_parameters =
67
- required_parameters(execution_mode)
68
- .filter { |parameter| parameters[parameter].nil? }
69
-
70
- return if missing_parameters.empty?
71
-
72
- raise_missing_parameters(missing_parameters)
73
- end
74
-
75
- def raise_missing_parameters(parameters)
76
- parameters = parameters.collect { |parameter| "`:#{parameter}`" }
77
- if parameters.count == 1
78
- raise StandardError,
79
- "Required parameter: #{parameters[0]} missing."
80
- else
81
- parameters = "#{parameters[..-2].join(', ')} and #{parameters[-1]}"
82
- raise StandardError,
83
- "Required parameters: #{parameters} missing."
84
- end
85
- end
86
-
87
40
  def clean(parameters)
88
41
  return unless execution_mode == :isolated
89
42
 
@@ -137,18 +90,7 @@ module RSpec
137
90
  destroy_parameters
138
91
  end
139
92
  # rubocop:enable Metrics/MethodLength
140
-
141
- def command_options
142
- {
143
- binary: binary,
144
- logger: logger,
145
- stdin: stdin,
146
- stdout: stdout,
147
- stderr: stderr
148
- }
149
- end
150
93
  end
151
- # rubocop:enable Metrics/ClassLength
152
94
  end
153
95
  end
154
96
  end
@@ -2,38 +2,17 @@
2
2
 
3
3
  require 'ruby_terraform'
4
4
 
5
+ require_relative './base'
6
+
5
7
  module RSpec
6
8
  module Terraform
7
9
  module Helpers
8
- # rubocop:disable Metrics/ClassLength
9
- class Output
10
- attr_reader(
11
- :configuration_provider,
12
- :binary,
13
- :logger,
14
- :stdin,
15
- :stdout,
16
- :stderr,
17
- :execution_mode
18
- )
19
-
20
- def initialize(opts = {})
21
- @configuration_provider =
22
- opts[:configuration_provider] || Configuration.identity_provider
23
- @binary = opts[:binary] || 'terraform'
24
- @logger = opts[:logger]
25
- @stdin = opts[:stdin]
26
- @stdout = opts[:stdout]
27
- @stderr = opts[:stderr]
28
- @execution_mode = opts[:execution_mode] || :in_place
29
- end
30
-
10
+ class Output < Base
31
11
  def execute(overrides = {})
32
12
  parameters = with_configuration_provider_parameters(overrides)
33
13
  parameters = with_mandatory_parameters(parameters)
34
14
 
35
- ensure_required_parameters(parameters)
36
-
15
+ validate(parameters)
37
16
  clean(parameters)
38
17
  init(parameters)
39
18
  output_value = output(parameters)
@@ -43,14 +22,14 @@ module RSpec
43
22
 
44
23
  private
45
24
 
46
- def with_configuration_provider_parameters(parameters)
47
- configuration_provider.resolve(parameters)
25
+ def with_mandatory_parameters(parameters)
26
+ parameters.merge(mandatory_parameters)
48
27
  end
49
28
 
50
- def with_mandatory_parameters(parameters)
51
- parameters.merge(
29
+ def mandatory_parameters
30
+ {
52
31
  json: true
53
- )
32
+ }
54
33
  end
55
34
 
56
35
  def required_parameters(execution_mode)
@@ -60,28 +39,6 @@ module RSpec
60
39
  }[execution_mode] || []
61
40
  end
62
41
 
63
- def ensure_required_parameters(parameters)
64
- missing_parameters =
65
- required_parameters(execution_mode)
66
- .filter { |parameter| parameters[parameter].nil? }
67
-
68
- return if missing_parameters.empty?
69
-
70
- raise_missing_parameters(missing_parameters)
71
- end
72
-
73
- def raise_missing_parameters(parameters)
74
- parameters = parameters.collect { |parameter| "`:#{parameter}`" }
75
- if parameters.count == 1
76
- raise StandardError,
77
- "Required parameter: #{parameters[0]} missing."
78
- else
79
- parameters = "#{parameters[..-2].join(', ')} and #{parameters[-1]}"
80
- raise StandardError,
81
- "Required parameters: #{parameters} missing."
82
- end
83
- end
84
-
85
42
  def clean(parameters)
86
43
  return unless execution_mode == :isolated
87
44
 
@@ -134,18 +91,7 @@ module RSpec
134
91
 
135
92
  output_parameters
136
93
  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
147
94
  end
148
95
  end
149
- # rubocop:enable Metrics/ClassLength
150
96
  end
151
97
  end
@@ -4,40 +4,17 @@ require 'ruby_terraform'
4
4
  require 'securerandom'
5
5
  require 'stringio'
6
6
 
7
- require_relative '../configuration/var_captor'
7
+ require_relative './base'
8
8
 
9
9
  module RSpec
10
10
  module Terraform
11
11
  module Helpers
12
- # rubocop:disable Metrics/ClassLength
13
- class Plan
14
- attr_reader(
15
- :configuration_provider,
16
- :binary,
17
- :logger,
18
- :stdin,
19
- :stdout,
20
- :stderr,
21
- :execution_mode
22
- )
23
-
24
- def initialize(opts = {})
25
- @configuration_provider =
26
- opts[:configuration_provider] || Configuration.identity_provider
27
- @binary = opts[:binary] || 'terraform'
28
- @logger = opts[:logger]
29
- @stdin = opts[:stdin]
30
- @stdout = opts[:stdout]
31
- @stderr = opts[:stderr]
32
- @execution_mode = opts[:execution_mode] || :in_place
33
- end
34
-
12
+ class Plan < Base
35
13
  def execute(overrides = {}, &block)
36
14
  parameters = with_configuration_provider_parameters(overrides)
37
15
  parameters = with_resolved_vars(parameters, &block)
38
16
 
39
- ensure_required_parameters(parameters)
40
-
17
+ validate(parameters)
41
18
  clean(parameters)
42
19
  init(parameters)
43
20
  plan_file = plan(parameters)
@@ -48,18 +25,6 @@ module RSpec
48
25
 
49
26
  private
50
27
 
51
- def with_configuration_provider_parameters(parameters)
52
- configuration_provider.resolve(parameters)
53
- end
54
-
55
- def with_resolved_vars(parameters, &block)
56
- return parameters unless block_given?
57
-
58
- var_captor = Configuration::VarCaptor.new(parameters[:vars] || {})
59
- block.call(var_captor)
60
- parameters.merge(vars: var_captor.to_h)
61
- end
62
-
63
28
  def required_parameters(execution_mode)
64
29
  {
65
30
  in_place: [:configuration_directory],
@@ -67,28 +32,6 @@ module RSpec
67
32
  }[execution_mode] || []
68
33
  end
69
34
 
70
- def ensure_required_parameters(parameters)
71
- missing_parameters =
72
- required_parameters(execution_mode)
73
- .filter { |parameter| parameters[parameter].nil? }
74
-
75
- return if missing_parameters.empty?
76
-
77
- raise_missing_parameters(missing_parameters)
78
- end
79
-
80
- def raise_missing_parameters(parameters)
81
- parameters = parameters.collect { |parameter| "`:#{parameter}`" }
82
- if parameters.count == 1
83
- raise StandardError,
84
- "Required parameter: #{parameters[0]} missing."
85
- else
86
- parameters = "#{parameters[..-2].join(', ')} and #{parameters[-1]}"
87
- raise StandardError,
88
- "Required parameters: #{parameters} missing."
89
- end
90
- end
91
-
92
35
  def clean(parameters)
93
36
  return unless execution_mode == :isolated
94
37
 
@@ -177,18 +120,7 @@ module RSpec
177
120
  json: true
178
121
  )
179
122
  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
190
123
  end
191
- # rubocop:enable Metrics/ClassLength
192
124
  end
193
125
  end
194
126
  end
@@ -1,38 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative './base'
3
4
  require_relative '../configuration/var_captor'
4
5
 
5
6
  module RSpec
6
7
  module Terraform
7
8
  module Helpers
8
- class Var
9
- attr_reader(:configuration_provider)
10
-
11
- def initialize(opts = {})
12
- @configuration_provider =
13
- opts[:configuration_provider] || Configuration.identity_provider
14
- end
15
-
9
+ class Var < Base
16
10
  def execute(overrides = {}, &block)
17
11
  parameters = with_configuration_provider_parameters(overrides)
18
12
  parameters = with_resolved_vars(parameters, &block)
19
13
 
20
14
  parameters[:vars][parameters[:name].to_sym]
21
15
  end
22
-
23
- private
24
-
25
- def with_configuration_provider_parameters(parameters)
26
- configuration_provider.resolve(parameters)
27
- end
28
-
29
- def with_resolved_vars(parameters, &block)
30
- return parameters unless block_given?
31
-
32
- var_captor = Configuration::VarCaptor.new(parameters[:vars] || {})
33
- block.call(var_captor)
34
- parameters.merge(vars: var_captor.to_h)
35
- end
36
16
  end
37
17
  end
38
18
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RSpec
4
4
  module Terraform
5
- VERSION = '0.1.0.pre.43'
5
+ VERSION = '0.1.0.pre.45'
6
6
  end
7
7
  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.43
4
+ version: 0.1.0.pre.45
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-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: confidante
@@ -305,6 +305,7 @@ files:
305
305
  - lib/rspec/terraform/configuration/var_captor.rb
306
306
  - lib/rspec/terraform/helpers.rb
307
307
  - lib/rspec/terraform/helpers/apply.rb
308
+ - lib/rspec/terraform/helpers/base.rb
308
309
  - lib/rspec/terraform/helpers/destroy.rb
309
310
  - lib/rspec/terraform/helpers/output.rb
310
311
  - lib/rspec/terraform/helpers/plan.rb