diff options
Diffstat (limited to 'spec/unit/util/loader_spec.rb')
-rwxr-xr-x | spec/unit/util/loader_spec.rb | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/spec/unit/util/loader_spec.rb b/spec/unit/util/loader_spec.rb index 0bb823e..eed533a 100755 --- a/spec/unit/util/loader_spec.rb +++ b/spec/unit/util/loader_spec.rb @@ -4,6 +4,20 @@ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper') require 'facter/util/loader' + +# loader subclass for making assertions about file/directory ordering +class TestLoader < Facter::Util::Loader + def loaded_files + @loaded_files ||= [] + end + + def load_file(file) + loaded_files << file + super + end +end + + describe Facter::Util::Loader do def with_env(values) old = {} @@ -96,6 +110,21 @@ describe Facter::Util::Loader do @loader.load(:testing) end + it 'should load any ruby files in directories matching the fact name in the search path in sorted order regardless of the order returned by Dir.entries' do + @loader = TestLoader.new + + @loader.stubs(:search_path).returns %w{/one/dir} + FileTest.stubs(:exist?).returns false + FileTest.stubs(:directory?).with("/one/dir/testing").returns true + @loader.stubs(:search_path).returns %w{/one/dir} + + Dir.stubs(:entries).with("/one/dir/testing").returns %w{foo.rb bar.rb} + %w{/one/dir/testing/foo.rb /one/dir/testing/bar.rb}.each { |f| File.stubs(:directory?).with(f).returns false } + + @loader.load(:testing) + @loader.loaded_files.should == %w{/one/dir/testing/bar.rb /one/dir/testing/foo.rb} + end + it "should load any ruby files in directories matching the fact name in the search path" do @loader.expects(:search_path).returns %w{/one/dir} FileTest.stubs(:exist?).returns false @@ -166,6 +195,20 @@ describe Facter::Util::Loader do @loader.load_all end + it 'should load all files in sorted order for any given directory regardless of the order returned by Dir.entries' do + @loader = TestLoader.new + + @loader.stubs(:search_path).returns %w{/one/dir} + Dir.stubs(:entries).with("/one/dir").returns %w{foo.rb bar.rb} + + %w{/one/dir}.each { |f| File.stubs(:directory?).with(f).returns true } + %w{/one/dir/foo.rb /one/dir/bar.rb}.each { |f| File.stubs(:directory?).with(f).returns false } + + @loader.load_all + + @loader.loaded_files.should == %w{/one/dir/bar.rb /one/dir/foo.rb} + end + it "should not load files in the util subdirectory" do @loader.expects(:search_path).returns %w{/one/dir} |