diff options
author | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2007-02-08 05:11:49 +0000 |
---|---|---|
committer | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2007-02-08 05:11:49 +0000 |
commit | 1756bec99b9136463e5d35f1de4119b813ce40cc (patch) | |
tree | 380c1f37b2238fd37842a3b9934f6be16f36b450 /test/util/autoload.rb | |
parent | a216df2bcb304ad379e152f2f59ef7d942f54f3b (diff) | |
download | puppet-1756bec99b9136463e5d35f1de4119b813ce40cc.tar.gz puppet-1756bec99b9136463e5d35f1de4119b813ce40cc.tar.xz puppet-1756bec99b9136463e5d35f1de4119b813ce40cc.zip |
Fixing #484. Moving unit tests at the same time.
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@2181 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'test/util/autoload.rb')
-rwxr-xr-x | test/util/autoload.rb | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/test/util/autoload.rb b/test/util/autoload.rb new file mode 100755 index 000000000..34f40df24 --- /dev/null +++ b/test/util/autoload.rb @@ -0,0 +1,130 @@ +#!/usr/bin/env ruby + +$:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/ + +require 'puppet' +require 'puppet/util/autoload' +require 'puppettest' + +class TestAutoload < Test::Unit::TestCase + include PuppetTest + @things = [] + def self.newthing(name) + @things << name + end + + def self.thing?(name) + @things.include? name + end + + def self.clear + @things.clear + end + + def mkfile(name, path) + # Now create a file to load + File.open(path, "w") do |f| + f.puts %{ +TestAutoload.newthing(:#{name.to_s}) + } + end + end + + def teardown + super + self.class.clear + end + + def test_load + dir = tempfile() + $: << dir + cleanup do + $:.delete(dir) + end + + Dir.mkdir(dir) + + rbdir = File.join(dir, "yayness") + + Dir.mkdir(rbdir) + + # An object for specifying autoload + klass = self.class + + loader = nil + assert_nothing_raised { + loader = Puppet::Util::Autoload.new(klass, :yayness) + } + + assert_equal(loader.object_id, Puppet::Util::Autoload[klass].object_id, + "Did not retrieve loader object by class") + + # Make sure we don't fail on missing files + assert_nothing_raised { + assert_equal(false, loader.load(:mything), + "got incorrect return on failed load") + } + + # Now create a couple of files for testing + path = File.join(rbdir, "mything.rb") + mkfile(:mything, path) + opath = File.join(rbdir, "othing.rb") + mkfile(:othing, opath) + + # Now try to actually load it. + assert_nothing_raised { + assert_equal(true, loader.load(:mything), + "got incorrect return on failed load") + } + + assert(loader.loaded?(:mything), "Not considered loaded") + + assert(klass.thing?(:mything), + "Did not get loaded thing") + + # Now clear everything, and test loadall + assert_nothing_raised { + loader.clear + } + + self.class.clear + + assert_nothing_raised { + loader.loadall + } + + [:mything, :othing].each do |thing| + assert(loader.loaded?(thing), "#{thing.to_s} not considered loaded") + + assert(klass.thing?(thing), + "Did not get loaded #{thing.to_s}") + end + end + + # Make sure that autoload dynamically modifies $: with the libdir as + # appropriate. + def test_autoload_uses_libdir + dir = Puppet[:libdir] + unless FileTest.directory?(dir) + Dir.mkdir(dir) + end + + loader = File.join(dir, "test") + Dir.mkdir(loader) + name = "funtest" + file = File.join(loader, "funtest.rb") + File.open(file, "w") do |f| + f.puts "$loaded = true" + end + + auto = Puppet::Util::Autoload.new(self, "test") + + # Now make sure autoloading modifies $: as necessary + assert(! $:.include?(dir), "search path already includes libdir") + + assert_nothing_raised do + assert(auto.load("funtest"), "did not successfully load funtest") + end + assert($:.include?(dir), "libdir did not get added to search path") + end +end |