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

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: 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