spec/kitchen/data_munger_spec.rb in test-kitchen-1.14.1 vs spec/kitchen/data_munger_spec.rb in test-kitchen-1.14.2

- old
+ new

@@ -19,134 +19,123 @@ require_relative "../spec_helper" require "kitchen/data_munger" module Kitchen # rubocop:disable Metrics/ModuleLength - describe DataMunger do - describe "#platform_data" do - it "returns an array of platform data" do DataMunger.new( - :platforms => [ + platforms: [ { - :name => "one", - :stuff => "junk" + name: "one", + stuff: "junk", }, { - :name => "two", - :misc => "things" - } + name: "two", + misc: "things", + }, ] ).platform_data.must_equal([ - { - :name => "one", - :stuff => "junk" - }, - { - :name => "two", - :misc => "things" - } - ]) + { + name: "one", + stuff: "junk", + }, + { + name: "two", + misc: "things", + }, + ]) end it "returns an empty array if platforms is not defined" do DataMunger.new({}).platform_data.must_equal([]) end end describe "#suite_data" do - it "returns an array of suite data" do DataMunger.new( - :suites => [ + suites: [ { - :name => "one", - :stuff => "junk" + name: "one", + stuff: "junk", }, { - :name => "two", - :misc => "things" - } + name: "two", + misc: "things", + }, ] ).suite_data.must_equal([ - { - :name => "one", - :stuff => "junk" - }, - { - :name => "two", - :misc => "things" - } - ]) + { + name: "one", + stuff: "junk", + }, + { + name: "two", + misc: "things", + }, + ]) end it "returns an empty array if suites is not defined" do DataMunger.new({}).suite_data.must_equal([]) end end DATA_KEYS = { - :driver => :name, - :provisioner => :name, - :transport => :name, - :verifier => :name - } + driver: :name, + provisioner: :name, + transport: :name, + verifier: :name, + }.freeze DATA_KEYS.each_pair do |key, default_key| - describe "##{key}" do - describe "from single source" do - it "returns empty hash if no common #{key} hash is provided" do DataMunger.new( {}, {} ).public_send("#{key}_data_for", "suite", "platform").must_equal({}) end it "drops common #{key} if hash is nil" do DataMunger.new( { - key => nil + key => nil, }, {} ).public_send("#{key}_data_for", "suite", "plat").must_equal({}) end it "returns kitchen config #{key} name" do DataMunger.new( {}, - { - :defaults => { - key => "thenoseknows" - } + defaults: { + key => "thenoseknows", } ).public_send("#{key}_data_for", "suite", "platform").must_equal( default_key => "thenoseknows" ) end it "returns kitchen config #{key} name from callable" do DataMunger.new( {}, - { - :defaults => { - key => ->(suite, platform) { "#{suite}++#{platform}" } - } + defaults: { + key => ->(suite, platform) { "#{suite}++#{platform}" }, } ).public_send("#{key}_data_for", "suite", "platform").must_equal( default_key => "suite++platform" ) end it "returns common #{key} name" do DataMunger.new( { - key => "starship" + key => "starship", }, {} ).public_send("#{key}_data_for", "suite", "platform").must_equal( default_key => "starship" ) @@ -155,12 +144,12 @@ it "returns common #{key} config" do DataMunger.new( { key => { default_key => "starship", - :speed => 42 - } + :speed => 42, + }, }, {} ).public_send("#{key}_data_for", "suite", "platform").must_equal( default_key => "starship", :speed => 42 @@ -168,60 +157,60 @@ end it "returns empty hash if platform config doesn't have #{key} hash" do DataMunger.new( { - :platforms => [ - { :name => "plat" } - ] + platforms: [ + { name: "plat" }, + ], }, {} ).public_send("#{key}_data_for", "suite", "plat").must_equal({}) end it "drops platform #{key} if hash is nil" do DataMunger.new( { - :platforms => [ + platforms: [ { :name => "plat", - key => nil - } - ] + key => nil, + }, + ], }, {} ).public_send("#{key}_data_for", "suite", "plat").must_equal({}) end it "returns platform #{key} name" do DataMunger.new( { - :platforms => [ + platforms: [ { :name => "plat", - key => "flip" - } - ] + key => "flip", + }, + ], }, {} ).public_send("#{key}_data_for", "suite", "plat").must_equal( default_key => "flip" ) end it "returns platform config containing #{key} hash" do DataMunger.new( { - :platforms => [ + platforms: [ { :name => "plat", key => { default_key => "flip", - :flop => "yep" - } - } - ] + :flop => "yep", + }, + }, + ], }, {} ).public_send("#{key}_data_for", "suite", "plat").must_equal( default_key => "flip", :flop => "yep" @@ -229,712 +218,707 @@ end it "returns empty hash if suite config doesn't have #{key} hash" do DataMunger.new( { - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, {} ).public_send("#{key}_data_for", "sweet", "platform").must_equal({}) end it "drops suite #{key} hash is nil" do DataMunger.new( { - :suites => [ + suites: [ { :name => "suite", - key => nil - } - ] + key => nil, + }, + ], }, {} ).public_send("#{key}_data_for", "suite", "plat").must_equal({}) end it "returns suite #{key} name" do DataMunger.new( { - :suites => [ + suites: [ { :name => "sweet", - key => "waz" - } - ] + key => "waz", + }, + ], }, {} ).public_send("#{key}_data_for", "sweet", "platform").must_equal( default_key => "waz" ) end it "returns suite config containing #{key} hash" do DataMunger.new( { - :suites => [ + suites: [ { :name => "sweet", key => { default_key => "waz", - :up => "nope" - } - } - ] + :up => "nope", + }, + }, + ], }, {} ).public_send("#{key}_data_for", "sweet", "platform").must_equal( default_key => "waz", :up => "nope" ) end end describe "from multiple sources merging" do - it "suite into platform into common" do DataMunger.new( { key => { default_key => "commony", :color => "purple", - :fruit => %w[apple pear], - :deep => { :common => "junk" } + :fruit => %w{apple pear}, + :deep => { common: "junk" }, }, :platforms => [ { :name => "plat", key => { default_key => "platformy", :fruit => ["banana"], - :deep => { :platform => "stuff" } - } - } + :deep => { platform: "stuff" }, + }, + }, ], :suites => [ { :name => "sweet", key => { default_key => "suitey", :vehicle => "car", - :deep => { :suite => "things" } - } - } - ] + :deep => { suite: "things" }, + }, + }, + ], }, {} ).public_send("#{key}_data_for", "sweet", "plat").must_equal( default_key => "suitey", :color => "purple", :fruit => ["banana"], :vehicle => "car", :deep => { - :common => "junk", - :platform => "stuff", - :suite => "things" + common: "junk", + platform: "stuff", + suite: "things", } ) end it "platform into common" do DataMunger.new( { key => { default_key => "commony", :color => "purple", - :fruit => %w[apple pear], - :deep => { :common => "junk" } + :fruit => %w{apple pear}, + :deep => { common: "junk" }, }, :platforms => [ { :name => "plat", key => { default_key => "platformy", :fruit => ["banana"], - :deep => { :platform => "stuff" } - } - } - ] + :deep => { platform: "stuff" }, + }, + }, + ], }, {} ).public_send("#{key}_data_for", "sweet", "plat").must_equal( default_key => "platformy", :color => "purple", :fruit => ["banana"], :deep => { - :common => "junk", - :platform => "stuff" + common: "junk", + platform: "stuff", } ) end it "suite into common" do DataMunger.new( { key => { default_key => "commony", :color => "purple", - :fruit => %w[apple pear], - :deep => { :common => "junk" } + :fruit => %w{apple pear}, + :deep => { common: "junk" }, }, :suites => [ { :name => "sweet", key => { default_key => "suitey", :vehicle => "car", - :deep => { :suite => "things" } - } - } - ] + :deep => { suite: "things" }, + }, + }, + ], }, {} ).public_send("#{key}_data_for", "sweet", "plat").must_equal( default_key => "suitey", :color => "purple", - :fruit => %w[apple pear], + :fruit => %w{apple pear}, :vehicle => "car", :deep => { - :common => "junk", - :suite => "things" + common: "junk", + suite: "things", } ) end it "suite into platform" do DataMunger.new( { - :platforms => [ + platforms: [ { :name => "plat", key => { default_key => "platformy", :fruit => ["banana"], - :deep => { :platform => "stuff" } - } - } + :deep => { platform: "stuff" }, + }, + }, ], - :suites => [ + suites: [ { :name => "sweet", key => { default_key => "suitey", :vehicle => "car", - :deep => { :suite => "things" } - } - } - ] + :deep => { suite: "things" }, + }, + }, + ], }, {} ).public_send("#{key}_data_for", "sweet", "plat").must_equal( default_key => "suitey", :fruit => ["banana"], :vehicle => "car", :deep => { - :platform => "stuff", - :suite => "things" + platform: "stuff", + suite: "things", } ) end end end end describe "primary Chef data" do - describe "in a suite" do - it "moves attributes into provisioner" do DataMunger.new( { - :provisioner => "chefy", - :suites => [ + provisioner: "chefy", + suites: [ { - :name => "sweet", - :attributes => { :one => "two" } - } - ] + name: "sweet", + attributes: { one: "two" }, + }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( - :name => "chefy", - :attributes => { :one => "two" } + name: "chefy", + attributes: { one: "two" } ) end it "moves run_list into provisioner" do DataMunger.new( { - :provisioner => "chefy", - :suites => [ + provisioner: "chefy", + suites: [ { - :name => "sweet", - :run_list => %w[one two] - } - ] + name: "sweet", + run_list: %w{one two}, + }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( - :name => "chefy", - :run_list => %w[one two] + name: "chefy", + run_list: %w{one two} ) end it "moves named_run_list into provisioner" do DataMunger.new( { - :provisioner => "chefy", - :suites => [ + provisioner: "chefy", + suites: [ { - :name => "sweet", - :named_run_list => "other_run_list" - } - ] + name: "sweet", + named_run_list: "other_run_list", + }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( - :name => "chefy", - :named_run_list => "other_run_list" + name: "chefy", + named_run_list: "other_run_list" ) end it "maintains run_list in provisioner" do DataMunger.new( { - :provisioner => "chefy", - :suites => [ + provisioner: "chefy", + suites: [ { - :name => "sweet", - :provisioner => { - :run_list => %w[one two] - } - } - ] + name: "sweet", + provisioner: { + run_list: %w{one two}, + }, + }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( - :name => "chefy", - :run_list => %w[one two] + name: "chefy", + run_list: %w{one two} ) end it "merge provisioner into attributes if provisioner exists" do DataMunger.new( { - :suites => [ + suites: [ { - :name => "sweet", - :attributes => { :one => "two" }, - :provisioner => "chefy" - } - ] + name: "sweet", + attributes: { one: "two" }, + provisioner: "chefy", + }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( - :name => "chefy", - :attributes => { :one => "two" } + name: "chefy", + attributes: { one: "two" } ) end it "merge provisioner into run_list if provisioner exists" do DataMunger.new( { - :suites => [ + suites: [ { - :name => "sweet", - :run_list => %w[one two], - :provisioner => "chefy" - } - ] + name: "sweet", + run_list: %w{one two}, + provisioner: "chefy", + }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( - :name => "chefy", - :run_list => %w[one two] + name: "chefy", + run_list: %w{one two} ) end it "merge provisioner into named_run_list if provisioner exists" do DataMunger.new( { - :suites => [ + suites: [ { - :name => "sweet", - :named_run_list => "other_run_list", - :provisioner => "chefy" - } - ] + name: "sweet", + named_run_list: "other_run_list", + provisioner: "chefy", + }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( - :name => "chefy", - :named_run_list => "other_run_list" + name: "chefy", + named_run_list: "other_run_list" ) end it "drops nil run_list" do DataMunger.new( { - :suites => [ + suites: [ { - :name => "sweet", - :run_list => nil, - :provisioner => "chefy" - } - ] + name: "sweet", + run_list: nil, + provisioner: "chefy", + }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( - :name => "chefy" + name: "chefy" ) end it "drops nil attributes" do DataMunger.new( { - :suites => [ + suites: [ { - :name => "sweet", - :attributes => nil, - :provisioner => "chefy" - } - ] + name: "sweet", + attributes: nil, + provisioner: "chefy", + }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( - :name => "chefy" + name: "chefy" ) end end describe "in a platform" do - it "moves attributes into provisioner" do DataMunger.new( { - :provisioner => "chefy", - :platforms => [ + provisioner: "chefy", + platforms: [ { - :name => "plat", - :attributes => { :one => "two" } - } - ] + name: "plat", + attributes: { one: "two" }, + }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( - :name => "chefy", - :attributes => { :one => "two" } + name: "chefy", + attributes: { one: "two" } ) end it "moves run_list into provisioner" do DataMunger.new( { - :provisioner => "chefy", - :platforms => [ + provisioner: "chefy", + platforms: [ { - :name => "plat", - :run_list => %w[one two] - } - ] + name: "plat", + run_list: %w{one two}, + }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( - :name => "chefy", - :run_list => %w[one two] + name: "chefy", + run_list: %w{one two} ) end it "moves named_run_list into provisioner" do DataMunger.new( { - :provisioner => "chefy", - :platforms => [ + provisioner: "chefy", + platforms: [ { - :name => "plat", - :named_run_list => "other_run_list" - } - ] + name: "plat", + named_run_list: "other_run_list", + }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( - :name => "chefy", - :named_run_list => "other_run_list" + name: "chefy", + named_run_list: "other_run_list" ) end it "maintains run_list in provisioner" do DataMunger.new( { - :provisioner => "chefy", - :platforms => [ + provisioner: "chefy", + platforms: [ { - :name => "plat", - :provisioner => { - :run_list => %w[one two] - } - } - ] + name: "plat", + provisioner: { + run_list: %w{one two}, + }, + }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( - :name => "chefy", - :run_list => %w[one two] + name: "chefy", + run_list: %w{one two} ) end it "merge provisioner into attributes if provisioner exists" do DataMunger.new( { - :platforms => [ + platforms: [ { - :name => "plat", - :attributes => { :one => "two" }, - :provisioner => "chefy" - } - ] + name: "plat", + attributes: { one: "two" }, + provisioner: "chefy", + }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( - :name => "chefy", - :attributes => { :one => "two" } + name: "chefy", + attributes: { one: "two" } ) end it "merge provisioner into run_list if provisioner exists" do DataMunger.new( { - :platforms => [ + platforms: [ { - :name => "plat", - :run_list => %w[one two], - :provisioner => "chefy" - } - ] + name: "plat", + run_list: %w{one two}, + provisioner: "chefy", + }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( - :name => "chefy", - :run_list => %w[one two] + name: "chefy", + run_list: %w{one two} ) end it "merge provisioner into named_run_list if provisioner exists" do DataMunger.new( { - :platforms => [ + platforms: [ { - :name => "plat", - :named_run_list => "other_run_list", - :provisioner => "chefy" - } - ] + name: "plat", + named_run_list: "other_run_list", + provisioner: "chefy", + }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( - :name => "chefy", - :named_run_list => "other_run_list" + name: "chefy", + named_run_list: "other_run_list" ) end it "drops nil run_list" do DataMunger.new( { - :platforms => [ + platforms: [ { - :name => "plat", - :run_list => nil, - :provisioner => "chefy" - } - ] + name: "plat", + run_list: nil, + provisioner: "chefy", + }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( - :name => "chefy" + name: "chefy" ) end it "drops nil attributes" do DataMunger.new( { - :platforms => [ + platforms: [ { - :name => "plat", - :attributes => nil, - :provisioner => "chefy" - } - ] + name: "plat", + attributes: nil, + provisioner: "chefy", + }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( - :name => "chefy" + name: "chefy" ) end end describe "in a suite and platform" do - it "merges suite attributes into platform attributes" do DataMunger.new( { - :provisioner => "chefy", - :platforms => [ + provisioner: "chefy", + platforms: [ { - :name => "plat", - :attributes => { - :color => "blue", - :deep => { :platform => "much" } - } - } + name: "plat", + attributes: { + color: "blue", + deep: { platform: "much" }, + }, + }, ], - :suites => [ + suites: [ { - :name => "sweet", - :attributes => { - :color => "pink", - :deep => { :suite => "wow" } - } - } - ] + name: "sweet", + attributes: { + color: "pink", + deep: { suite: "wow" }, + }, + }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( - :name => "chefy", - :attributes => { - :color => "pink", - :deep => { - :suite => "wow", - :platform => "much" - } + name: "chefy", + attributes: { + color: "pink", + deep: { + suite: "wow", + platform: "much", + }, } ) end it "concats suite run_list to platform run_list" do DataMunger.new( { - :provisioner => "chefy", - :platforms => [ + provisioner: "chefy", + platforms: [ { - :name => "plat", - :run_list => %w[one two] - } + name: "plat", + run_list: %w{one two}, + }, ], - :suites => [ + suites: [ { - :name => "sweet", - :run_list => %w[three four] - } - ] + name: "sweet", + run_list: %w{three four}, + }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( - :name => "chefy", - :run_list => %w[one two three four] + name: "chefy", + run_list: %w{one two three four} ) end it "concats suite run_list in provisioner to platform run_list" do DataMunger.new( { - :provisioner => "chefy", - :platforms => [ + provisioner: "chefy", + platforms: [ { - :name => "plat", - :run_list => %w[one two] - } + name: "plat", + run_list: %w{one two}, + }, ], - :suites => [ + suites: [ { - :name => "sweet", - :provisioner => { - :run_list => %w[three four] - } - } - ] + name: "sweet", + provisioner: { + run_list: %w{three four}, + }, + }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( - :name => "chefy", - :run_list => %w[one two three four] + name: "chefy", + run_list: %w{one two three four} ) end it "concats suite run_list to platform run_list in provisioner" do DataMunger.new( { - :provisioner => "chefy", - :platforms => [ + provisioner: "chefy", + platforms: [ { - :name => "plat", - :provisioner => { - :run_list => %w[one two] - } - } + name: "plat", + provisioner: { + run_list: %w{one two}, + }, + }, ], - :suites => [ + suites: [ { - :name => "sweet", - :run_list => %w[three four] - } - ] + name: "sweet", + run_list: %w{three four}, + }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( - :name => "chefy", - :run_list => %w[one two three four] + name: "chefy", + run_list: %w{one two three four} ) end it "concats to nil run_lists into an empty Array" do DataMunger.new( { - :provisioner => "chefy", - :platforms => [ + provisioner: "chefy", + platforms: [ { - :name => "plat", - :provisioner => { - :run_list => nil - } - } + name: "plat", + provisioner: { + run_list: nil, + }, + }, ], - :suites => [ + suites: [ { - :name => "sweet", - :run_list => nil - } - ] + name: "sweet", + run_list: nil, + }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( - :name => "chefy", - :run_list => [] + name: "chefy", + run_list: [] ) end it "does not corrupt run_list data for multiple suite/platform pairs" do munger = DataMunger.new( { - :provisioner => "chefy", - :platforms => [ + provisioner: "chefy", + platforms: [ { - :name => "p1" + name: "p1", }, { - :name => "p2", - :run_list => %w[one two] - } + name: "p2", + run_list: %w{one two}, + }, ], - :suites => [ + suites: [ { - :name => "s1", - :run_list => %w[alpha beta] + name: "s1", + run_list: %w{alpha beta}, }, { - :name => "s2", - :provisioner => { - :run_list => %w[three four] - } - } - ] + name: "s2", + provisioner: { + run_list: %w{three four}, + }, + }, + ], }, {} ) # call munger for other data to cause any necessary internal @@ -942,58 +926,52 @@ munger.provisioner_data_for("s1", "p1") munger.provisioner_data_for("s1", "p2") munger.provisioner_data_for("s2", "p1") munger.provisioner_data_for("s2", "p2").must_equal( - :name => "chefy", - :run_list => %w[one two three four] + name: "chefy", + run_list: %w{one two three four} ) end end end describe "kitchen config" do - [:kitchen_root, :test_base_path].each do |key| - describe "for #{key}" do - describe "for #driver_data_for" do - it "is returned when provided" do DataMunger.new( { - :driver => "chefy", - :platforms => [ - { :name => "plat" } + driver: "chefy", + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, - { - key => "datvalue" - } + key => "datvalue" ).driver_data_for("sweet", "plat").must_equal( :name => "chefy", key => "datvalue" ) end it "is returned when provided in user data" do DataMunger.new( { - :kitchen => { - key => "datvalue" + kitchen: { + key => "datvalue", }, - :driver => "chefy", - :platforms => [ - { :name => "plat" } + driver: "chefy", + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, {} ).driver_data_for("sweet", "plat").must_equal( :name => "chefy", key => "datvalue" @@ -1001,86 +979,81 @@ end it "user data value beats provided value" do DataMunger.new( { - :kitchen => { - key => "datvalue" + kitchen: { + key => "datvalue", }, - :driver => "chefy", - :platforms => [ - { :name => "plat" } + driver: "chefy", + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, - { - key => "ilose" - } + key => "ilose" ).driver_data_for("sweet", "plat").must_equal( :name => "chefy", key => "datvalue" ) end it "rejects any value in driver data" do DataMunger.new( { - :driver => { + driver: { :name => "chefy", - key => "imevil" + key => "imevil", }, - :platforms => [ - { :name => "plat" } + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, {} ).driver_data_for("sweet", "plat").must_equal( - :name => "chefy" + name: "chefy" ) end end describe "for #provisioner_data_for" do - it "is returned when provided" do DataMunger.new( { - :provisioner => "chefy", - :platforms => [ - { :name => "plat" } + provisioner: "chefy", + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, - { - key => "datvalue" - } + key => "datvalue" ).provisioner_data_for("sweet", "plat").must_equal( :name => "chefy", key => "datvalue" ) end it "is returned when provided in user data" do DataMunger.new( { - :kitchen => { - key => "datvalue" + kitchen: { + key => "datvalue", }, - :provisioner => "chefy", - :platforms => [ - { :name => "plat" } + provisioner: "chefy", + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( :name => "chefy", key => "datvalue" @@ -1088,86 +1061,81 @@ end it "user data value beats provided value" do DataMunger.new( { - :kitchen => { - key => "datvalue" + kitchen: { + key => "datvalue", }, - :provisioner => "chefy", - :platforms => [ - { :name => "plat" } + provisioner: "chefy", + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, - { - key => "ilose" - } + key => "ilose" ).provisioner_data_for("sweet", "plat").must_equal( :name => "chefy", key => "datvalue" ) end it "rejects any value in provisioner data" do DataMunger.new( { - :provisioner => { + provisioner: { :name => "chefy", - key => "imevil" + key => "imevil", }, - :platforms => [ - { :name => "plat" } + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( - :name => "chefy" + name: "chefy" ) end end describe "for #verifier_data_for" do - it "is returned when provided" do DataMunger.new( { - :verifier => "chefy", - :platforms => [ - { :name => "plat" } + verifier: "chefy", + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, - { - key => "datvalue" - } + key => "datvalue" ).verifier_data_for("sweet", "plat").must_equal( :name => "chefy", key => "datvalue" ) end it "is returned when provided in user data" do DataMunger.new( { - :kitchen => { - key => "datvalue" + kitchen: { + key => "datvalue", }, - :verifier => "chefy", - :platforms => [ - { :name => "plat" } + verifier: "chefy", + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, {} ).verifier_data_for("sweet", "plat").must_equal( :name => "chefy", key => "datvalue" @@ -1175,86 +1143,81 @@ end it "user data value beats provided value" do DataMunger.new( { - :kitchen => { - key => "datvalue" + kitchen: { + key => "datvalue", }, - :verifier => "chefy", - :platforms => [ - { :name => "plat" } + verifier: "chefy", + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, - { - key => "ilose" - } + key => "ilose" ).verifier_data_for("sweet", "plat").must_equal( :name => "chefy", key => "datvalue" ) end it "rejects any value in verifier data" do DataMunger.new( { - :verifier => { + verifier: { :version => "chefy", - key => "imevil" + key => "imevil", }, - :platforms => [ - { :name => "plat" } + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, {} ).verifier_data_for("sweet", "plat").must_equal( - :version => "chefy" + version: "chefy" ) end end describe "for #transport_data_for" do - it "is returned when provided" do DataMunger.new( { - :transport => "pipes", - :platforms => [ - { :name => "plat" } + transport: "pipes", + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, - { - key => "datvalue" - } + key => "datvalue" ).transport_data_for("sweet", "plat").must_equal( :name => "pipes", key => "datvalue" ) end it "is returned when provided in user data" do DataMunger.new( { - :kitchen => { - key => "datvalue" + kitchen: { + key => "datvalue", }, - :transport => "pipes", - :platforms => [ - { :name => "plat" } + transport: "pipes", + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, {} ).transport_data_for("sweet", "plat").must_equal( :name => "pipes", key => "datvalue" @@ -1262,92 +1225,85 @@ end it "user data value beats provided value" do DataMunger.new( { - :kitchen => { - key => "datvalue" + kitchen: { + key => "datvalue", }, - :transport => "pipes", - :platforms => [ - { :name => "plat" } + transport: "pipes", + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, - { - key => "ilose" - } + key => "ilose" ).transport_data_for("sweet", "plat").must_equal( :name => "pipes", key => "datvalue" ) end it "rejects any value in transport data" do DataMunger.new( { - :transport => { + transport: { :name => "pipes", - key => "imevil" + key => "imevil", }, - :platforms => [ - { :name => "plat" } + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, {} ).transport_data_for("sweet", "plat").must_equal( - :name => "pipes" + name: "pipes" ) end end end end [:log_level].each do |key| - describe "for #{key}" do - describe "for #driver_data_for" do - it "is returned when provided" do DataMunger.new( { - :driver => "chefy", - :platforms => [ - { :name => "plat" } + driver: "chefy", + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, - { - key => "datvalue" - } + key => "datvalue" ).driver_data_for("sweet", "plat").must_equal( :name => "chefy", key => "datvalue" ) end it "is returned when provided in user data" do DataMunger.new( { - :kitchen => { - key => "datvalue" + kitchen: { + key => "datvalue", }, - :driver => "chefy", - :platforms => [ - { :name => "plat" } + driver: "chefy", + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, {} ).driver_data_for("sweet", "plat").must_equal( :name => "chefy", key => "datvalue" @@ -1355,66 +1311,63 @@ end it "user data value beats provided value" do DataMunger.new( { - :kitchen => { - key => "datvalue" + kitchen: { + key => "datvalue", }, - :driver => "chefy", - :platforms => [ - { :name => "plat" } + driver: "chefy", + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, - { - key => "ilose" - } + key => "ilose" ).driver_data_for("sweet", "plat").must_equal( :name => "chefy", key => "datvalue" ) end it "rejects any value in driver data" do DataMunger.new( { - :driver => { + driver: { :name => "chefy", - key => "imevil" + key => "imevil", }, - :platforms => [ - { :name => "plat" } + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, {} ).driver_data_for("sweet", "plat").must_equal( - :name => "chefy" + name: "chefy" ) end end describe "for #provisioner_data_for" do - it "uses value in provisioner data" do DataMunger.new( { - :provisioner => { + provisioner: { :name => "chefy", - key => "datvalue" + key => "datvalue", }, - :platforms => [ - { :name => "plat" } + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( :name => "chefy", key => "datvalue" @@ -1422,63 +1375,60 @@ end it "rejects any value in user data" do DataMunger.new( { - :kitchen => { - key => "imevil" + kitchen: { + key => "imevil", }, - :provisioner => "chefy", - :platforms => [ - { :name => "plat" } + provisioner: "chefy", + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( - :name => "chefy" + name: "chefy" ) end end describe "for #verifier_data_for" do - it "is returned when provided" do DataMunger.new( { - :verifier => "chefy", - :platforms => [ - { :name => "plat" } + verifier: "chefy", + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, - { - key => "datvalue" - } + key => "datvalue" ).verifier_data_for("sweet", "plat").must_equal( :name => "chefy", key => "datvalue" ) end it "is returned when provided in user data" do DataMunger.new( { - :kitchen => { - key => "datvalue" + kitchen: { + key => "datvalue", }, - :verifier => "chefy", - :platforms => [ - { :name => "plat" } + verifier: "chefy", + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, {} ).verifier_data_for("sweet", "plat").must_equal( :name => "chefy", key => "datvalue" @@ -1486,86 +1436,81 @@ end it "user data value beats provided value" do DataMunger.new( { - :kitchen => { - key => "datvalue" + kitchen: { + key => "datvalue", }, - :verifier => "chefy", - :platforms => [ - { :name => "plat" } + verifier: "chefy", + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, - { - key => "ilose" - } + key => "ilose" ).verifier_data_for("sweet", "plat").must_equal( :name => "chefy", key => "datvalue" ) end it "rejects any value in verifier data" do DataMunger.new( { - :verifier => { + verifier: { :version => "chefy", - key => "imevil" + key => "imevil", }, - :platforms => [ - { :name => "plat" } + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, {} ).verifier_data_for("sweet", "plat").must_equal( - :version => "chefy" + version: "chefy" ) end end describe "for #transport_data_for" do - it "is returned when provided" do DataMunger.new( { - :transport => "pipes", - :platforms => [ - { :name => "plat" } + transport: "pipes", + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, - { - key => "datvalue" - } + key => "datvalue" ).transport_data_for("sweet", "plat").must_equal( :name => "pipes", key => "datvalue" ) end it "is returned when provided in user data" do DataMunger.new( { - :kitchen => { - key => "datvalue" + kitchen: { + key => "datvalue", }, - :transport => "pipes", - :platforms => [ - { :name => "plat" } + transport: "pipes", + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, {} ).transport_data_for("sweet", "plat").must_equal( :name => "pipes", key => "datvalue" @@ -1573,373 +1518,366 @@ end it "user data value beats provided value" do DataMunger.new( { - :kitchen => { - key => "datvalue" + kitchen: { + key => "datvalue", }, - :transport => "pipes", - :platforms => [ - { :name => "plat" } + transport: "pipes", + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, - { - key => "ilose" - } + key => "ilose" ).transport_data_for("sweet", "plat").must_equal( :name => "pipes", key => "datvalue" ) end it "rejects any value in transport data" do DataMunger.new( { - :transport => { + transport: { :name => "pipes", - key => "imevil" + key => "imevil", }, - :platforms => [ - { :name => "plat" } + platforms: [ + { name: "plat" }, ], - :suites => [ - { :name => "sweet" } - ] + suites: [ + { name: "sweet" }, + ], }, {} ).transport_data_for("sweet", "plat").must_equal( - :name => "pipes" + name: "pipes" ) end end end end end describe "legacy driver_config and driver_plugin" do - describe "from a single source" do - it "returns common driver name" do DataMunger.new( { - :driver_plugin => "starship" + driver_plugin: "starship", }, {} ).driver_data_for("suite", "platform").must_equal( - :name => "starship" + name: "starship" ) end it "merges driver into driver_plugin if driver exists" do DataMunger.new( { - :driver_plugin => "starship", - :driver => "zappa" + driver_plugin: "starship", + driver: "zappa", }, {} ).driver_data_for("suite", "platform").must_equal( - :name => "zappa" + name: "zappa" ) end it "returns common driver config" do DataMunger.new( { - :driver_plugin => "starship", - :driver_config => { - :speed => 42 - } + driver_plugin: "starship", + driver_config: { + speed: 42, + }, }, {} ).driver_data_for("suite", "platform").must_equal( - :name => "starship", - :speed => 42 + name: "starship", + speed: 42 ) end it "merges driver into driver_config if driver with name exists" do DataMunger.new( { - :driver_config => { - :eh => "yep" + driver_config: { + eh: "yep", }, - :driver => "zappa" + driver: "zappa", }, {} ).driver_data_for("suite", "platform").must_equal( - :name => "zappa", - :eh => "yep" + name: "zappa", + eh: "yep" ) end it "merges driver into driver_config if driver exists" do DataMunger.new( { - :driver_plugin => "imold", - :driver_config => { - :eh => "yep", - :color => "pink" + driver_plugin: "imold", + driver_config: { + eh: "yep", + color: "pink", }, - :driver => { - :name => "zappa", - :color => "black" - } + driver: { + name: "zappa", + color: "black", + }, }, {} ).driver_data_for("suite", "platform").must_equal( - :name => "zappa", - :eh => "yep", - :color => "black" + name: "zappa", + eh: "yep", + color: "black" ) end it "returns platform driver name" do DataMunger.new( { - :platforms => [ + platforms: [ { - :name => "plat", - :driver_plugin => "flip" - } - ] + name: "plat", + driver_plugin: "flip", + }, + ], }, {} ).driver_data_for("suite", "plat").must_equal( - :name => "flip" + name: "flip" ) end it "returns platform config containing driver hash" do DataMunger.new( { - :platforms => [ + platforms: [ { - :name => "plat", - :driver_plugin => "flip", - :driver_config => { - :flop => "yep" - } - } - ] + name: "plat", + driver_plugin: "flip", + driver_config: { + flop: "yep", + }, + }, + ], }, {} ).driver_data_for("suite", "plat").must_equal( - :name => "flip", - :flop => "yep" + name: "flip", + flop: "yep" ) end it "returns suite driver name" do DataMunger.new( { - :suites => [ + suites: [ { - :name => "sweet", - :driver_plugin => "waz" - } - ] + name: "sweet", + driver_plugin: "waz", + }, + ], }, {} ).driver_data_for("sweet", "platform").must_equal( - :name => "waz" + name: "waz" ) end it "returns suite config containing driver hash" do DataMunger.new( { - :suites => [ + suites: [ { - :name => "sweet", - :driver_plugin => "waz", - :driver_config => { - :up => "nope" - } - } - ] + name: "sweet", + driver_plugin: "waz", + driver_config: { + up: "nope", + }, + }, + ], }, {} ).driver_data_for("sweet", "platform").must_equal( - :name => "waz", - :up => "nope" + name: "waz", + up: "nope" ) end end describe "from multiple sources" do - it "suite into platform into common" do DataMunger.new( { - :driver_plugin => "commony", - :driver_config => { - :color => "purple", - :fruit => %w[apple pear], - :deep => { :common => "junk" } + driver_plugin: "commony", + driver_config: { + color: "purple", + fruit: %w{apple pear}, + deep: { common: "junk" }, }, - :platforms => [ + platforms: [ { - :name => "plat", - :driver_plugin => "platformy", - :driver_config => { - :fruit => ["banana"], - :deep => { :platform => "stuff" } - } - } + name: "plat", + driver_plugin: "platformy", + driver_config: { + fruit: ["banana"], + deep: { platform: "stuff" }, + }, + }, ], - :suites => [ + suites: [ { - :name => "sweet", - :driver_plugin => "suitey", - :driver_config => { - :vehicle => "car", - :deep => { :suite => "things" } - } - } - ] + name: "sweet", + driver_plugin: "suitey", + driver_config: { + vehicle: "car", + deep: { suite: "things" }, + }, + }, + ], }, {} ).driver_data_for("sweet", "plat").must_equal( - :name => "suitey", - :color => "purple", - :fruit => ["banana"], - :vehicle => "car", - :deep => { - :common => "junk", - :platform => "stuff", - :suite => "things" + name: "suitey", + color: "purple", + fruit: ["banana"], + vehicle: "car", + deep: { + common: "junk", + platform: "stuff", + suite: "things", } ) end it "platform into common" do DataMunger.new( { - :driver_plugin => "commony", - :driver_config => { - :color => "purple", - :fruit => %w[apple pear], - :deep => { :common => "junk" } + driver_plugin: "commony", + driver_config: { + color: "purple", + fruit: %w{apple pear}, + deep: { common: "junk" }, }, - :platforms => [ + platforms: [ { - :name => "plat", - :driver_plugin => "platformy", - :driver_config => { - :fruit => ["banana"], - :deep => { :platform => "stuff" } - } - } - ] + name: "plat", + driver_plugin: "platformy", + driver_config: { + fruit: ["banana"], + deep: { platform: "stuff" }, + }, + }, + ], }, {} ).driver_data_for("sweet", "plat").must_equal( - :name => "platformy", - :color => "purple", - :fruit => ["banana"], - :deep => { - :common => "junk", - :platform => "stuff" + name: "platformy", + color: "purple", + fruit: ["banana"], + deep: { + common: "junk", + platform: "stuff", } ) end it "suite into common" do DataMunger.new( { - :driver_plugin => "commony", - :driver_config => { - :color => "purple", - :fruit => %w[apple pear], - :deep => { :common => "junk" } + driver_plugin: "commony", + driver_config: { + color: "purple", + fruit: %w{apple pear}, + deep: { common: "junk" }, }, - :suites => [ + suites: [ { - :name => "sweet", - :driver_plugin => "suitey", - :driver_config => { - :vehicle => "car", - :deep => { :suite => "things" } - } - } - ] + name: "sweet", + driver_plugin: "suitey", + driver_config: { + vehicle: "car", + deep: { suite: "things" }, + }, + }, + ], }, {} ).driver_data_for("sweet", "plat").must_equal( - :name => "suitey", - :color => "purple", - :fruit => %w[apple pear], - :vehicle => "car", - :deep => { - :common => "junk", - :suite => "things" + name: "suitey", + color: "purple", + fruit: %w{apple pear}, + vehicle: "car", + deep: { + common: "junk", + suite: "things", } ) end it "suite into platform" do DataMunger.new( { - :platforms => [ + platforms: [ { - :name => "plat", - :driver_plugin => "platformy", - :driver_config => { - :fruit => ["banana"], - :deep => { :platform => "stuff" } - } - } + name: "plat", + driver_plugin: "platformy", + driver_config: { + fruit: ["banana"], + deep: { platform: "stuff" }, + }, + }, ], - :suites => [ + suites: [ { - :name => "sweet", - :driver_plugin => "suitey", - :driver_config => { - :vehicle => "car", - :deep => { :suite => "things" } - } - } - ] + name: "sweet", + driver_plugin: "suitey", + driver_config: { + vehicle: "car", + deep: { suite: "things" }, + }, + }, + ], }, {} ).driver_data_for("sweet", "plat").must_equal( - :name => "suitey", - :fruit => ["banana"], - :vehicle => "car", - :deep => { - :platform => "stuff", - :suite => "things" + name: "suitey", + fruit: ["banana"], + vehicle: "car", + deep: { + platform: "stuff", + suite: "things", } ) end end end describe "legacy chef paths from suite" do - LEGACY_CHEF_PATHS = [ :data_path, :data_bags_path, :environments_path, :nodes_path, :roles_path, :encrypted_data_bag_secret_key_path - ] + ].freeze LEGACY_CHEF_PATHS.each do |key| - it "moves #{key} into provisioner" do DataMunger.new( { - :provisioner => "chefy", - :suites => [ + provisioner: "chefy", + suites: [ { :name => "sweet", - key => "mypath" - } - ] + key => "mypath", + }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( :name => "chefy", key => "mypath" @@ -1947,17 +1885,17 @@ end it "merges provisioner into data_path if provisioner exists" do DataMunger.new( { - :suites => [ + suites: [ { :name => "sweet", key => "mypath", - :provisioner => "chefy" - } - ] + :provisioner => "chefy", + }, + ], }, {} ).provisioner_data_for("sweet", "plat").must_equal( :name => "chefy", key => "mypath" @@ -1965,795 +1903,788 @@ end end end describe "legacy require_chef_omnibus from driver" do - describe "from a single source" do - it "common driver value moves into provisioner" do DataMunger.new( { - :provisioner => "chefy", - :driver => { - :name => "starship", - :require_chef_omnibus => "it's probably fine" - } + provisioner: "chefy", + driver: { + name: "starship", + require_chef_omnibus: "it's probably fine", + }, }, {} ).provisioner_data_for("suite", "platform").must_equal( - :name => "chefy", - :require_chef_omnibus => "it's probably fine" + name: "chefy", + require_chef_omnibus: "it's probably fine" ) end it "common driver value loses to existing provisioner value" do DataMunger.new( { - :provisioner => { - :name => "chefy", - :require_chef_omnibus => "it's probably fine" + provisioner: { + name: "chefy", + require_chef_omnibus: "it's probably fine", }, - :driver => { - :name => "starship", - :require_chef_omnibus => "dragons" - } + driver: { + name: "starship", + require_chef_omnibus: "dragons", + }, }, {} ).provisioner_data_for("suite", "platform").must_equal( - :name => "chefy", - :require_chef_omnibus => "it's probably fine" + name: "chefy", + require_chef_omnibus: "it's probably fine" ) end it "suite driver value moves into provisioner" do DataMunger.new( { - :suites => [ + suites: [ { - :name => "sweet", - :provisioner => "chefy", - :driver => { - :name => "starship", - :require_chef_omnibus => "it's probably fine" - } - } - ] + name: "sweet", + provisioner: "chefy", + driver: { + name: "starship", + require_chef_omnibus: "it's probably fine", + }, + }, + ], }, {} ).provisioner_data_for("sweet", "platform").must_equal( - :name => "chefy", - :require_chef_omnibus => "it's probably fine" + name: "chefy", + require_chef_omnibus: "it's probably fine" ) end it "suite driver value loses to existing provisioner value" do DataMunger.new( { - :suites => [ + suites: [ { - :name => "sweet", - :provisioner => { - :name => "chefy", - :require_chef_omnibus => "it's probably fine" + name: "sweet", + provisioner: { + name: "chefy", + require_chef_omnibus: "it's probably fine", }, - :driver => { - :name => "starship", - :require_chef_omnibus => "dragons" - } - } - ] + driver: { + name: "starship", + require_chef_omnibus: "dragons", + }, + }, + ], }, {} ).provisioner_data_for("sweet", "platform").must_equal( - :name => "chefy", - :require_chef_omnibus => "it's probably fine" + name: "chefy", + require_chef_omnibus: "it's probably fine" ) end it "platform driver value moves into provisioner" do DataMunger.new( { - :platforms => [ + platforms: [ { - :name => "plat", - :provisioner => "chefy", - :driver => { - :name => "starship", - :require_chef_omnibus => "it's probably fine" - } - } - ] + name: "plat", + provisioner: "chefy", + driver: { + name: "starship", + require_chef_omnibus: "it's probably fine", + }, + }, + ], }, {} ).provisioner_data_for("suite", "plat").must_equal( - :name => "chefy", - :require_chef_omnibus => "it's probably fine" + name: "chefy", + require_chef_omnibus: "it's probably fine" ) end it "platform driver value loses to existing provisioner value" do DataMunger.new( { - :platforms => [ + platforms: [ { - :name => "plat", - :provisioner => { - :name => "chefy", - :require_chef_omnibus => "it's probably fine" + name: "plat", + provisioner: { + name: "chefy", + require_chef_omnibus: "it's probably fine", }, - :driver => { - :name => "starship", - :require_chef_omnibus => "dragons" - } - } - ] + driver: { + name: "starship", + require_chef_omnibus: "dragons", + }, + }, + ], }, {} ).provisioner_data_for("suite", "plat").must_equal( - :name => "chefy", - :require_chef_omnibus => "it's probably fine" + name: "chefy", + require_chef_omnibus: "it's probably fine" ) end end end describe "legacy http_proxy & https_proxy from driver" do - describe "from a single source" do - it "common driver value remains in driver" do DataMunger.new( { - :provisioner => "chefy", - :driver => { - :name => "starship", - :http_proxy => "http://proxy", - :https_proxy => "https://proxy" - } + provisioner: "chefy", + driver: { + name: "starship", + http_proxy: "http://proxy", + https_proxy: "https://proxy", + }, }, {} ).driver_data_for("suite", "platform").must_equal( - :name => "starship", - :http_proxy => "http://proxy", - :https_proxy => "https://proxy" + name: "starship", + http_proxy: "http://proxy", + https_proxy: "https://proxy" ) end it "common driver value copies into provisioner" do DataMunger.new( { - :provisioner => "chefy", - :driver => { - :name => "starship", - :http_proxy => "http://proxy", - :https_proxy => "https://proxy" - } + provisioner: "chefy", + driver: { + name: "starship", + http_proxy: "http://proxy", + https_proxy: "https://proxy", + }, }, {} ).provisioner_data_for("suite", "platform").must_equal( - :name => "chefy", - :http_proxy => "http://proxy", - :https_proxy => "https://proxy" + name: "chefy", + http_proxy: "http://proxy", + https_proxy: "https://proxy" ) end it "common driver value copies into verifier" do DataMunger.new( { - :verifier => "bussy", - :driver => { - :name => "starship", - :http_proxy => "http://proxy", - :https_proxy => "https://proxy" - } + verifier: "bussy", + driver: { + name: "starship", + http_proxy: "http://proxy", + https_proxy: "https://proxy", + }, }, {} ).verifier_data_for("suite", "platform").must_equal( - :name => "bussy", - :http_proxy => "http://proxy", - :https_proxy => "https://proxy" + name: "bussy", + http_proxy: "http://proxy", + https_proxy: "https://proxy" ) end it "common driver value loses to existing provisioner value" do DataMunger.new( { - :provisioner => { - :name => "chefy", - :http_proxy => "it's probably fine", - :https_proxy => "la quinta" + provisioner: { + name: "chefy", + http_proxy: "it's probably fine", + https_proxy: "la quinta", }, - :driver => { - :name => "starship", - :http_proxy => "dragons", - :https_proxy => "cats" - } + driver: { + name: "starship", + http_proxy: "dragons", + https_proxy: "cats", + }, }, {} ).provisioner_data_for("suite", "platform").must_equal( - :name => "chefy", - :http_proxy => "it's probably fine", - :https_proxy => "la quinta" + name: "chefy", + http_proxy: "it's probably fine", + https_proxy: "la quinta" ) end it "common driver value loses to existing verifier value" do DataMunger.new( { - :verifier => { - :name => "bussy", - :http_proxy => "it's probably fine", - :https_proxy => "la quinta" + verifier: { + name: "bussy", + http_proxy: "it's probably fine", + https_proxy: "la quinta", }, - :driver => { - :name => "starship", - :http_proxy => "dragons", - :https_proxy => "cats" - } + driver: { + name: "starship", + http_proxy: "dragons", + https_proxy: "cats", + }, }, {} ).verifier_data_for("suite", "platform").must_equal( - :name => "bussy", - :http_proxy => "it's probably fine", - :https_proxy => "la quinta" + name: "bussy", + http_proxy: "it's probably fine", + https_proxy: "la quinta" ) end it "suite driver value remains in driver" do DataMunger.new( { - :suites => [ + suites: [ { - :name => "sweet", - :provisioner => "chefy", - :driver => { - :name => "starship", - :http_proxy => "it's probably fine", - :https_proxy => "la quinta" - } - } - ] + name: "sweet", + provisioner: "chefy", + driver: { + name: "starship", + http_proxy: "it's probably fine", + https_proxy: "la quinta", + }, + }, + ], }, {} ).driver_data_for("sweet", "platform").must_equal( - :name => "starship", - :http_proxy => "it's probably fine", - :https_proxy => "la quinta" + name: "starship", + http_proxy: "it's probably fine", + https_proxy: "la quinta" ) end it "suite driver value copies into provisioner" do DataMunger.new( { - :suites => [ + suites: [ { - :name => "sweet", - :provisioner => "chefy", - :driver => { - :name => "starship", - :http_proxy => "it's probably fine", - :https_proxy => "la quinta" - } - } - ] + name: "sweet", + provisioner: "chefy", + driver: { + name: "starship", + http_proxy: "it's probably fine", + https_proxy: "la quinta", + }, + }, + ], }, {} ).provisioner_data_for("sweet", "platform").must_equal( - :name => "chefy", - :http_proxy => "it's probably fine", - :https_proxy => "la quinta" + name: "chefy", + http_proxy: "it's probably fine", + https_proxy: "la quinta" ) end it "suite driver value copies into verifier" do DataMunger.new( { - :suites => [ + suites: [ { - :name => "sweet", - :verifier => "bussy", - :driver => { - :name => "starship", - :http_proxy => "it's probably fine", - :https_proxy => "la quinta" - } - } - ] + name: "sweet", + verifier: "bussy", + driver: { + name: "starship", + http_proxy: "it's probably fine", + https_proxy: "la quinta", + }, + }, + ], }, {} ).verifier_data_for("sweet", "platform").must_equal( - :name => "bussy", - :http_proxy => "it's probably fine", - :https_proxy => "la quinta" + name: "bussy", + http_proxy: "it's probably fine", + https_proxy: "la quinta" ) end it "suite driver value loses to existing provisioner value" do DataMunger.new( { - :suites => [ + suites: [ { - :name => "sweet", - :provisioner => { - :name => "chefy", - :http_proxy => "it's probably fine", - :https_proxy => "la quinta" + name: "sweet", + provisioner: { + name: "chefy", + http_proxy: "it's probably fine", + https_proxy: "la quinta", }, - :driver => { - :name => "starship", - :http_proxy => "dragons", - :https_proxy => "cats" - } - } - ] + driver: { + name: "starship", + http_proxy: "dragons", + https_proxy: "cats", + }, + }, + ], }, {} ).provisioner_data_for("sweet", "platform").must_equal( - :name => "chefy", - :http_proxy => "it's probably fine", - :https_proxy => "la quinta" + name: "chefy", + http_proxy: "it's probably fine", + https_proxy: "la quinta" ) end it "suite driver value loses to existing verifier value" do DataMunger.new( { - :suites => [ + suites: [ { - :name => "sweet", - :verifier => { - :name => "bussy", - :http_proxy => "it's probably fine", - :https_proxy => "la quinta" + name: "sweet", + verifier: { + name: "bussy", + http_proxy: "it's probably fine", + https_proxy: "la quinta", }, - :driver => { - :name => "starship", - :http_proxy => "dragons", - :https_proxy => "cats" - } - } - ] + driver: { + name: "starship", + http_proxy: "dragons", + https_proxy: "cats", + }, + }, + ], }, {} ).verifier_data_for("sweet", "platform").must_equal( - :name => "bussy", - :http_proxy => "it's probably fine", - :https_proxy => "la quinta" + name: "bussy", + http_proxy: "it's probably fine", + https_proxy: "la quinta" ) end it "platform driver value remains in driver" do DataMunger.new( { - :platforms => [ + platforms: [ { - :name => "plat", - :provisioner => "chefy", - :driver => { - :name => "starship", - :http_proxy => "it's probably fine", - :https_proxy => "la quinta" - } - } - ] + name: "plat", + provisioner: "chefy", + driver: { + name: "starship", + http_proxy: "it's probably fine", + https_proxy: "la quinta", + }, + }, + ], }, {} ).driver_data_for("suite", "plat").must_equal( - :name => "starship", - :http_proxy => "it's probably fine", - :https_proxy => "la quinta" + name: "starship", + http_proxy: "it's probably fine", + https_proxy: "la quinta" ) end it "platform driver value copies into provisioner" do DataMunger.new( { - :platforms => [ + platforms: [ { - :name => "plat", - :provisioner => "chefy", - :driver => { - :name => "starship", - :http_proxy => "it's probably fine", - :https_proxy => "la quinta" - } - } - ] + name: "plat", + provisioner: "chefy", + driver: { + name: "starship", + http_proxy: "it's probably fine", + https_proxy: "la quinta", + }, + }, + ], }, {} ).provisioner_data_for("suite", "plat").must_equal( - :name => "chefy", - :http_proxy => "it's probably fine", - :https_proxy => "la quinta" + name: "chefy", + http_proxy: "it's probably fine", + https_proxy: "la quinta" ) end it "platform driver value copies into verifier" do DataMunger.new( { - :platforms => [ + platforms: [ { - :name => "plat", - :verifier => "bussy", - :driver => { - :name => "starship", - :http_proxy => "it's probably fine", - :https_proxy => "la quinta" - } - } - ] + name: "plat", + verifier: "bussy", + driver: { + name: "starship", + http_proxy: "it's probably fine", + https_proxy: "la quinta", + }, + }, + ], }, {} ).verifier_data_for("suite", "plat").must_equal( - :name => "bussy", - :http_proxy => "it's probably fine", - :https_proxy => "la quinta" + name: "bussy", + http_proxy: "it's probably fine", + https_proxy: "la quinta" ) end it "platform driver value loses to existing provisioner value" do DataMunger.new( { - :platforms => [ + platforms: [ { - :name => "plat", - :provisioner => { - :name => "chefy", - :http_proxy => "it's probably fine", - :https_proxy => "la quinta" + name: "plat", + provisioner: { + name: "chefy", + http_proxy: "it's probably fine", + https_proxy: "la quinta", }, - :driver => { - :name => "starship", - :http_proxy => "dragons", - :https_proxy => "cats" - } - } - ] + driver: { + name: "starship", + http_proxy: "dragons", + https_proxy: "cats", + }, + }, + ], }, {} ).provisioner_data_for("suite", "plat").must_equal( - :name => "chefy", - :http_proxy => "it's probably fine", - :https_proxy => "la quinta" + name: "chefy", + http_proxy: "it's probably fine", + https_proxy: "la quinta" ) end it "platform driver value loses to existing verifier value" do DataMunger.new( { - :platforms => [ + platforms: [ { - :name => "plat", - :verifier => { - :name => "bussy", - :http_proxy => "it's probably fine", - :https_proxy => "la quinta" + name: "plat", + verifier: { + name: "bussy", + http_proxy: "it's probably fine", + https_proxy: "la quinta", }, - :driver => { - :name => "starship", - :http_proxy => "dragons", - :https_proxy => "cats" - } - } - ] + driver: { + name: "starship", + http_proxy: "dragons", + https_proxy: "cats", + }, + }, + ], }, {} ).verifier_data_for("suite", "plat").must_equal( - :name => "bussy", - :http_proxy => "it's probably fine", - :https_proxy => "la quinta" + name: "bussy", + http_proxy: "it's probably fine", + https_proxy: "la quinta" ) end end end describe "legacy busser blocks to verifier" do - describe "from a single source" do - it "merges old common busser name to version into verifier" do DataMunger.new( { - :busser => "starship" + busser: "starship", }, {} ).verifier_data_for("suite", "platform").must_equal( - :name => "busser", - :version => "starship" + name: "busser", + version: "starship" ) end it "merges old common busser name to version with exising verifier" do DataMunger.new( { - :busser => "starship", - :verifier => { - :a => "b" - } + busser: "starship", + verifier: { + a: "b", + }, }, {} ).verifier_data_for("suite", "platform").must_equal( - :name => "busser", - :version => "starship", - :a => "b" + name: "busser", + version: "starship", + a: "b" ) end it "merges old common busser name to version into verifier with name" do DataMunger.new( { - :busser => "starship", - :verifier => "stellar" + busser: "starship", + verifier: "stellar", }, {} ).verifier_data_for("suite", "platform").must_equal( - :name => "stellar", - :version => "starship" + name: "stellar", + version: "starship" ) end it "merges old busser data into verifier with name" do DataMunger.new( { - :busser => { - :a => "b" + busser: { + a: "b", }, - :verifier => "stellar" + verifier: "stellar", }, {} ).verifier_data_for("suite", "platform").must_equal( - :name => "stellar", - :a => "b" + name: "stellar", + a: "b" ) end it "merges old busser data into verifier data" do DataMunger.new( { - :busser => { - :a => "b", - :both => "legacy" + busser: { + a: "b", + both: "legacy", }, - :verifier => { - :name => "stellar", - :c => "d", - :both => "modern" - } + verifier: { + name: "stellar", + c: "d", + both: "modern", + }, }, {} ).verifier_data_for("suite", "platform").must_equal( - :name => "stellar", - :a => "b", - :c => "d", - :both => "modern" + name: "stellar", + a: "b", + c: "d", + both: "modern" ) end it "returns platform verifier name" do DataMunger.new( { - :platforms => [ + platforms: [ { - :name => "plat", - :busser => "flip" - } - ] + name: "plat", + busser: "flip", + }, + ], }, {} ).verifier_data_for("suite", "plat").must_equal( - :name => "busser", - :version => "flip" + name: "busser", + version: "flip" ) end it "return platform config containing verifier hash" do DataMunger.new( { - :platforms => [ + platforms: [ { - :name => "plat", - :busser => "flip", - :verifier => { - :flop => "yep" - } - } - ] + name: "plat", + busser: "flip", + verifier: { + flop: "yep", + }, + }, + ], }, {} ).verifier_data_for("suite", "plat").must_equal( - :name => "busser", - :version => "flip", - :flop => "yep" + name: "busser", + version: "flip", + flop: "yep" ) end it "returns suite driver name" do DataMunger.new( { - :suites => [ + suites: [ { - :name => "sweet", - :busser => "waz" - } - ] + name: "sweet", + busser: "waz", + }, + ], }, {} ).verifier_data_for("sweet", "platform").must_equal( - :name => "busser", - :version => "waz" + name: "busser", + version: "waz" ) end it "returns suite config containing verifier hash" do DataMunger.new( { - :suites => [ + suites: [ { - :name => "sweet", - :busser => "waz", - :verifier => { - :up => "nope" - } - } - ] + name: "sweet", + busser: "waz", + verifier: { + up: "nope", + }, + }, + ], }, {} ).verifier_data_for("sweet", "platform").must_equal( - :name => "busser", - :version => "waz", - :up => "nope" + name: "busser", + version: "waz", + up: "nope" ) end end describe "from multiple sources" do - it "suite into platform into common" do DataMunger.new( { - :busser => { - :version => "commony", - :color => "purple", - :fruit => %w[apple pear], - :deep => { :common => "junk" } + busser: { + version: "commony", + color: "purple", + fruit: %w{apple pear}, + deep: { common: "junk" }, }, - :platforms => [ + platforms: [ { - :name => "plat", - :busser => { - :version => "platformy", - :fruit => ["banana"], - :deep => { :platform => "stuff" } - } - } + name: "plat", + busser: { + version: "platformy", + fruit: ["banana"], + deep: { platform: "stuff" }, + }, + }, ], - :suites => [ + suites: [ { - :name => "sweet", - :busser => { - :version => "suitey", - :vehicle => "car", - :deep => { :suite => "things" } - } - } - ] + name: "sweet", + busser: { + version: "suitey", + vehicle: "car", + deep: { suite: "things" }, + }, + }, + ], }, {} ).verifier_data_for("sweet", "plat").must_equal( - :name => "busser", - :version => "suitey", - :color => "purple", - :fruit => ["banana"], - :vehicle => "car", - :deep => { - :common => "junk", - :platform => "stuff", - :suite => "things" + name: "busser", + version: "suitey", + color: "purple", + fruit: ["banana"], + vehicle: "car", + deep: { + common: "junk", + platform: "stuff", + suite: "things", } ) end it "platform into common" do DataMunger.new( { - :busser => { - :version => "commony", - :color => "purple", - :fruit => %w[apple pear], - :deep => { :common => "junk" } + busser: { + version: "commony", + color: "purple", + fruit: %w{apple pear}, + deep: { common: "junk" }, }, - :platforms => [ + platforms: [ { - :name => "plat", - :busser => { - :version => "platformy", - :fruit => ["banana"], - :deep => { :platform => "stuff" } - } - } - ] + name: "plat", + busser: { + version: "platformy", + fruit: ["banana"], + deep: { platform: "stuff" }, + }, + }, + ], }, {} ).verifier_data_for("sweet", "plat").must_equal( - :name => "busser", - :version => "platformy", - :color => "purple", - :fruit => ["banana"], - :deep => { - :common => "junk", - :platform => "stuff" + name: "busser", + version: "platformy", + color: "purple", + fruit: ["banana"], + deep: { + common: "junk", + platform: "stuff", } ) end it "suite into common" do DataMunger.new( { - :busser => { - :version => "commony", - :color => "purple", - :fruit => %w[apple pear], - :deep => { :common => "junk" } + busser: { + version: "commony", + color: "purple", + fruit: %w{apple pear}, + deep: { common: "junk" }, }, - :suites => [ + suites: [ { - :name => "sweet", - :busser => { - :version => "suitey", - :vehicle => "car", - :deep => { :suite => "things" } - } - } - ] + name: "sweet", + busser: { + version: "suitey", + vehicle: "car", + deep: { suite: "things" }, + }, + }, + ], }, {} ).verifier_data_for("sweet", "plat").must_equal( - :name => "busser", - :version => "suitey", - :color => "purple", - :fruit => %w[apple pear], - :vehicle => "car", - :deep => { - :common => "junk", - :suite => "things" + name: "busser", + version: "suitey", + color: "purple", + fruit: %w{apple pear}, + vehicle: "car", + deep: { + common: "junk", + suite: "things", } ) end it "suite into platform" do DataMunger.new( { - :platforms => [ + platforms: [ { - :name => "plat", - :busser => { - :version => "platformy", - :fruit => ["banana"], - :deep => { :platform => "stuff" } - } - } + name: "plat", + busser: { + version: "platformy", + fruit: ["banana"], + deep: { platform: "stuff" }, + }, + }, ], - :suites => [ + suites: [ { - :name => "sweet", - :busser => { - :version => "suitey", - :vehicle => "car", - :deep => { :suite => "things" } - } - } - ] + name: "sweet", + busser: { + version: "suitey", + vehicle: "car", + deep: { suite: "things" }, + }, + }, + ], }, {} ).verifier_data_for("sweet", "plat").must_equal( - :name => "busser", - :version => "suitey", - :fruit => ["banana"], - :vehicle => "car", - :deep => { - :platform => "stuff", - :suite => "things" + name: "busser", + version: "suitey", + fruit: ["banana"], + vehicle: "car", + deep: { + platform: "stuff", + suite: "things", } ) end end end