rspec-terraform 0.1.0.pre.24 → 0.1.0.pre.25

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: 0d7a8abc81671eea02a2fd4f6d3b4f8a3060eca51d50c70ebb76c3b0c064b027
4
- data.tar.gz: c423cb560f674bc848cea3fcfdd57ef21e41742bc2a86e0db74755ec0c86c8d4
3
+ metadata.gz: 55363f2208056bc93d1d421ee0ebc71110552d6d9d10b45f39daba918644df1c
4
+ data.tar.gz: 917d8cdb39c4d951faf1e6fadd38627f4adda1c901dc0451ed570fc1b4dec004
5
5
  SHA512:
6
- metadata.gz: 9623a90a33ba6cd9f7948e3856c3954ef822a9eb94bdd48d44126b467985071e4a27654c1d8848168586a9ead4668d6e407e656163c5b1330500eb48e04c1eec
7
- data.tar.gz: 0f4766cda2dd7a4fe0335094e155f5731d215b25dde91d135777546839859a82377833485ef0b8459dd32a77b9cf705d3934fa14bd3d2b330273d4895d944782
6
+ metadata.gz: 1dc905624bc15111d9baa63d21771a2ecf5b6c2dc5039a92f72dc56d7cf04a45544ff07a3cb12365d757b5ad7bf33674b50897f982d15513c40848082f5a2f7c
7
+ data.tar.gz: 1ece7a058129b5d71618bb299ccf8e07da54e8bbd6b45ec86ed8f6775f2247b7e13f184d6a8c1a7eb504235c5bd167dced7f8a605f4f9f73060d3e0e9e279ca3
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rspec-terraform (0.1.0.pre.24)
4
+ rspec-terraform (0.1.0.pre.25)
5
5
  rspec (>= 3.0)
6
6
  ruby-terraform (= 1.7.0.pre.13)
7
7
 
@@ -8,12 +8,16 @@ module RSpec
8
8
  module Terraform
9
9
  module Helpers
10
10
  class Apply
11
- attr_reader(:overrides, :configuration_provider)
11
+ attr_reader(
12
+ :overrides, :configuration_provider, :binary, :execution_mode
13
+ )
12
14
 
13
15
  def initialize(overrides = {}, configuration_provider = nil)
14
16
  @overrides = overrides
15
17
  @configuration_provider =
16
18
  configuration_provider || Configuration.identity_provider
19
+ @binary = RSpec.configuration.terraform_binary
20
+ @execution_mode = RSpec.configuration.terraform_execution_mode
17
21
  end
18
22
 
19
23
  def execute(&block)
@@ -23,6 +27,7 @@ module RSpec
23
27
 
24
28
  ensure_required_parameters(parameters)
25
29
 
30
+ clean(parameters)
26
31
  init(parameters)
27
32
  apply(parameters)
28
33
  end
@@ -48,19 +53,54 @@ module RSpec
48
53
  )
49
54
  end
50
55
 
56
+ def required_parameters(execution_mode)
57
+ {
58
+ in_place: [:configuration_directory],
59
+ isolated: %i[source_directory configuration_directory]
60
+ }[execution_mode] || []
61
+ end
62
+
51
63
  def ensure_required_parameters(parameters)
52
- return if parameters[:configuration_directory]
64
+ missing_parameters =
65
+ required_parameters(execution_mode)
66
+ .filter { |parameter| parameters[parameter].nil? }
53
67
 
54
- throw StandardError.new(
55
- 'No Terraform configuration directory specified.'
56
- )
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
+ def clean(parameters)
86
+ return unless execution_mode == :isolated
87
+
88
+ FileUtils.rm_rf(parameters[:configuration_directory])
89
+ FileUtils.mkdir_p(parameters[:configuration_directory])
57
90
  end
58
91
 
59
92
  def init(parameters)
60
- init_command.execute(
93
+ execution_parameters = {
61
94
  chdir: parameters[:configuration_directory],
62
95
  input: parameters[:input]
63
- )
96
+ }
97
+ if execution_mode == :isolated
98
+ execution_parameters =
99
+ execution_parameters
100
+ .merge(from_module: parameters[:source_directory])
101
+ end
102
+
103
+ init_command.execute(execution_parameters)
64
104
  end
65
105
 
66
106
  def apply(parameters)
@@ -74,15 +114,11 @@ module RSpec
74
114
  end
75
115
 
76
116
  def init_command
77
- RubyTerraform::Commands::Init.new(
78
- binary: RSpec.configuration.terraform_binary
79
- )
117
+ RubyTerraform::Commands::Init.new(binary: binary)
80
118
  end
81
119
 
82
120
  def apply_command
83
- RubyTerraform::Commands::Apply.new(
84
- binary: RSpec.configuration.terraform_binary
85
- )
121
+ RubyTerraform::Commands::Apply.new(binary: binary)
86
122
  end
87
123
  end
88
124
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RSpec
4
4
  module Terraform
5
- VERSION = '0.1.0.pre.24'
5
+ VERSION = '0.1.0.pre.25'
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.24
4
+ version: 0.1.0.pre.25
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-20 00:00:00.000000000 Z
11
+ date: 2022-08-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec