rspec-terraform 0.1.0.pre.20 → 0.1.0.pre.23

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: c33bac6bc11ec62bb0dd06035958076661a9ba193446ddad9c9299c7fc7c1c87
4
- data.tar.gz: f03c579d40424f7b3eeb1d11b2f354e5709148ab71b491702e0c5dd5277893fb
3
+ metadata.gz: 20b9a3c95d0e46b73b0da4b3900f76fc3df5d26a7e7ff2e0301acc6b25cc14f4
4
+ data.tar.gz: 2de99c52157ff998a66f583100fab8237c60611093224e081a8b481b81361daf
5
5
  SHA512:
6
- metadata.gz: f75e6299fa46e44d2ff7c525529495e492346d88c8ae0a9634395d4a623871496487b517710177151e9ae871843506d41be8b57581e67785bdaf9f0efe11cf32
7
- data.tar.gz: 9f44c320439d80991c33e86f075fa4012e88c31cec8c66caaeba2486cf03785a272363e7141ab5a1949ee26837bb41e97db1a93e914e99335399879e20344d85
6
+ metadata.gz: 7c184db2e3ec377f97dc944b98332cdaf78f3f01140e01a06cb5af0ba151eb6a8913e734a971582af5ab01d6a55afec75ca186d69e7fea732b2c065a2d6367f3
7
+ data.tar.gz: 6c46f3220718f37804eed3284eb80757ea0922a1048fc2d179e44efc003026bdd810188f5efcfad0e243b42a675c26399bfa4c065422268f4be0774664020668
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rspec-terraform (0.1.0.pre.20)
4
+ rspec-terraform (0.1.0.pre.23)
5
5
  rspec (>= 3.0)
6
6
  ruby-terraform (= 1.7.0.pre.13)
7
7
 
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RSpec
4
+ module Terraform
5
+ module Configuration
6
+ class Merger
7
+ def merge(left, right)
8
+ merge_top_level(left, right)
9
+ .merge(merge_accumulating_maps(left, right))
10
+ .merge(merge_accumulating_lists(left, right))
11
+ end
12
+
13
+ private
14
+
15
+ def merge_top_level(left, right)
16
+ left.merge(right)
17
+ end
18
+
19
+ def merge_accumulating_maps(left, right)
20
+ %i[vars backend_config].inject({}) do |merged, parameter|
21
+ merge_accumulating_map(parameter, merged, left, right)
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 == {}
31
+
32
+ accumulator.merge(parameter => merged_value)
33
+ end
34
+
35
+ def merge_accumulating_lists(left, right)
36
+ %i[var_files targets replaces plugin_dirs platforms]
37
+ .inject({}) do |merged, parameter|
38
+ merge_accumulating_list(parameter, merged, left, right)
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 == []
48
+
49
+ accumulator.merge(parameter => merged_value)
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -7,7 +7,7 @@ module RSpec
7
7
  module Configuration
8
8
  module Providers
9
9
  class Identity
10
- def resolve(overrides)
10
+ def resolve(overrides = {})
11
11
  overrides
12
12
  end
13
13
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'ruby_terraform'
4
+ require_relative '../merger'
4
5
 
5
6
  module RSpec
6
7
  module Terraform
@@ -11,20 +12,11 @@ module RSpec
11
12
 
12
13
  def initialize(configuration = {})
13
14
  @configuration = configuration
15
+ @merger = Merger.new
14
16
  end
15
17
 
16
18
  def resolve(overrides = {})
17
- left_vars = configuration[:vars] || {}
18
- right_vars = overrides[:vars] || {}
19
- vars = left_vars.merge(right_vars)
20
-
21
- top_level_merge = configuration.merge(overrides)
22
-
23
- if left_vars == {} && right_vars == {}
24
- top_level_merge
25
- else
26
- top_level_merge.merge(vars: vars)
27
- end
19
+ @merger.merge(configuration, overrides)
28
20
  end
29
21
  end
30
22
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'configuration/providers'
4
+ require_relative 'configuration/merger'
4
5
 
5
6
  module RSpec
6
7
  module Terraform
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RSpec
4
4
  module Terraform
5
- VERSION = '0.1.0.pre.20'
5
+ VERSION = '0.1.0.pre.23'
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.20
4
+ version: 0.1.0.pre.23
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-18 00:00:00.000000000 Z
11
+ date: 2022-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -280,6 +280,7 @@ files:
280
280
  - bin/setup
281
281
  - lib/rspec/terraform.rb
282
282
  - lib/rspec/terraform/configuration.rb
283
+ - lib/rspec/terraform/configuration/merger.rb
283
284
  - lib/rspec/terraform/configuration/providers.rb
284
285
  - lib/rspec/terraform/configuration/providers/identity.rb
285
286
  - lib/rspec/terraform/configuration/providers/in_memory.rb