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

Sign up to get free protection for your applications and to get access to all the features.
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