summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorLuke Kanies <luke@madstop.com>2007-10-03 19:36:35 -0500
committerLuke Kanies <luke@madstop.com>2007-10-03 19:36:35 -0500
commitbb3b3cedf4082dc884e41b864fa755057d20e228 (patch)
tree320cbf4056597adf7edb69d0f7442437d729cc77 /test
parent782bc4d3b037684f472e1db53c1878390b8c9a32 (diff)
downloadpuppet-bb3b3cedf4082dc884e41b864fa755057d20e228.tar.gz
puppet-bb3b3cedf4082dc884e41b864fa755057d20e228.tar.xz
puppet-bb3b3cedf4082dc884e41b864fa755057d20e228.zip
I finally tracked down the problem that was causing providers
to sometimes suddenly disappear and thus tests to fail -- Kernel.require was not loading the normal ruby path (e.g., 'puppet/type/cron'), so if someone else loaded that then it would replace the in-memory type with a new one, but that new one couldn't load its own providers, because the Kernel would ignore the providers, thinking they were already loaded. This doesn't fix all of the autoloading problems, but at least we won't suddenly break a ton of tests.
Diffstat (limited to 'test')
-rwxr-xr-xtest/other/dsl.rb1
-rwxr-xr-xtest/ral/providers/cron/crontab.rb17
-rwxr-xr-xtest/ral/types/cron.rb6
-rwxr-xr-xtest/util/autoload.rb21
4 files changed, 30 insertions, 15 deletions
diff --git a/test/other/dsl.rb b/test/other/dsl.rb
index 59610cd0f..0d891bf1a 100755
--- a/test/other/dsl.rb
+++ b/test/other/dsl.rb
@@ -4,7 +4,6 @@ $:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
require 'puppet'
require 'puppet/dsl'
-require 'puppet/util/autoload'
require 'puppettest'
class TestDSL < Test::Unit::TestCase
diff --git a/test/ral/providers/cron/crontab.rb b/test/ral/providers/cron/crontab.rb
index 7df7bab3d..d32a9527a 100755
--- a/test/ral/providers/cron/crontab.rb
+++ b/test/ral/providers/cron/crontab.rb
@@ -52,7 +52,6 @@ class TestCronParsedProvider < Test::Unit::TestCase
def teardown
Puppet::Util::FileType.filetype(:ram).clear
- @provider.filetype = @oldfiletype
@provider.clear
super
end
@@ -211,7 +210,7 @@ class TestCronParsedProvider < Test::Unit::TestCase
# Take our sample files, and make sure we can entirely parse them,
# then that we can generate them again and we get the same data.
def test_parse_and_generate_sample_files
- @provider.filetype = :ram
+ @provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
crondir = datadir(File.join(%w{providers cron}))
files = Dir.glob("%s/crontab.*" % crondir)
@@ -306,7 +305,7 @@ class TestCronParsedProvider < Test::Unit::TestCase
str = "# this is a comment\n#and another comment\n"
user = "fakeuser"
records = nil
- target = @provider.filetype = :ram
+ @provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
target = @provider.target_object(user)
target.write(str)
assert_nothing_raised {
@@ -320,7 +319,7 @@ class TestCronParsedProvider < Test::Unit::TestCase
end
def test_simpleparsing
- @provider.filetype = :ram
+ @provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
text = "5 1,2 * 1 0 /bin/echo funtest"
records = nil
@@ -376,7 +375,7 @@ class TestCronParsedProvider < Test::Unit::TestCase
# Make sure we correctly bidirectionally parse things.
def test_records_and_strings
- @provider.filetype = :ram
+ @provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
setme
target = @provider.target_object(@me)
@@ -426,7 +425,7 @@ class TestCronParsedProvider < Test::Unit::TestCase
0,30 * * 1 * fooness
"
setme
- @provider.filetype = :ram
+ @provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
you = "you"
# Write the same tab to multiple targets
@@ -486,7 +485,7 @@ class TestCronParsedProvider < Test::Unit::TestCase
def test_data
setme
- @provider.filetype = :ram
+ @provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
target = @provider.target_object(@me)
fakedata("data/providers/cron/examples").each do |file|
text = File.read(file)
@@ -518,7 +517,7 @@ class TestCronParsedProvider < Test::Unit::TestCase
# Match freebsd's annoying @daily stuff.
def test_match_freebsd_special
- @provider.filetype = :ram
+ @provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
setme
target = @provider.target_object(@me)
@@ -561,7 +560,7 @@ class TestCronParsedProvider < Test::Unit::TestCase
# Testing #669.
def test_environment_settings
- @provider.filetype = :ram
+ @provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
setme
target = @provider.target_object(@me)
diff --git a/test/ral/types/cron.rb b/test/ral/types/cron.rb
index 1695befac..519ff1d28 100755
--- a/test/ral/types/cron.rb
+++ b/test/ral/types/cron.rb
@@ -17,8 +17,7 @@ class TestCron < Test::Unit::TestCase
@crontype = Puppet::Type.type(:cron)
@provider = @crontype.defaultprovider
if @provider.respond_to?(:filetype=)
- @oldfiletype = @provider.filetype
- @provider.filetype = :ram
+ @provider.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
end
@crontype = Puppet::Type.type(:cron)
end
@@ -26,9 +25,6 @@ class TestCron < Test::Unit::TestCase
def teardown
super
@crontype.defaultprovider = nil
- if defined? @oldfiletype
- @provider.filetype = @oldfiletype
- end
Puppet::Util::FileType.filetype(:ram).clear
end
diff --git a/test/util/autoload.rb b/test/util/autoload.rb
index bae6d37d4..ca77572c2 100755
--- a/test/util/autoload.rb
+++ b/test/util/autoload.rb
@@ -102,4 +102,25 @@ TestAutoload.newthing(:#{name.to_s})
assert(loader.send(:searchpath).include?(dir), "searchpath does not include the libdir")
end
+
+ # This causes very strange behaviour in the tests. We need to make sure we
+ # require the same path that a user would use, otherwise we'll result in
+ # a reload of the
+ def test_require_does_not_cause_reload
+ loadname = "testing"
+ loader = Puppet::Util::Autoload.new(self.class, loadname)
+
+ basedir = "/some/dir"
+ dir = File.join(basedir, loadname)
+ loader.expects(:eachdir).yields(dir)
+
+ subname = "instance"
+
+ file = File.join(dir, subname) + ".rb"
+
+ Dir.expects(:glob).with("#{dir}/*.rb").returns(file)
+
+ Kernel.expects(:require).with(File.join(loadname, subname))
+ loader.loadall
+ end
end