diff options
-rw-r--r-- | lib/puppet/defaults.rb | 7 | ||||
-rw-r--r-- | lib/puppet/dsl.rb | 105 | ||||
-rwxr-xr-x | lib/puppet/provider/parsedfile.rb | 2 | ||||
-rw-r--r-- | lib/puppet/util/autoload.rb | 9 | ||||
-rwxr-xr-x | test/other/dsl.rb | 1 | ||||
-rwxr-xr-x | test/ral/providers/cron/crontab.rb | 17 | ||||
-rwxr-xr-x | test/ral/types/cron.rb | 6 | ||||
-rwxr-xr-x | test/util/autoload.rb | 21 |
8 files changed, 35 insertions, 133 deletions
diff --git a/lib/puppet/defaults.rb b/lib/puppet/defaults.rb index 073cdb1dc..1b0b402ec 100644 --- a/lib/puppet/defaults.rb +++ b/lib/puppet/defaults.rb @@ -132,6 +132,8 @@ module Puppet :show_diff => [false, "Whether to print a contextual diff when files are being replaced. The diff is printed on stdout, so this option is meaningless unless you are running Puppet interactively. This feature currently requires the ``diff/lcs`` Ruby library."], + :yamldir => {:default => "$vardir/yaml", :owner => "$user", :group => "$user", :mode => "750", + :desc => "The directory in which YAML data is stored, usually in a subdirectory."}, :daemonize => { :default => true, :desc => "Send the process into the background. This is the default.", :short => "D" @@ -507,11 +509,6 @@ module Puppet "The backend store to use for storing files by checksum (i.e., filebuckets)."] ) - self.setdefaults(:yaml, - :yamldir => ["$vardir/yaml", - "The directory in which YAML data is stored, usually in a subdirectory."] - ) - self.setdefaults(:rails, :dblocation => { :default => "$statedir/clientconfigs.sqlite3", :mode => 0660, diff --git a/lib/puppet/dsl.rb b/lib/puppet/dsl.rb index 614e180f2..75bc81b2b 100644 --- a/lib/puppet/dsl.rb +++ b/lib/puppet/dsl.rb @@ -269,108 +269,3 @@ module Puppet end @aspects = {} - -class Puppet::DisabledDSL - @@subs = {} - @name = :DSLClass - class << self - include Enumerable - attr_accessor :included, :name, :objects - - def each - @@subs.each do |name, sub| - yield name, sub - end - end - - def export - bucket = nil - if superclass() != Puppet::DSL - bucket = superclass.export - else - bucket = Puppet::TransBucket.new - bucket.keyword = "class" - bucket.type = self.name - end - - @objects.each do |type, ary| - ary.each do |name, obj| - if pobj = bucket.find { |sobj| obj.name == sobj.name && obj.type == sobj.type } - obj.each do |param, value| - pobj[param] = value - end - else - bucket.push obj - end - end - end - - return bucket - end - - def include(name) - if ary = @@subs.find { |n, s| n == name } - ary[1].included = true - else - raise "Could not find class %s" % name - end - end - - def inherited(sub) - name = sub.to_s.downcase.gsub(/.+::/, '').intern - @@subs[name] = sub - sub.name = name - sub.initvars - - sub - end - - def initvars - #if superclass() == Puppet::DSL - @objects = {} - #else - # @objects = superclass.objects - #end - end - - - def import(file) - text = File.read(file) - # If they don't specify a parent class, then specify one - # for them. - text.gsub!(/^class \S+\s*$/) do |match| - "#{match} < Puppet::DSL" - end - eval(text, binding) - end - - def method_missing(method, *args) - if klass = Puppet::Type.type(method) - method = method.intern if method.is_a? String - @objects[method] ||= {} - - names = args.shift - hash = args.shift - names = [names] unless names.is_a? Array - names.each do |name| - unless obj = @objects[method][name] - obj = Puppet::TransObject.new(name, method) - @objects[method][name] = obj - end - - hash.each do |param, value| - if obj[param] - raise "Cannot override %s in %s[%s]" % - [param, method, name] - else - obj[param] = value - end - end - end - else - raise "No type %s" % method - end - end - end -end - diff --git a/lib/puppet/provider/parsedfile.rb b/lib/puppet/provider/parsedfile.rb index 376cf04e3..76654c4f4 100755 --- a/lib/puppet/provider/parsedfile.rb +++ b/lib/puppet/provider/parsedfile.rb @@ -245,7 +245,7 @@ class Puppet::Provider::ParsedFile < Puppet::Provider # Initialize the object if necessary. def self.target_object(target) - @target_objects[target] ||= @filetype.new(target) + @target_objects[target] ||= filetype.new(target) @target_objects[target] end diff --git a/lib/puppet/util/autoload.rb b/lib/puppet/util/autoload.rb index 280961837..a52575522 100644 --- a/lib/puppet/util/autoload.rb +++ b/lib/puppet/util/autoload.rb @@ -107,16 +107,11 @@ class Puppet::Util::Autoload # Load every instance of everything we can find. eachdir do |dir| Dir.glob("#{dir}/*.rb").each do |file| - # Load here, rather than require, so that facts - # can be reloaded. This has some short-comings, I - # believe, but it works as long as real classes - # aren't used. name = File.basename(file).sub(".rb", '').intern next if loaded?(name) - next if $".include?(File.join(@path, name.to_s + ".rb")) - filepath = File.join(@path, name.to_s + ".rb") + rubypath = File.join(@path, name.to_s) begin - Kernel.require file + Kernel.require rubypath loaded(name, file) rescue => detail if Puppet[:trace] 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 5e7fa3bd6..bc32b839b 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 4a65d32d8..05fd342d5 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 |