diff options
Diffstat (limited to 'spec/unit/run_context/cookbook_compiler_spec.rb')
-rw-r--r-- | spec/unit/run_context/cookbook_compiler_spec.rb | 64 |
1 files changed, 37 insertions, 27 deletions
diff --git a/spec/unit/run_context/cookbook_compiler_spec.rb b/spec/unit/run_context/cookbook_compiler_spec.rb index feb39615b6..4d744edc3a 100644 --- a/spec/unit/run_context/cookbook_compiler_spec.rb +++ b/spec/unit/run_context/cookbook_compiler_spec.rb @@ -1,6 +1,6 @@ # # Author:: Daniel DeLeo (<dan@chef.io>) -# Copyright:: Copyright 2012-2016, Chef Software Inc. +# Copyright:: Copyright (c) Chef Software Inc. # License:: Apache License, Version 2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -51,6 +51,14 @@ describe Chef::RunContext::CookbookCompiler do Chef::RunContext::CookbookCompiler.new(run_context, run_list_expansion, events) end + describe "loading a cookbook fully" do + it "does not error" do + run_context.instance_variable_set(:@cookbook_compiler, compiler) + node.run_list("dependency1::default") + compiler.compile + end + end + describe "loading attribute files" do # Attribute files in the fixture data will append their @@ -107,7 +115,11 @@ describe Chef::RunContext::CookbookCompiler do node.run_list("test-with-deps::default", "test-with-circular-deps::default") compiler.compile_libraries - expect(LibraryLoadOrder.load_order).to eq(["dependency1", "dependency2", "test-with-deps", "circular-dep2", "circular-dep1", "test-with-circular-deps"]) + expect(LibraryLoadOrder.load_order).to eq(%w{dependency1 dependency2 test-with-deps circular-dep2 circular-dep1 test-with-circular-deps}) + + # additionally test that we only load them once + compiler.compile_libraries + expect(LibraryLoadOrder.load_order).to eq(%w{dependency1 dependency2 test-with-deps circular-dep2 circular-dep1 test-with-circular-deps}) end end @@ -121,18 +133,18 @@ describe Chef::RunContext::CookbookCompiler do node.run_list("test-with-deps::default", "test-with-circular-deps::default") compiler.compile_lwrps - expect(LibraryLoadOrder.load_order).to eq(["dependency1-provider", - "dependency1-resource", - "dependency2-provider", - "dependency2-resource", - "test-with-deps-provider", - "test-with-deps-resource", - "circular-dep2-provider", - "circular-dep2-resource", - "circular-dep1-provider", - "circular-dep1-resource", - "test-with-circular-deps-provider", - "test-with-circular-deps-resource"]) + expect(LibraryLoadOrder.load_order).to eq(%w{dependency1-provider + dependency1-resource + dependency2-provider + dependency2-resource + test-with-deps-provider + test-with-deps-resource + circular-dep2-provider + circular-dep2-resource + circular-dep1-provider + circular-dep1-resource + test-with-circular-deps-provider + test-with-circular-deps-resource}) end end @@ -147,12 +159,12 @@ describe Chef::RunContext::CookbookCompiler do node.run_list("test-with-deps::default", "test-with-circular-deps::default") compiler.compile_resource_definitions - expect(LibraryLoadOrder.load_order).to eq(["dependency1-definition", - "dependency2-definition", - "test-with-deps-definition", - "circular-dep2-definition", - "circular-dep1-definition", - "test-with-circular-deps-definition"]) + expect(LibraryLoadOrder.load_order).to eq(%w{dependency1-definition + dependency2-definition + test-with-deps-definition + circular-dep2-definition + circular-dep1-definition + test-with-circular-deps-definition}) end end @@ -163,9 +175,7 @@ describe Chef::RunContext::CookbookCompiler do describe "event dispatch" do let(:recipe) { "dependency1::default" } let(:recipe_path) do - File.expand_path("../../../data/run_context/cookbooks/dependency1/recipes/default.rb", __FILE__).tap do |path| - path.gsub!(File::SEPARATOR, File::ALT_SEPARATOR) if File::ALT_SEPARATOR - end + File.expand_path("../../data/run_context/cookbooks/dependency1/recipes/default.rb", __dir__) end before do node.run_list(recipe) @@ -207,14 +217,14 @@ describe Chef::RunContext::CookbookCompiler do it "should return an array of cookbook names as symbols without duplicates" do node.run_list("test-with-circular-deps::default", "circular-dep1::default", "circular-dep2::default") - expect(compiler.cookbook_order).to eq([:"circular-dep2", - :"circular-dep1", - :"test-with-circular-deps"]) + expect(compiler.cookbook_order).to eq(%i{circular-dep2 + circular-dep1 + test-with-circular-deps}) end it "determines if a cookbook is in the list of cookbooks reachable by dependency" do node.run_list("test-with-deps::default", "test-with-deps::server") - expect(compiler.cookbook_order).to eq([:dependency1, :dependency2, :"test-with-deps"]) + expect(compiler.cookbook_order).to eq(%i{dependency1 dependency2 test-with-deps}) expect(compiler.unreachable_cookbook?(:dependency1)).to be_falsey expect(compiler.unreachable_cookbook?(:dependency2)).to be_falsey expect(compiler.unreachable_cookbook?(:'test-with-deps')).to be_falsey |