lib/rspec/terraform/configuration/merger.rb in rspec-terraform-0.1.0.pre.22 vs lib/rspec/terraform/configuration/merger.rb in rspec-terraform-0.1.0.pre.23

- old
+ new

@@ -15,32 +15,39 @@ def merge_top_level(left, right) left.merge(right) end def merge_accumulating_maps(left, right) - left_vars = left[:vars] || {} - right_vars = right[:vars] || {} - vars = left_vars.merge(right_vars) - - merged = {} - unless left_vars == {} && right_vars == {} - merged = merged.merge(vars: vars) + %i[vars backend_config].inject({}) do |merged, parameter| + merge_accumulating_map(parameter, merged, left, right) end + end - merged + def merge_accumulating_map(parameter, accumulator, left, right) + left_value = left[parameter] || {} + right_value = right[parameter] || {} + merged_value = left_value.merge(right_value) + + return accumulator if merged_value == {} + + accumulator.merge(parameter => merged_value) end def merge_accumulating_lists(left, right) - left_var_files = left[:var_files] || [] - right_var_files = right[:var_files] || [] - var_files = left_var_files + right_var_files - - merged = {} - unless left_var_files == [] && right_var_files == [] - merged = merged.merge(var_files: var_files) + %i[var_files targets replaces plugin_dirs platforms] + .inject({}) do |merged, parameter| + merge_accumulating_list(parameter, merged, left, right) end + end - merged + def merge_accumulating_list(parameter, accumulator, left, right) + left_value = left[parameter] || [] + right_value = right[parameter] || [] + merged_value = left_value + right_value + + return accumulator if merged_value == [] + + accumulator.merge(parameter => merged_value) end end end end end