diff options
97 files changed, 263 insertions, 2170 deletions
diff --git a/test/Rakefile b/test/Rakefile index e1fc374b0..463c7a9a1 100644 --- a/test/Rakefile +++ b/test/Rakefile @@ -7,26 +7,19 @@ $exclusions = %W(lib data) $test_dirs = [] # this is used to generate all the targets. $test_files = [] # this is ONLY used for the top-level test suite. -# this basically amounts to: -# find $(pwd) -type d -maxdepth 1 | xargs basename -# with an exclusion list. +# Collect all of our test directories, skipping specifically excluded dirs. +$test_dirs = Dir.glob("*").find_all { |f| directory?(f) }.reject { |d| + $exclusions.include?(File.basename(d)) +} -find(Dir.pwd) do |path| - if File.basename(path) =~ /^\.+/ - prune - elsif path != Dir.pwd and directory? path and !$exclusions.include? File.basename(path) - $test_dirs.push File.basename(path) - prune - end -end - -# another find for the test files themselves: this could probably be rolled into the original find loop. +# another find for the test files themselves: this could probably be rolled +# into the original find loop. $test_dirs.each do |dir| find(dir) do |path| if File.basename(path) =~ /^\.+/ prune - elsif path != dir and !directory? path + elsif path != dir and ! directory?(path) $test_files.push path end end @@ -35,12 +28,14 @@ end desc "Run the full test suite" Rake::TestTask.new 'test' do |t| t.libs << 'lib' - t.test_files = $test_files.dup + t.test_files = $test_files.sort t.verbose = true end #task :test => $test_dirs -$test_dirs.each do |path| +task :default => :test + +$test_dirs.sort.each do |path| files = [] find(path) do |file| @@ -53,7 +48,7 @@ $test_dirs.each do |path| Rake::TestTask.new path.to_sym do |t| t.libs << 'lib' - t.test_files = files + t.test_files = files.sort t.verbose = true end @@ -69,3 +64,5 @@ $test_dirs.each do |path| end end end + +# $Id$ diff --git a/test/certmgr/certmgr.rb b/test/certmgr/certmgr.rb index 2275e9953..cc95822ee 100755 --- a/test/certmgr/certmgr.rb +++ b/test/certmgr/certmgr.rb @@ -1,14 +1,7 @@ #!/usr/bin/ruby -if __FILE__ == $0 - $:.unshift '../../lib' - $:.unshift '..' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/sslcertificates.rb' -require 'test/unit' require 'puppettest' # so, what kind of things do we want to test? @@ -21,7 +14,7 @@ require 'puppettest' # and test whether we've got things in the right scopes class TestCertMgr < Test::Unit::TestCase - include TestPuppet + include PuppetTest def setup super #@dir = File.join(Puppet[:certdir], "testing") diff --git a/test/client/client.rb b/test/client/client.rb index fa382392e..7d02f7acf 100644 --- a/test/client/client.rb +++ b/test/client/client.rb @@ -1,19 +1,10 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/client' require 'puppet/server' -require 'test/unit' -require 'puppettest.rb' - -# $Id$ +require 'puppettest' class TestClient < Test::Unit::TestCase - include ServerTest + include PuppetTest::ServerTest # a single run through of connect, auth, etc. def test_sslInitWithAutosigningLocalServer # autosign everything, for simplicity @@ -195,3 +186,5 @@ class TestClient < Test::Unit::TestCase "PID file was not created") end end + +# $Id$ diff --git a/test/client/master.rb b/test/client/master.rb index 2f88123b5..2b6688979 100644 --- a/test/client/master.rb +++ b/test/client/master.rb @@ -1,17 +1,10 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/client' require 'puppet/server' -require 'test/unit' -require 'puppettest.rb' +require 'puppettest' class TestMasterClient < Test::Unit::TestCase - include ServerTest + include PuppetTest::ServerTest def mkmaster(file = nil) master = nil diff --git a/test/client/pelement.rb b/test/client/pelement.rb index 4d782cf03..d5f8e824a 100644 --- a/test/client/pelement.rb +++ b/test/client/pelement.rb @@ -1,19 +1,12 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/client/pelement' require 'puppet/server' -require 'test/unit' -require 'puppettest.rb' +require 'puppettest' # $Id$ class TestPElementClient < Test::Unit::TestCase - include ServerTest + include PuppetTest::ServerTest def mkpelementserver handlers = { diff --git a/test/executables/puppetbin.rb b/test/executables/puppetbin.rb index bde9eaa8b..d7e05a810 100755 --- a/test/executables/puppetbin.rb +++ b/test/executables/puppetbin.rb @@ -1,17 +1,10 @@ -if __FILE__ == $0 - $:.unshift '../../lib' - $:.unshift '..' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/server' require 'puppet/sslcertificates' -require 'test/unit' -require 'puppettest.rb' +require 'puppettest' class TestPuppetBin < Test::Unit::TestCase - include ExeTest + include PuppetTest::ExeTest def test_version output = nil assert_nothing_raised { diff --git a/test/executables/puppetca.rb b/test/executables/puppetca.rb index d21e94e7a..a6ea9aae4 100755 --- a/test/executables/puppetca.rb +++ b/test/executables/puppetca.rb @@ -1,17 +1,10 @@ -if __FILE__ == $0 - $:.unshift '../../lib' - $:.unshift '..' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/server' require 'puppet/sslcertificates' -require 'test/unit' -require 'puppettest.rb' +require 'puppettest' class TestPuppetCA < Test::Unit::TestCase - include ExeTest + include PuppetTest::ExeTest def mkcert(hostname) cert = nil assert_nothing_raised { diff --git a/test/executables/puppetd.rb b/test/executables/puppetd.rb index 700ea5bd3..a1a886a0e 100755 --- a/test/executables/puppetd.rb +++ b/test/executables/puppetd.rb @@ -1,18 +1,11 @@ -if __FILE__ == $0 - $:.unshift '../../lib' - $:.unshift '..' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/server' -require 'test/unit' -require 'puppettest.rb' +require 'puppettest' require 'socket' require 'facter' class TestPuppetDExe < Test::Unit::TestCase - include ExeTest + include PuppetTest::ExeTest def test_normalstart # start the master file = startmasterd diff --git a/test/executables/puppetmasterd.rb b/test/executables/puppetmasterd.rb index 92a8c6b84..8d6d30875 100755 --- a/test/executables/puppetmasterd.rb +++ b/test/executables/puppetmasterd.rb @@ -1,19 +1,12 @@ -if __FILE__ == $0 - $:.unshift '../../lib' - $:.unshift '..' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/server' require 'puppet/daemon' -require 'test/unit' -require 'puppettest.rb' +require 'puppettest' require 'socket' require 'facter' class TestPuppetMasterD < Test::Unit::TestCase - include ExeTest + include PuppetTest::ExeTest def getcerts include Puppet::Daemon if self.readcerts @@ -101,7 +94,7 @@ class TestPuppetMasterD < Test::Unit::TestCase end def disabled_test_sslconnection - #file = File.join($puppetbase, "examples", "code", "head") + #file = File.join(exampledir, "code", "head") #startmasterd("--manifest #{file}") #assert_nothing_raised { diff --git a/test/executables/puppetmodule.rb b/test/executables/puppetmodule.rb index cff43a0e5..0752fed14 100755 --- a/test/executables/puppetmodule.rb +++ b/test/executables/puppetmodule.rb @@ -1,22 +1,19 @@ -if __FILE__ == $0 - $:.unshift '../../lib' - $:.unshift '..' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/server' require 'puppet/sslcertificates' -require 'test/unit' -require 'puppettest.rb' - -$module = File.join($puppetbase, "ext", "module_puppet") +require 'puppettest' class TestPuppetModule < Test::Unit::TestCase - include ExeTest + include PuppetTest::ExeTest + + + def setup + super + @module = File.join(basedir, "ext", "module_puppet") + end def test_existence - assert(FileTest.exists?($module), "Module does not exist") + assert(FileTest.exists?(@module), "Module does not exist") end def test_execution @@ -29,7 +26,7 @@ class TestPuppetModule < Test::Unit::TestCase } output = nil - cmd = $module + cmd = @module cmd += " --verbose" #cmd += " --fqdn %s" % fqdn cmd += " --confdir %s" % Puppet[:confdir] diff --git a/test/language/ast.rb b/test/language/ast.rb index 5bf0c1e4f..ab528a49d 100755 --- a/test/language/ast.rb +++ b/test/language/ast.rb @@ -1,20 +1,13 @@ #!/usr/bin/ruby -if __FILE__ == $0 - $:.unshift '../../lib' - $:.unshift '..' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/parser/interpreter' require 'puppet/parser/parser' require 'puppet/client' -require 'test/unit' require 'puppettest' class TestAST < Test::Unit::TestCase - include ParserTesting + include PuppetTest::ParserTesting # A fake class that we can use for testing evaluation. class FakeAST diff --git a/test/language/functions.rb b/test/language/functions.rb index 3ae381d83..2c3246e6a 100755 --- a/test/language/functions.rb +++ b/test/language/functions.rb @@ -1,20 +1,13 @@ #!/usr/bin/ruby -if __FILE__ == $0 - $:.unshift '../../lib' - $:.unshift '..' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/parser/interpreter' require 'puppet/parser/parser' require 'puppet/client' -require 'test/unit' require 'puppettest' class TestLangFunctions < Test::Unit::TestCase - include ParserTesting + include PuppetTest::ParserTesting def test_functions assert_raise(Puppet::ParseError) do Puppet::Parser::AST::Function.new( diff --git a/test/language/interpreter.rb b/test/language/interpreter.rb index 36fd5922b..37b4e9022 100755 --- a/test/language/interpreter.rb +++ b/test/language/interpreter.rb @@ -1,11 +1,5 @@ #!/usr/bin/ruby -if __FILE__ == $0 - $:.unshift '../../lib' - $:.unshift '..' - $puppetbase = "../.." -end - require 'facter' require 'puppet' @@ -13,12 +7,11 @@ require 'puppet/parser/interpreter' require 'puppet/parser/parser' require 'puppet/client' require 'puppet/rails' -require 'test/unit' require 'puppettest' class TestInterpreter < Test::Unit::TestCase - include TestPuppet - include ServerTest + include PuppetTest + include PuppetTest::ServerTest AST = Puppet::Parser::AST # create a simple manifest that uses nodes to create a file diff --git a/test/language/lexer.rb b/test/language/lexer.rb index 8b578a3fd..496087ba2 100644 --- a/test/language/lexer.rb +++ b/test/language/lexer.rb @@ -1,13 +1,6 @@ -if __FILE__ == $0 - $:.unshift '../../lib' - $:.unshift '..' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/parser/lexer' -require 'test/unit' -require 'puppettest.rb' +require 'puppettest' #%q{service("telnet") = \{ # port => "23", @@ -17,7 +10,7 @@ require 'puppettest.rb' #} => [[:NAME, "service"], [:LPAREN, "("], [:DQUOTE, "\""], [:NAME, "telnet"], [:DQUOTE, "\""], [:RPAREN, ")"], [:EQUALS, "="], [:lbrace, "{"], [:NAME, "port"], [:FARROW, "=>"], [:DQUOTE, "\""], [:NAME, "23"], [:DQUOTE, "\""], [:COMMA, ","], [:NAME, "protocol"], [:FARROW, "=>"], [:DQUOTE, "\""], [:NAME, "tcp"], [:DQUOTE, "\""], [:COMMA, ","], [:NAME, "name"], [:FARROW, "=>"], [:DQUOTE, "\""], [:NAME, "telnet"], [:DQUOTE, "\""], [:COMMA, ","], [:RBRACE, "}"]] class TestLexer < Test::Unit::TestCase - include TestPuppet + include PuppetTest def setup super @lexer = Puppet::Parser::Lexer.new() diff --git a/test/language/node.rb b/test/language/node.rb index a1bb58a9f..791c44874 100644 --- a/test/language/node.rb +++ b/test/language/node.rb @@ -1,16 +1,9 @@ -if __FILE__ == $0 - $:.unshift '../../lib' - $:.unshift '..' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/parser/parser' -require 'test/unit' require 'puppettest' class TestParser < Test::Unit::TestCase - include ParserTesting + include PuppetTest::ParserTesting def setup super diff --git a/test/language/parser.rb b/test/language/parser.rb index 6dd9b4bca..d6e176870 100644 --- a/test/language/parser.rb +++ b/test/language/parser.rb @@ -1,16 +1,9 @@ -if __FILE__ == $0 - $:.unshift '../../lib' - $:.unshift '..' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/parser/parser' -require 'test/unit' require 'puppettest' class TestParser < Test::Unit::TestCase - include ParserTesting + include PuppetTest::ParserTesting def setup super Puppet[:parseonly] = true diff --git a/test/language/rails.rb b/test/language/rails.rb index df76b4f20..ada4e0915 100755 --- a/test/language/rails.rb +++ b/test/language/rails.rb @@ -1,21 +1,14 @@ #!/usr/bin/ruby -if __FILE__ == $0 - $:.unshift '../../lib' - $:.unshift '..' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/rails' require 'puppet/parser/interpreter' require 'puppet/parser/parser' require 'puppet/client' -require 'test/unit' require 'puppettest' class TestRails < Test::Unit::TestCase - include ParserTesting + include PuppetTest::ParserTesting def test_includerails assert_nothing_raised { diff --git a/test/language/scope.rb b/test/language/scope.rb index 3e5b5d24b..85189627d 100755 --- a/test/language/scope.rb +++ b/test/language/scope.rb @@ -1,16 +1,9 @@ #!/usr/bin/ruby -if __FILE__ == $0 - $:.unshift '../../lib' - $:.unshift '..' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/parser/interpreter' require 'puppet/parser/parser' require 'puppet/client' -require 'test/unit' require 'puppettest' # so, what kind of things do we want to test? @@ -23,7 +16,7 @@ require 'puppettest' # and test whether we've got things in the right scopes class TestScope < Test::Unit::TestCase - include ParserTesting + include PuppetTest::ParserTesting def to_ary(hash) hash.collect { |key,value| diff --git a/test/language/snippets.rb b/test/language/snippets.rb index 2823f89ad..05ac066eb 100755 --- a/test/language/snippets.rb +++ b/test/language/snippets.rb @@ -1,32 +1,23 @@ #!/usr/bin/ruby -w -if __FILE__ == $0 - $:.unshift '../../lib' - $:.unshift '..' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/parser/interpreter' require 'puppet/parser/parser' require 'puppet/client' require 'puppet/server' -require 'test/unit' require 'puppettest' -# so, what kind of things do we want to test? - -# we don't need to test function, since we're confident in the -# library tests. We do, however, need to test how things are actually -# working in the language. - -# so really, we want to do things like test that our ast is correct -# and test whether we've got things in the right scopes - class TestSnippets < Test::Unit::TestCase - include TestPuppet + include PuppetTest include ObjectSpace - $snippetbase = File.join($puppetbase, "examples", "code", "snippets") + + def self.snippetdir + PuppetTest.exampledir "code", "snippets" + end + + def snippet(name) + File.join(self.class.snippetdir, name) + end def file2ast(file) parser = Puppet::Parser::Parser.new() @@ -492,8 +483,8 @@ class TestSnippets < Test::Unit::TestCase } end - # XXX this is the answer - Dir.entries($snippetbase).sort.each { |file| + # Iterate across each of the snippets and create a test. + Dir.entries(snippetdir).sort.each { |file| next if file =~ /^\./ @@ -504,7 +495,7 @@ class TestSnippets < Test::Unit::TestCase self.send(:define_method, testname) { # first parse the file server = Puppet::Server::Master.new( - :Manifest => File.join($snippetbase, file), + :Manifest => snippet(file), :Local => true ) client = Puppet::Client::MasterClient.new( @@ -557,3 +548,5 @@ class TestSnippets < Test::Unit::TestCase end } end + +# $Id$ diff --git a/test/language/transportable.rb b/test/language/transportable.rb index c973583cd..217bb3370 100755 --- a/test/language/transportable.rb +++ b/test/language/transportable.rb @@ -1,19 +1,12 @@ #!/usr/bin/ruby -if __FILE__ == $0 - $:.unshift '../../lib' - $:.unshift '..' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/transportable' -require 'test/unit' require 'puppettest' require 'yaml' class TestTransportable < Test::Unit::TestCase - include ParserTesting + include PuppetTest::ParserTesting def test_yamldumpobject obj = mk_transobject diff --git a/test/lib/puppettest.rb b/test/lib/puppettest.rb index b08cfcfd9..bff410060 100644 --- a/test/lib/puppettest.rb +++ b/test/lib/puppettest.rb @@ -1,12 +1,54 @@ -require 'puppettest/support/helpers' +require 'puppet' +require 'test/unit' module PuppetTest - include PuppetTest::Support::Helpers + # Find the root of the Puppet tree; this is not the test directory, but + # the parent of that dir. + def basedir + unless defined? @@basedir + case $0 + when /rake_test_loader/ + @@basedir = File.dirname(Dir.getwd) + else + dir = nil + if /^#{File::SEPARATOR}.+\.rb/ + dir = $0 + else + dir = File.join(Dir.getwd, $0) + end + 3.times { dir = File.dirname(dir) } + @@basedir = dir + end + end + @@basedir + end def cleanup(&block) @@cleaners << block end + def datadir + File.join(basedir, "test", "data") + end + + def exampledir(*args) + unless defined? @@exampledir + @@exampledir = File.join(basedir, "examples") + end + + if args.empty? + return @@exampledir + else + return File.join(@@exampledir, *args) + end + end + + module_function :basedir, :datadir, :exampledir + + def rake? + $0 =~ /rake_test_loader/ + end + def setup @memoryatstart = Puppet::Util.memory if defined? @@testcount @@ -38,16 +80,27 @@ module PuppetTest @@cleaners = [] - if $0 =~ /.+\.rb/ or Puppet[:debug] + # If we're running under rake, then disable debugging and such. + if rake? and ! Puppet[:debug] + Puppet::Log.close + Puppet::Log.newdestination tempfile() + Puppet[:httplog] = tempfile() + else Puppet::Log.newdestination :console Puppet::Log.level = :debug #$VERBOSE = 1 Puppet.info @method_name - else - Puppet::Log.close - Puppet::Log.newdestination tempfile() - Puppet[:httplog] = tempfile() end + #if $0 =~ /.+\.rb/ or Puppet[:debug] + # Puppet::Log.newdestination :console + # Puppet::Log.level = :debug + # #$VERBOSE = 1 + # Puppet.info @method_name + #else + # Puppet::Log.close + # Puppet::Log.newdestination tempfile() + # Puppet[:httplog] = tempfile() + #end Puppet[:ignoreschedules] = true end @@ -136,4 +189,11 @@ module PuppetTest end end +require 'puppettest/support' +require 'puppettest/filetesting' +require 'puppettest/fakes' +require 'puppettest/exetest' +require 'puppettest/parsertesting' +require 'puppettest/servertest' + # $Id$ diff --git a/test/lib/puppettest/exetest.rb b/test/lib/puppettest/exetest.rb index 2d2a68db1..5f155b47f 100644 --- a/test/lib/puppettest/exetest.rb +++ b/test/lib/puppettest/exetest.rb @@ -1,4 +1,4 @@ -require 'servertest' +require 'puppettest/servertest' module PuppetTest::ExeTest include PuppetTest::ServerTest @@ -10,7 +10,7 @@ module PuppetTest::ExeTest end def bindir - File.join($puppetbase, "bin") + File.join(basedir, "bin") end def setbindir diff --git a/test/lib/puppettest/fakes.rb b/test/lib/puppettest/fakes.rb index 42ba0c6af..0d27faf1f 100644 --- a/test/lib/puppettest/fakes.rb +++ b/test/lib/puppettest/fakes.rb @@ -1,4 +1,6 @@ -module PuppetTest::Fakes +require 'puppettest' + +module PuppetTest # A baseclass for the faketypes. class FakeModel class << self diff --git a/test/lib/puppettest/support/file.rb b/test/lib/puppettest/filetesting.rb index d2810d4e0..43a2ae1a0 100644 --- a/test/lib/puppettest/support/file.rb +++ b/test/lib/puppettest/filetesting.rb @@ -1,4 +1,7 @@ -module PuppetTest::Support::File +require 'puppettest' + +module PuppetTest::FileTesting + include PuppetTest def cycle(comp) trans = nil assert_nothing_raised { @@ -221,7 +224,7 @@ module PuppetTest::Support::File end def conffile - File.join($puppetbase,"examples/root/etc/configfile") + exampledir("root/etc/configfile") end end diff --git a/test/lib/puppettest/support/parser.rb b/test/lib/puppettest/parsertesting.rb index c4db871a5..e0606c501 100644 --- a/test/lib/puppettest/support/parser.rb +++ b/test/lib/puppettest/parsertesting.rb @@ -1,4 +1,7 @@ -module PuppetTest::Support::Parser +require 'puppettest' + +module PuppetTest::ParserTesting + include PuppetTest AST = Puppet::Parser::AST def astarray(*args) diff --git a/test/lib/puppettest/servertest.rb b/test/lib/puppettest/servertest.rb index 528b1a0d7..532256d74 100644 --- a/test/lib/puppettest/servertest.rb +++ b/test/lib/puppettest/servertest.rb @@ -1,4 +1,4 @@ -require 'scaffold' +require 'puppettest' module PuppetTest::ServerTest include PuppetTest diff --git a/test/lib/puppettest/support.rb b/test/lib/puppettest/support.rb index 54b19ba7f..c81b5cd9d 100644 --- a/test/lib/puppettest/support.rb +++ b/test/lib/puppettest/support.rb @@ -1,8 +1,8 @@ +require 'puppettest' + module PuppetTest::Support end -require 'support/assertions' -require 'support/file' -require 'support/helpers' -require 'support/parser' -require 'support/utils' +require 'puppettest/support/assertions' +require 'puppettest/support/helpers' +require 'puppettest/support/utils' diff --git a/test/lib/puppettest/support/assertions.rb b/test/lib/puppettest/support/assertions.rb index 63ce0cccb..0e272002e 100644 --- a/test/lib/puppettest/support/assertions.rb +++ b/test/lib/puppettest/support/assertions.rb @@ -1,4 +1,6 @@ -module PuppetTest::Support::Assertions +require 'puppettest' + +module PuppetTest def assert_rollback_events(events, trans, msg = nil) run_events(:rollback, events, trans, msg) end diff --git a/test/lib/puppettest/support/helpers.rb b/test/lib/puppettest/support/helpers.rb index 41974d331..7fae994d9 100644 --- a/test/lib/puppettest/support/helpers.rb +++ b/test/lib/puppettest/support/helpers.rb @@ -1,4 +1,6 @@ -module PuppetTest::Support::Helpers +require 'puppettest' + +module PuppetTest def nonrootuser Etc.passwd { |user| if user.uid != Process.uid and user.uid > 0 diff --git a/test/lib/puppettest/support/utils.rb b/test/lib/puppettest/support/utils.rb index 1b22e8d6e..00ea1a1c9 100644 --- a/test/lib/puppettest/support/utils.rb +++ b/test/lib/puppettest/support/utils.rb @@ -1,4 +1,6 @@ -module PuppetTest::Support::Utils +require 'puppettest' + +module PuppetTest def gcdebug(type) Puppet.warning "%s: %s" % [type, ObjectSpace.each_object(type) { |o| }] end @@ -15,7 +17,7 @@ module PuppetTest::Support::Utils assert_nothing_raised { file = transport.to_type } - end + end # stop any services that might be hanging around def stopservices @@ -24,7 +26,7 @@ module PuppetTest::Support::Utils service[:ensure] = :stopped service.evaluate } - end + end end # TODO: rewrite this to use the 'etc' module. @@ -65,7 +67,7 @@ module PuppetTest::Support::Utils # If there are any fake data files, retrieve them def fakedata(dir) - ary = [$puppetbase, "test"] + ary = [basedir, "test"] ary += dir.split("/") dir = File.join(ary) @@ -80,7 +82,7 @@ module PuppetTest::Support::Utils end def fakefile(name) - ary = [$puppetbase, "test"] + ary = [basedir, "test"] ary += name.split("/") file = File.join(ary) unless FileTest.exists?(file) @@ -100,7 +102,7 @@ module PuppetTest::Support::Utils # a list of files that we can parse for testing def textfiles - textdir = File.join($puppetbase,"examples","code", "snippets") + textdir = File.join(exampledir,"code", "snippets") Dir.entries(textdir).reject { |f| f =~ /^\./ or f =~ /fail/ }.each { |f| @@ -109,7 +111,7 @@ module PuppetTest::Support::Utils end def failers - textdir = File.join($puppetbase,"examples","code", "failers") + textdir = File.join(exampledir,"code", "failers") # only parse this one file now files = Dir.entries(textdir).reject { |file| file =~ %r{\.swp} diff --git a/test/other/autoload.rb b/test/other/autoload.rb index 95fafbda2..7cbb11c1a 100644 --- a/test/other/autoload.rb +++ b/test/other/autoload.rb @@ -1,18 +1,11 @@ #!/usr/bin/env ruby -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/autoload' require 'puppettest' -require 'test/unit' class TestAutoload < Test::Unit::TestCase - include TestPuppet + include PuppetTest @things = [] def self.newthing(name) @things << name diff --git a/test/other/config.rb b/test/other/config.rb index 33dad6892..3e2c125c7 100755 --- a/test/other/config.rb +++ b/test/other/config.rb @@ -1,18 +1,11 @@ #!/usr/bin/env ruby -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/config' require 'puppettest' -require 'test/unit' class TestConfig < Test::Unit::TestCase - include TestPuppet + include PuppetTest def check_for_users count = Puppet::Type.type(:user).inject(0) { |c,o| diff --git a/test/other/events.rb b/test/other/events.rb index 967fb9395..ab6270b2b 100755 --- a/test/other/events.rb +++ b/test/other/events.rb @@ -1,17 +1,10 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../../../../language/trunk" -end - require 'puppet' require 'puppettest' -require 'test/unit' # $Id$ class TestEvents < Test::Unit::TestCase - include TestPuppet + include PuppetTest def teardown super Puppet::Event::Subscription.clear diff --git a/test/other/filetype.rb b/test/other/filetype.rb index e16ffd86e..6cd749816 100755 --- a/test/other/filetype.rb +++ b/test/other/filetype.rb @@ -1,16 +1,9 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/filetype' require 'puppettest' -require 'test/unit' class TestFileType < Test::Unit::TestCase - include TestPuppet + include PuppetTest def test_flat obj = nil diff --git a/test/other/inifile.rb b/test/other/inifile.rb index eb2fde83d..113036505 100644 --- a/test/other/inifile.rb +++ b/test/other/inifile.rb @@ -1,16 +1,9 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/inifile' require 'puppettest' -require 'test/unit' class TestFileType < Test::Unit::TestCase - include TestPuppet + include PuppetTest def setup super diff --git a/test/other/loadedfile.rb b/test/other/loadedfile.rb index 1089402a1..8ba45bb81 100755 --- a/test/other/loadedfile.rb +++ b/test/other/loadedfile.rb @@ -1,16 +1,9 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/loadedfile' require 'puppettest' -require 'test/unit' class TestLoadedFile < Test::Unit::TestCase - include TestPuppet + include PuppetTest def test_file Puppet[:filetimeout] = 0 file = nil diff --git a/test/other/log.rb b/test/other/log.rb index eec20b278..750014e05 100644 --- a/test/other/log.rb +++ b/test/other/log.rb @@ -1,18 +1,11 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/log' require 'puppettest' -require 'test/unit' # $Id$ class TestLog < Test::Unit::TestCase - include TestPuppet + include PuppetTest def setup super diff --git a/test/other/metrics.rb b/test/other/metrics.rb index c6a563bb2..380ee30bd 100644 --- a/test/other/metrics.rb +++ b/test/other/metrics.rb @@ -1,14 +1,7 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppet/metric' require 'puppet' require 'puppettest' require 'puppet/type' -require 'test/unit' $haverrd = true begin @@ -19,7 +12,7 @@ end if $haverrd class TestMetric < Test::Unit::TestCase - include TestPuppet + include PuppetTest def gendata totalmax = 1000 diff --git a/test/other/overrides.rb b/test/other/overrides.rb index d9220264e..92f4068ef 100755 --- a/test/other/overrides.rb +++ b/test/other/overrides.rb @@ -1,15 +1,8 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppet' require 'puppettest' -require 'test/unit' class TestOverrides < Test::Unit::TestCase - include TestPuppet + include PuppetTest def mksubdirs(basedir, level) @@tmpfiles << basedir dir = basedir.dup diff --git a/test/other/provider.rb b/test/other/provider.rb index fc04b9926..771c54bf9 100644 --- a/test/other/provider.rb +++ b/test/other/provider.rb @@ -1,16 +1,9 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/provider' require 'puppettest' -require 'test/unit' class TestImpl < Test::Unit::TestCase - include TestPuppet + include PuppetTest def setup super diff --git a/test/other/puppet.rb b/test/other/puppet.rb index 18600f7a0..76d978c7c 100755 --- a/test/other/puppet.rb +++ b/test/other/puppet.rb @@ -1,16 +1,9 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppet' require 'puppettest' -require 'test/unit' # Test the different features of the main puppet module class TestPuppetModule < Test::Unit::TestCase - include TestPuppet + include PuppetTest include SignalObserver def mkfakeclient diff --git a/test/other/relationships.rb b/test/other/relationships.rb index 83949d1ed..e2d65beb1 100755 --- a/test/other/relationships.rb +++ b/test/other/relationships.rb @@ -1,15 +1,8 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppet' require 'puppettest' -require 'test/unit' class TestRelationships < Test::Unit::TestCase - include TestPuppet + include PuppetTest def newfile assert_nothing_raised() { return Puppet.type(:file).create( diff --git a/test/other/report.rb b/test/other/report.rb index 2aa78172c..b98813927 100755 --- a/test/other/report.rb +++ b/test/other/report.rb @@ -1,16 +1,9 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/transaction/report' require 'puppettest' -require 'test/unit' class TestReports < Test::Unit::TestCase - include TestPuppet + include PuppetTest # Make sure we can use reports as log destinations. def test_reports_as_log_destinations diff --git a/test/other/storage.rb b/test/other/storage.rb index 64fddf332..789495fee 100755 --- a/test/other/storage.rb +++ b/test/other/storage.rb @@ -1,15 +1,8 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppet' require 'puppettest' -require 'test/unit' class TestStorage < Test::Unit::TestCase - include TestPuppet + include PuppetTest def mkfile path = tempfile() diff --git a/test/other/transactions.rb b/test/other/transactions.rb index aea593c1f..e66151979 100644 --- a/test/other/transactions.rb +++ b/test/other/transactions.rb @@ -1,17 +1,10 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppet' require 'puppettest' -require 'test/unit' # $Id$ class TestTransactions < Test::Unit::TestCase - include FileTesting + include PuppetTest::FileTesting def test_reports path1 = tempfile() @@ -111,7 +104,7 @@ class TestTransactions < Test::Unit::TestCase return Puppet.type(:service).create( :name => "sleeper", :type => "init", - :path => File.join($puppetbase,"examples/root/etc/init.d"), + :path => exampledir("root/etc/init.d"), :hasstatus => true, :check => [:ensure] ) diff --git a/test/providers/group.rb b/test/providers/group.rb index a23dbb50c..63aafc1f7 100755 --- a/test/providers/group.rb +++ b/test/providers/group.rb @@ -1,16 +1,9 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'etc' require 'puppet/type' require 'puppettest' -require 'test/unit' class TestGroupProvider < Test::Unit::TestCase - include TestPuppet + include PuppetTest def setup super @@tmpgroups = [] diff --git a/test/providers/nameservice.rb b/test/providers/nameservice.rb index 0e0f8050f..dafc8dcf0 100644 --- a/test/providers/nameservice.rb +++ b/test/providers/nameservice.rb @@ -1,16 +1,9 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppettest' require 'puppet' -require 'test/unit' require 'facter' class TestNameServiceProvider < Test::Unit::TestCase - include FileTesting + include PuppetTest::FileTesting def test_option klass = Class.new(Puppet::Type::Provider::NameService) diff --git a/test/providers/package.rb b/test/providers/package.rb index 210fae5c1..1c3621909 100644 --- a/test/providers/package.rb +++ b/test/providers/package.rb @@ -1,16 +1,9 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'etc' require 'puppet/type' require 'puppettest' -require 'test/unit' class TestPackageProvider < Test::Unit::TestCase - include TestPuppet + include PuppetTest def setup super @provider = nil diff --git a/test/providers/provider.rb b/test/providers/provider.rb index cd9b32da2..e540f29fe 100644 --- a/test/providers/provider.rb +++ b/test/providers/provider.rb @@ -1,16 +1,9 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppettest' require 'puppet' -require 'test/unit' require 'facter' class TestProvider < Test::Unit::TestCase - include TestPuppet + include PuppetTest def echo echo = Puppet::Util.binary("echo") diff --git a/test/providers/user.rb b/test/providers/user.rb index 0778a257f..15fc202f5 100644 --- a/test/providers/user.rb +++ b/test/providers/user.rb @@ -1,16 +1,9 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppettest' require 'puppet' -require 'test/unit' require 'facter' class TestUserProvider < Test::Unit::TestCase - include FileTesting + include PuppetTest::FileTesting def setup super diff --git a/test/puppet/conffiles.rb b/test/puppet/conffiles.rb index 095ac9c99..9234e2dfd 100755 --- a/test/puppet/conffiles.rb +++ b/test/puppet/conffiles.rb @@ -1,16 +1,9 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = ".." -end - require 'puppet' require 'puppet/config' require 'puppettest' -require 'test/unit' class TestConfFiles < Test::Unit::TestCase - include TestPuppet + include PuppetTest @@gooddata = [ { diff --git a/test/puppet/defaults.rb b/test/puppet/defaults.rb index 2557140e6..46accc9c6 100755 --- a/test/puppet/defaults.rb +++ b/test/puppet/defaults.rb @@ -1,17 +1,10 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = ".." -end - require 'puppet' require 'puppettest' -require 'test/unit' # $Id$ class TestPuppetDefaults < Test::Unit::TestCase - include TestPuppet + include PuppetTest @@dirs = %w{rrddir confdir vardir logdir statedir} @@files = %w{statefile manifest masterlog} @@normals = %w{puppetport masterport server} diff --git a/test/puppet/errortest.rb b/test/puppet/errortest.rb index f27d79822..264cde857 100755 --- a/test/puppet/errortest.rb +++ b/test/puppet/errortest.rb @@ -1,15 +1,8 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppet' require 'puppettest' -require 'test/unit' class TestError < Test::Unit::TestCase - include TestPuppet + include PuppetTest def test_errorisstring error = nil diff --git a/test/puppettest.rb b/test/puppettest.rb deleted file mode 100644 index 70775e0e3..000000000 --- a/test/puppettest.rb +++ /dev/null @@ -1,1320 +0,0 @@ -#libdir = File.join(File.dirname(__FILE__), '../lib') -#unless $:.include?(libdir) -# $:.unshift libdir -#end - -require 'puppet' -require 'test/unit' - -module TestPuppet - include ObjectSpace - - # A baseclass for the faketypes. - class FakeModel - class << self - attr_accessor :name - @name = :fakemodel - end - - def self.validstates - Puppet::Type.type(@name).validstates - end - - def self.validstate?(name) - Puppet::Type.type(@name).validstate?(name) - end - - def self.to_s - "Fake%s" % @name.to_s.capitalize - end - - def [](param) - if @realmodel.attrtype(param) == :state - @is[param] - else - @params[param] - end - end - - def []=(param, value) - unless @realmodel.attrtype(param) - raise Puppet::DevError, "Invalid attribute %s for %s" % - [param, @realmodel.name] - end - if @realmodel.attrtype(param) == :state - @should[param] = value - else - @params[param] = value - end - end - - def initialize(name) - @realmodel = Puppet::Type.type(self.class.name) - raise "Could not find type #{self.class.name}" unless @realmodel - @is = {} - @should = {} - @params = {} - self[:name] = name - end - - def inspect - "%s(%s)" % [self.class.to_s.sub(/.+::/, ''), super()] - end - - def is(param) - @is[param] - end - - def should(param) - @should[param] - end - - def name - self[:name] - end - end - - class FakeProvider - attr_accessor :model - class << self - attr_accessor :name, :model, :methods - end - - # A very low number, so these never show up as defaults via the standard - # algorithms. - def self.defaultnum - -50 - end - - # Set up methods to fake things - def self.apimethods(*ary) - @model.validstates.each do |state| - ary << state unless ary.include? state - end - attr_accessor(*ary) - - @methods = ary - end - - def self.default? - false - end - - def self.initvars - @calls = Hash.new do |hash, key| - hash[key] = 0 - end - end - - def self.suitable? - true - end - - def clear - @model = nil - end - - def initialize(model) - @model = model - end - end - - @@fakemodels = {} - @@fakeproviders = {} - - def fakemodel(type, name, options = {}) - type = type.intern if type.is_a? String - unless @@fakemodels.include? type - @@fakemodels[type] = Class.new(FakeModel) - @@fakemodels[type].name = type - end - - obj = @@fakemodels[type].new(name) - obj[:name] = name - options.each do |name, val| - obj[name] = val - end - obj - end - - def fakeprovider(type, model) - type = type.intern if type.is_a? String - unless @@fakeproviders.include? type - @@fakeproviders[type] = Class.new(FakeModel) do - @name = type - end - end - - @@fakeproviders[type].new(model) - end - - def gcdebug(type) - Puppet.warning "%s: %s" % [type, ObjectSpace.each_object(type) { |o| }] - end - - def newcomp(*ary) - name = nil - if ary[0].is_a?(String) - name = ary.shift - else - name = ary[0].title - end - - comp = Puppet.type(:component).create( - :name => name - ) - ary.each { |item| - comp.push item - } - - return comp - end - - def setup - @memoryatstart = Puppet::Util.memory - if defined? @@testcount - @@testcount += 1 - else - @@testcount = 0 - end - - @configpath = File.join(tmpdir, - self.class.to_s + "configdir" + @@testcount.to_s + "/" - ) - - unless defined? $user and $group - $user = nonrootuser().uid.to_s - $group = nonrootgroup().gid.to_s - end - Puppet[:user] = $user - Puppet[:group] = $group - - Puppet[:confdir] = @configpath - Puppet[:vardir] = @configpath - - unless File.exists?(@configpath) - Dir.mkdir(@configpath) - end - - @@tmpfiles = [@configpath, tmpdir()] - @@tmppids = [] - - @@cleaners = [] - - if $0 =~ /.+\.rb/ or Puppet[:debug] - Puppet::Log.newdestination :console - Puppet::Log.level = :debug - #$VERBOSE = 1 - Puppet.info @method_name - else - Puppet::Log.close - Puppet::Log.newdestination tempfile() - Puppet[:httplog] = tempfile() - end - - Puppet[:ignoreschedules] = true - end - - def newobj(type, name, hash) - transport = Puppet::TransObject.new(name, "file") - transport[:path] = path - transport[:ensure] = "file" - assert_nothing_raised { - file = transport.to_type - } - end - - def spin - # Just disable spin, unless we really need it - return -# if Puppet[:debug] -# return -# end -# @modes = %w{| / - \\} -# unless defined? @mode -# @mode = 0 -# end -# -# $stderr.print "%s" % @modes[@mode] -# if @mode == @modes.length - 1 -# @mode = 0 -# else -# @mode += 1 -# end -# $stderr.flush - end - - # stop any services that might be hanging around - def stopservices - if stype = Puppet::Type.type(:service) - stype.each { |service| - service[:ensure] = :stopped - service.evaluate - } - end - end - - def cleanup(&block) - @@cleaners << block - end - - def setme - # retrieve the user name - id = %x{id}.chomp - if id =~ /uid=\d+\(([^\)]+)\)/ - @me = $1 - else - puts id - end - unless defined? @me - raise "Could not retrieve user name; 'id' did not work" - end - end - - def teardown - stopservices - - @@cleaners.each { |cleaner| cleaner.call() } - - @@tmpfiles.each { |file| - if FileTest.exists?(file) - system("chmod -R 755 %s" % file) - system("rm -rf %s" % file) - end - } - @@tmpfiles.clear - - @@tmppids.each { |pid| - %x{kill -INT #{pid} 2>/dev/null} - } - - @@tmppids.clear - Puppet::Type.allclear - Puppet::Storage.clear - Puppet::Rails.clear - Puppet.clear - - @memoryatend = Puppet::Util.memory - diff = @memoryatend - @memoryatstart - - if diff > 1000 - Puppet.info "%s#%s memory growth (%s to %s): %s" % - [self.class, @method_name, @memoryatstart, @memoryatend, diff] - end - - # reset all of the logs - Puppet::Log.close - - # Just in case there are processes waiting to die... - Process.waitall - if File.stat("/dev/null").mode & 007777 != 0666 - File.open("/tmp/nullfailure", "w") { |f| - f.puts self.class - } - exit(74) - end - end - - def tempfile - if defined? @@tmpfilenum - @@tmpfilenum += 1 - else - @@tmpfilenum = 1 - end - - f = File.join(self.tmpdir(), self.class.to_s + "_" + @method_name + - @@tmpfilenum.to_s) - @@tmpfiles << f - return f - end - - def tstdir - tempfile() - end - - def tmpdir - unless defined? @tmpdir and @tmpdir - @tmpdir = case Facter["operatingsystem"].value - when "Darwin": "/private/tmp" - when "SunOS": "/var/tmp" - else - "/tmp" - end - - - @tmpdir = File.join(@tmpdir, "puppettesting") - - unless File.exists?(@tmpdir) - FileUtils.mkdir_p(@tmpdir) - File.chmod(01777, @tmpdir) - end - end - @tmpdir - end - - def assert_rollback_events(events, trans, msg = nil) - run_events(:rollback, events, trans, msg) - end - - def assert_events(events, *items) - trans = nil - comp = nil - msg = nil - - unless events.is_a? Array - raise Puppet::DevError, "Incorrect call of assert_events" - end - if items[-1].is_a? String - msg = items.pop - end - - remove_comp = false - # They either passed a comp or a list of items. - if items[0].is_a? Puppet.type(:component) - comp = items.shift - else - comp = newcomp(items[0].title, *items) - remove_comp = true - end - msg ||= comp.title - assert_nothing_raised("Component %s failed" % [msg]) { - trans = comp.evaluate - } - - run_events(:evaluate, trans, events, msg) - - if remove_comp - Puppet.type(:component).delete(comp) - end - - return trans - end - - # A simpler method that just applies what we have. - def assert_apply(*objects) - if objects[0].is_a?(Puppet.type(:component)) - comp = objects.shift - unless objects.empty? - objects.each { |o| comp.push o } - end - else - comp = newcomp(*objects) - end - trans = nil - - assert_nothing_raised("Failed to create transaction") { - trans = comp.evaluate - } - - events = nil - assert_nothing_raised("Failed to evaluate transaction") { - events = trans.evaluate.collect { |e| e.event } - } - Puppet.type(:component).delete(comp) - events - end - - def run_events(type, trans, events, msg) - case type - when :evaluate, :rollback: # things are hunky-dory - else - raise Puppet::DevError, "Incorrect run_events type" - end - - method = type - - newevents = nil - assert_nothing_raised("Transaction %s %s failed" % [type, msg]) { - newevents = trans.send(method).reject { |e| e.nil? }.collect { |e| - e.event - } - } - - assert_equal(events, newevents, "Incorrect %s %s events" % [type, msg]) - - return trans - end - - def nonrootuser - Etc.passwd { |user| - if user.uid != Process.uid and user.uid > 0 - return user - end - } - end - - def nonrootgroup - Etc.group { |group| - if group.gid != Process.gid and group.gid > 0 - return group - end - } - end - - # If there are any fake data files, retrieve them - def fakedata(dir) - ary = [$puppetbase, "test"] - ary += dir.split("/") - dir = File.join(ary) - - unless FileTest.exists?(dir) - raise Puppet::DevError, "No fakedata dir %s" % dir - end - files = Dir.entries(dir).reject { |f| f =~ /^\./ }.collect { |f| - File.join(dir, f) - } - - return files - end - - def fakefile(name) - ary = [$puppetbase, "test"] - ary += name.split("/") - file = File.join(ary) - unless FileTest.exists?(file) - raise Puppet::DevError, "No fakedata file %s" % file - end - return file - end - - # wrap how to retrieve the masked mode - def filemode(file) - File.stat(file).mode & 007777 - end - - def memory - Puppet::Util.memory - end -end - - -module ServerTest - include TestPuppet - def setup - super - - if defined? @@port - @@port += 1 - else - @@port = 20000 - end - end - - # create a simple manifest that just creates a file - def mktestmanifest - file = File.join(Puppet[:confdir], "%ssite.pp" % (self.class.to_s + "test")) - #@createdfile = File.join(tmpdir(), self.class.to_s + "manifesttesting" + - # "_" + @method_name) - @createdfile = tempfile() - - File.open(file, "w") { |f| - f.puts "file { \"%s\": ensure => file, mode => 755 }\n" % @createdfile - } - - @@tmpfiles << @createdfile - @@tmpfiles << file - - return file - end - - # create a server, forked into the background - def mkserver(handlers = nil) - # our default handlers - unless handlers - handlers = { - :CA => {}, # so that certs autogenerate - :Master => { - :Manifest => mktestmanifest(), - :UseNodes => false - }, - } - end - - # then create the actual server - server = nil - assert_nothing_raised { - server = Puppet::Server.new( - :Port => @@port, - :Handlers => handlers - ) - } - - # fork it - spid = fork { - trap(:INT) { server.shutdown } - server.start - } - - # and store its pid for killing - @@tmppids << spid - - # give the server a chance to do its thing - sleep 1 - return spid - end - -end - -module ExeTest - include ServerTest - - def setup - super - setbindir - setlibdir - end - - def bindir - File.join($puppetbase, "bin") - end - - def setbindir - unless ENV["PATH"].split(":").include?(bindir) - ENV["PATH"] = [bindir, ENV["PATH"]].join(":") - end - end - - def setlibdir - ENV["RUBYLIB"] = $:.find_all { |dir| - dir =~ /puppet/ or dir =~ /\.\./ - }.join(":") - end - - # Run a ruby command. This explicitly uses ruby to run stuff, since we - # don't necessarily know where our ruby binary is, dernit. - # Currently unused, because I couldn't get it to work. - def rundaemon(*cmd) - @ruby ||= %x{which ruby}.chomp - cmd = cmd.unshift(@ruby).join(" ") - - out = nil - Dir.chdir(bindir()) { - out = %x{#{@ruby} #{cmd}} - } - return out - end - - def startmasterd(args = "") - output = nil - - manifest = mktestmanifest() - args += " --manifest %s" % manifest - args += " --confdir %s" % Puppet[:confdir] - args += " --vardir %s" % Puppet[:vardir] - args += " --masterport %s" % @@port - args += " --user %s" % Process.uid - args += " --group %s" % Process.gid - args += " --nonodes" - args += " --autosign true" - - #if Puppet[:debug] - # args += " --debug" - #end - - cmd = "puppetmasterd %s" % args - - - assert_nothing_raised { - output = %x{#{cmd}}.chomp - } - assert_equal("", output, "Puppetmasterd produced output %s" % output) - assert($? == 0, "Puppetmasterd exit status was %s" % $?) - sleep(1) - - cleanup do - stopmasterd - sleep(1) - end - - return manifest - end - - def stopmasterd(running = true) - ps = Facter["ps"].value || "ps -ef" - - pidfile = File.join(Puppet[:vardir], "run", "puppetmasterd.pid") - - pid = nil - if FileTest.exists?(pidfile) - pid = File.read(pidfile).chomp.to_i - File.unlink(pidfile) - end - - return unless running - if running or pid - runningpid = nil - %x{#{ps}}.chomp.split(/\n/).each { |line| - if line =~ /ruby.+puppetmasterd/ - next if line =~ /\.rb/ # skip the test script itself - next if line =~ /^puppet/ # skip masters running as 'puppet' - ary = line.sub(/^\s+/, '').split(/\s+/) - pid = ary[1].to_i - end - } - - end - - # we default to mandating that it's running, but teardown - # doesn't require that - if pid - if pid == $$ - raise Puppet::Error, "Tried to kill own pid" - end - begin - Process.kill(:INT, pid) - rescue - # ignore it - end - end - end - - def teardown - stopmasterd(false) - super - end -end - -module FileTesting - include TestPuppet - def cycle(comp) - trans = nil - assert_nothing_raised { - trans = comp.evaluate - } - assert_nothing_raised { - trans.evaluate - } - end - - def randlist(list) - num = rand(4) - if num == 0 - num = 1 - end - set = [] - - ret = [] - num.times { |index| - item = list[rand(list.length)] - if set.include?(item) - redo - end - - ret.push item - } - return ret - end - - def mkranddirsandfiles(dirs = nil,files = nil,depth = 3) - if depth < 0 - return - end - - unless dirs - dirs = %w{This Is A Set Of Directories} - end - - unless files - files = %w{and this is a set of files} - end - - tfiles = randlist(files) - tdirs = randlist(dirs) - - tfiles.each { |file| - File.open(file, "w") { |of| - 4.times { - of.puts rand(100) - } - } - } - - tdirs.each { |dir| - # it shouldn't already exist, but... - unless FileTest.exists?(dir) - Dir.mkdir(dir) - FileUtils.cd(dir) { - mkranddirsandfiles(dirs,files,depth - 1) - } - end - } - end - - def file_list(dir) - list = nil - FileUtils.cd(dir) { - list = %x{find . 2>/dev/null}.chomp.split(/\n/) - } - return list - end - - def assert_trees_equal(fromdir,todir) - assert(FileTest.directory?(fromdir)) - assert(FileTest.directory?(todir)) - - # verify the file list is the same - fromlist = nil - FileUtils.cd(fromdir) { - fromlist = %x{find . 2>/dev/null}.chomp.split(/\n/).reject { |file| - ! FileTest.readable?(file) - }.sort - } - tolist = file_list(todir).sort - - fromlist.sort.zip(tolist.sort).each { |a,b| - assert_equal(a, b, - "Fromfile %s with length %s does not match tofile %s with length %s" % - [a, fromlist.length, b, tolist.length]) - } - #assert_equal(fromlist,tolist) - - # and then do some verification that the files are actually set up - # the same - checked = 0 - fromlist.each_with_index { |file,i| - fromfile = File.join(fromdir,file) - tofile = File.join(todir,file) - fromstat = File.stat(fromfile) - tostat = File.stat(tofile) - [:ftype,:gid,:mode,:uid].each { |method| - assert_equal( - fromstat.send(method), - tostat.send(method) - ) - - next if fromstat.ftype == "directory" - if checked < 10 and i % 3 == 0 - from = File.open(fromfile) { |f| f.read } - to = File.open(tofile) { |f| f.read } - - assert_equal(from,to) - checked += 1 - end - } - } - end - - def random_files(dir) - checked = 0 - list = file_list(dir) - list.reverse.each_with_index { |file,i| - path = File.join(dir,file) - stat = File.stat(dir) - if checked < 10 and (i % 3) == 2 - unless yield path - next - end - checked += 1 - end - } - end - - def delete_random_files(dir) - deleted = [] - random_files(dir) { |file| - stat = File.stat(file) - begin - if stat.ftype == "directory" - false - else - deleted << file - File.unlink(file) - true - end - rescue => detail - # we probably won't be able to open our own secured files - puts detail - false - end - } - - return deleted - end - - def add_random_files(dir) - added = [] - random_files(dir) { |file| - stat = File.stat(file) - begin - if stat.ftype == "directory" - name = File.join(file,"file" + rand(100).to_s) - File.open(name, "w") { |f| - f.puts rand(10) - } - added << name - else - false - end - rescue => detail - # we probably won't be able to open our own secured files - puts detail - false - end - } - return added - end - - def modify_random_files(dir) - modded = [] - random_files(dir) { |file| - stat = File.stat(file) - begin - if stat.ftype == "directory" - false - else - File.open(file, "w") { |f| - f.puts rand(10) - } - modded << name - true - end - rescue => detail - # we probably won't be able to open our own secured files - puts detail - false - end - } - return modded - end - - def readonly_random_files(dir) - modded = [] - random_files(dir) { |file| - stat = File.stat(file) - begin - if stat.ftype == "directory" - File.new(file).chmod(0111) - else - File.new(file).chmod(0000) - end - modded << file - rescue => detail - # we probably won't be able to open our own secured files - puts detail - false - end - } - return modded - end - - def conffile - File.join($puppetbase,"examples/root/etc/configfile") - end -end - -module ParserTesting - include TestPuppet - AST = Puppet::Parser::AST - - def astarray(*args) - AST::ASTArray.new( - :children => args - ) - end - - def classobj(name, args = {}) - args[:type] ||= nameobj(name) - args[:code] ||= AST::ASTArray.new( - :file => __FILE__, - :line => __LINE__, - :children => [ - varobj("%svar" % name, "%svalue" % name), - fileobj("/%s" % name) - ] - ) - assert_nothing_raised("Could not create class %s" % name) { - return AST::ClassDef.new(args) - } - end - - def tagobj(*names) - args = {} - newnames = names.collect do |name| - if name.is_a? AST - name - else - nameobj(name) - end - end - args[:type] = astarray(*newnames) - assert_nothing_raised("Could not create tag %s" % names.inspect) { - return AST::Tag.new(args) - } - end - - def compobj(name, args = {}) - args[:file] ||= tempfile() - args[:line] ||= rand(100) - args[:type] ||= nameobj(name) - args[:args] ||= AST::ASTArray.new( - :file => tempfile(), - :line => rand(100), - :children => [] - ) - args[:code] ||= AST::ASTArray.new( - :file => tempfile(), - :line => rand(100), - :children => [ - varobj("%svar" % name, "%svalue" % name), - fileobj("/%s" % name) - ] - ) - assert_nothing_raised("Could not create compdef %s" % name) { - return AST::CompDef.new(args) - } - end - - def objectdef(type, name, params) - assert_nothing_raised("Could not create %s %s" % [type, name]) { - return AST::ObjectDef.new( - :file => __FILE__, - :line => __LINE__, - :name => stringobj(name), - :type => nameobj(type), - :params => objectinst(params) - ) - } - end - - def fileobj(path, hash = {"owner" => "root"}) - assert_nothing_raised("Could not create file %s" % path) { - return objectdef("file", path, hash) -# return AST::ObjectDef.new( -# :file => tempfile(), -# :line => rand(100), -# :name => stringobj(path), -# :type => nameobj("file"), -# :params => objectinst(hash) -# ) - } - end - - def nameobj(name) - assert_nothing_raised("Could not create name %s" % name) { - return AST::Name.new( - :file => tempfile(), - :line => rand(100), - :value => name - ) - } - end - - def typeobj(name) - assert_nothing_raised("Could not create type %s" % name) { - return AST::Type.new( - :file => tempfile(), - :line => rand(100), - :value => name - ) - } - end - - def nodedef(name) - assert_nothing_raised("Could not create node %s" % name) { - return AST::NodeDef.new( - :file => tempfile(), - :line => rand(100), - :names => nameobj(name), - :code => AST::ASTArray.new( - :children => [ - varobj("%svar" % name, "%svalue" % name), - fileobj("/%s" % name) - ] - ) - ) - } - end - - def objectinst(hash) - assert_nothing_raised("Could not create object instance") { - params = hash.collect { |param, value| - objectparam(param, value) - } - return AST::ObjectInst.new( - :file => tempfile(), - :line => rand(100), - :children => params - ) - } - end - - def objectparam(param, value) - # Allow them to pass non-strings in - if value.is_a?(String) - value = stringobj(value) - end - assert_nothing_raised("Could not create param %s" % param) { - return AST::ObjectParam.new( - :file => tempfile(), - :line => rand(100), - :param => nameobj(param), - :value => value - ) - } - end - - def stringobj(value) - AST::String.new( - :file => tempfile(), - :line => rand(100), - :value => value - ) - end - - def varobj(name, value) - unless value.is_a? AST - value = stringobj(value) - end - assert_nothing_raised("Could not create %s code" % name) { - return AST::VarDef.new( - :file => tempfile(), - :line => rand(100), - :name => nameobj(name), - :value => value - ) - } - end - - def varref(name) - assert_nothing_raised("Could not create %s variable" % name) { - return AST::Variable.new( - :file => __FILE__, - :line => __LINE__, - :value => name - ) - } - end - - def argobj(name, value) - assert_nothing_raised("Could not create %s compargument" % name) { - return AST::CompArgument.new( - :children => [nameobj(name), stringobj(value)] - ) - } - end - - def defaultobj(type, params) - pary = [] - params.each { |p,v| - pary << AST::ObjectParam.new( - :file => __FILE__, - :line => __LINE__, - :param => nameobj(p), - :value => stringobj(v) - ) - } - past = AST::ASTArray.new( - :file => __FILE__, - :line => __LINE__, - :children => pary - ) - - assert_nothing_raised("Could not create defaults for %s" % type) { - return AST::TypeDefaults.new( - :file => __FILE__, - :line => __LINE__, - :type => typeobj(type), - :params => past - ) - } - end - - def taggedobj(name, ftype = :statement) - functionobj("tagged", name, ftype) - end - - def functionobj(function, name, ftype = :statement) - func = nil - assert_nothing_raised do - func = Puppet::Parser::AST::Function.new( - :name => function, - :ftype => ftype, - :arguments => AST::ASTArray.new( - :children => [nameobj(name)] - ) - ) - end - - return func - end - - # This assumes no nodes - def assert_creates(manifest, *files) - interp = nil - assert_nothing_raised { - interp = Puppet::Parser::Interpreter.new( - :Manifest => manifest, - :UseNodes => false - ) - } - - config = nil - assert_nothing_raised { - config = interp.run(Facter["hostname"].value, {}) - } - - comp = nil - assert_nothing_raised { - comp = config.to_type - } - - assert_apply(comp) - - files.each do |file| - assert(FileTest.exists?(file), "Did not create %s" % file) - end - end - - def mk_transobject(file = "/etc/passwd") - obj = nil - assert_nothing_raised { - obj = Puppet::TransObject.new("file", file) - obj["owner"] = "root" - obj["mode"] = "644" - } - - return obj - end - - def mk_transbucket(*objects) - bucket = nil - assert_nothing_raised { - bucket = Puppet::TransBucket.new - bucket.name = "yayname" - bucket.type = "yaytype" - } - - objects.each { |o| bucket << o } - - return bucket - end - - # Make a tree of objects, yielding if desired - def mk_transtree(depth = 4, width = 2) - top = nil - assert_nothing_raised { - top = Puppet::TransBucket.new - top.name = "top" - top.type = "bucket" - } - - bucket = top - - file = tempfile() - depth.times do |i| - objects = [] - width.times do |j| - path = tempfile + i.to_s - obj = Puppet::TransObject.new("file", path) - obj["owner"] = "root" - obj["mode"] = "644" - - # Yield, if they want - if block_given? - yield(obj, i, j) - end - - objects << obj - end - - newbucket = mk_transbucket(*objects) - - bucket.push newbucket - bucket = newbucket - end - - return top - end - - # Take a list of AST objects, evaluate them, and return the results - def assert_evaluate(children) - top = nil - assert_nothing_raised("Could not create top object") { - top = AST::ASTArray.new( - :children => children - ) - } - - trans = nil - scope = nil - assert_nothing_raised { - scope = Puppet::Parser::Scope.new() - trans = scope.evaluate(:ast => top) - } - - return trans - end -end - -class PuppetTestSuite - attr_accessor :subdir - - def self.basedir - unless defined? @basedir - @basedir = File.join($puppetbase, "test") - end - @basedir - end - - def self.list - Dir.entries(self.basedir).find_all { |file| - path = File.join(@basedir, file) - # Data is for storing test data - FileTest.directory?(path) and file !~ /^\./ and file != "data" and - file != "lib" - } - end - - def initialize(name) - path = File.join(self.class.basedir, name) - if FileTest.directory?(path) - # load each of the files - Dir.entries(path).collect { |file| - File.join(path,file) - }.find_all { |file| - FileTest.file?(file) and file =~ /\.rb$/ - }.sort { |a,b| - # in the order they were modified, so the last modified files - # are loaded and thus displayed last - File.stat(b) <=> File.stat(a) - }.each { |file| - require file - } - elsif FileTest.file?(path) && path =~ /\.rb$/ - require path - else - puts "TestSuites are directories or files containing test cases" - puts "no such directory: %s" % path - exit(65) - end - end -end - -# a list of files that we can parse for testing -def textfiles - textdir = File.join($puppetbase,"examples","code", "snippets") - Dir.entries(textdir).reject { |f| - f =~ /^\./ or f =~ /fail/ - }.each { |f| - yield File.join(textdir, f) - } -end - -def failers - textdir = File.join($puppetbase,"examples","code", "failers") - # only parse this one file now - files = Dir.entries(textdir).reject { |file| - file =~ %r{\.swp} - }.reject { |file| - file =~ %r{\.disabled} - }.collect { |file| - File.join(textdir,file) - }.find_all { |file| - FileTest.file?(file) - }.sort.each { |file| - Puppet.debug "Processing %s" % file - yield file - } -end - -# $Id$ diff --git a/test/server/authconfig.rb b/test/server/authconfig.rb index 32ae46dff..a5a0a1c00 100755 --- a/test/server/authconfig.rb +++ b/test/server/authconfig.rb @@ -1,16 +1,9 @@ -if __FILE__ == $0 - $:.unshift '../../lib' - $:.unshift '..' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/server/authconfig' -require 'test/unit' -require 'puppettest.rb' +require 'puppettest' class TestAuthConfig < Test::Unit::TestCase - include TestPuppet + include PuppetTest def test_parsingconfigfile file = tempfile() diff --git a/test/server/authstore.rb b/test/server/authstore.rb index db580d68e..30eb5ea04 100755 --- a/test/server/authstore.rb +++ b/test/server/authstore.rb @@ -1,20 +1,9 @@ -if __FILE__ == $0 - if Dir.getwd =~ /test\/server$/ - Dir.chdir("..") - end - - $:.unshift '../lib' - $puppetbase = ".." - -end - require 'puppet' require 'puppet/server/authstore' -require 'test/unit' -require 'puppettest.rb' +require 'puppettest' class TestAuthStore < Test::Unit::TestCase - include TestPuppet + include PuppetTest def mkstore store = nil assert_nothing_raised { diff --git a/test/server/bucket.rb b/test/server/bucket.rb index af2fd0865..dcb50d27e 100644 --- a/test/server/bucket.rb +++ b/test/server/bucket.rb @@ -1,19 +1,9 @@ -if __FILE__ == $0 - $:.unshift '../../lib' - $:.unshift '..' - $puppetbase = "../.." - $debug = true -else - $debug = false -end - require 'puppet' -require 'test/unit' -require 'puppettest.rb' +require 'puppettest' require 'base64' class TestBucket < Test::Unit::TestCase - include ServerTest + include PuppetTest::ServerTest def out if defined? @num diff --git a/test/server/ca.rb b/test/server/ca.rb index b7bad5cd6..8be0df334 100644 --- a/test/server/ca.rb +++ b/test/server/ca.rb @@ -1,15 +1,8 @@ -if __FILE__ == $0 - $:.unshift '../../lib' - $:.unshift '..' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/server/ca' require 'puppet/sslcertificates' require 'openssl' -require 'test/unit' -require 'puppettest.rb' +require 'puppettest' # $Id$ @@ -20,7 +13,7 @@ else end class TestCA < Test::Unit::TestCase - include ServerTest + include PuppetTest::ServerTest # Verify that we're autosigning. We have to autosign a "different" machine, # since we always autosign the CA server's certificate. def test_autocertgeneration diff --git a/test/server/fileserver.rb b/test/server/fileserver.rb index b42b1712f..e7aaa6017 100755 --- a/test/server/fileserver.rb +++ b/test/server/fileserver.rb @@ -1,20 +1,9 @@ -if __FILE__ == $0 - if Dir.getwd =~ /test\/server$/ - Dir.chdir("..") - end - - $:.unshift '../lib' - $puppetbase = ".." - -end - require 'puppet' require 'puppet/server/fileserver' -require 'test/unit' -require 'puppettest.rb' +require 'puppettest' class TestFileServer < Test::Unit::TestCase - include TestPuppet + include PuppetTest def mkmount(path = nil) mount = nil @@ -53,7 +42,6 @@ class TestFileServer < Test::Unit::TestCase def mktestfiles(testdir) @@tmpfiles << testdir assert_nothing_raised { - Dir.mkdir(testdir) files = %w{a b c d e}.collect { |l| name = File.join(testdir, "file%s" % l) File.open(name, "w") { |f| diff --git a/test/server/logger.rb b/test/server/logger.rb index e0a03417e..8ba0d0067 100644 --- a/test/server/logger.rb +++ b/test/server/logger.rb @@ -1,17 +1,10 @@ -if __FILE__ == $0 - $:.unshift '../../lib' - $:.unshift '..' - $puppetbase = "../.." -end - require 'puppet' -require 'test/unit' -require 'puppettest.rb' +require 'puppettest' require 'base64' require 'cgi' class TestLogger < Test::Unit::TestCase - include ServerTest + include PuppetTest::ServerTest def setup super diff --git a/test/server/master.rb b/test/server/master.rb index 2f6804e56..2d1b9ec2c 100644 --- a/test/server/master.rb +++ b/test/server/master.rb @@ -1,21 +1,10 @@ -if __FILE__ == $0 - if Dir.getwd =~ /test\/server$/ - Dir.chdir("..") - end - - $:.unshift '../lib' - $puppetbase = ".." - -end - require 'puppet' require 'puppet/server' require 'puppet/client' -require 'test/unit' -require 'puppettest.rb' +require 'puppettest' class TestMaster < Test::Unit::TestCase - include ServerTest + include PuppetTest::ServerTest def teardown super #print "\n\n\n\n" if Puppet[:debug] diff --git a/test/server/pelement.rb b/test/server/pelement.rb index 5d5b5ceb4..edfe89744 100644 --- a/test/server/pelement.rb +++ b/test/server/pelement.rb @@ -1,18 +1,11 @@ -if __FILE__ == $0 - $:.unshift '../../lib' - $:.unshift '..' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/server/pelement' -require 'test/unit' -require 'puppettest.rb' +require 'puppettest' require 'base64' require 'cgi' class TestPElementServer < Test::Unit::TestCase - include ServerTest + include PuppetTest::ServerTest def verify_described(type, described) described.each do |name, trans| @@ -175,7 +168,7 @@ class TestPElementServer < Test::Unit::TestCase def test_describe_alltypes # Systems get pretty retarded, so I'm going to set the path to some fake # data for ports - #Puppet::Type::ParsedType::Port.path = File.join($puppetbase, + #Puppet::Type::ParsedType::Port.path = File.join(basedir, # "test/data/types/ports/1") #Puppet.err Puppet::Type::ParsedType::Port.path server = nil diff --git a/test/server/report.rb b/test/server/report.rb index 5e74dc1da..423b8ce90 100755 --- a/test/server/report.rb +++ b/test/server/report.rb @@ -1,17 +1,10 @@ -if __FILE__ == $0 - $:.unshift '../../lib' - $:.unshift '..' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/server/report' require 'puppet/client/reporter' -require 'test/unit' -require 'puppettest.rb' +require 'puppettest' class TestReportServer < Test::Unit::TestCase - include TestPuppet + include PuppetTest Puppet::Util.logmethods(self) def mkserver diff --git a/test/server/rights.rb b/test/server/rights.rb index 09cb21e56..ac0944bd0 100755 --- a/test/server/rights.rb +++ b/test/server/rights.rb @@ -1,16 +1,9 @@ -if __FILE__ == $0 - $:.unshift '../../lib' - $:.unshift '..' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/server/rights' -require 'test/unit' -require 'puppettest.rb' +require 'puppettest' class TestRights < Test::Unit::TestCase - include TestPuppet + include PuppetTest def test_rights store = nil diff --git a/test/server/runner.rb b/test/server/runner.rb index 59487776f..1c2fa9cea 100755 --- a/test/server/runner.rb +++ b/test/server/runner.rb @@ -1,16 +1,9 @@ -if __FILE__ == $0 - $:.unshift '../../lib' - $:.unshift '..' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/server/runner' -require 'test/unit' -require 'puppettest.rb' +require 'puppettest' class TestServerRunner < Test::Unit::TestCase - include TestPuppet + include PuppetTest def mkclient(file) master = nil diff --git a/test/server/server.rb b/test/server/server.rb index e279d8440..681fa1f42 100644 --- a/test/server/server.rb +++ b/test/server/server.rb @@ -1,13 +1,6 @@ -if __FILE__ == $0 - $:.unshift '../../lib' - $:.unshift '..' - $puppetbase = "../.." -end - require 'puppet' require 'puppet/server' -require 'test/unit' -require 'puppettest.rb' +require 'puppettest' # $Id$ @@ -18,7 +11,7 @@ else end class TestServer < Test::Unit::TestCase - include ServerTest + include PuppetTest::ServerTest # test that we can connect to the server # we have to use fork here, because we apparently can't use threads diff --git a/test/tagging/tagging.rb b/test/tagging/tagging.rb index 434ef6e69..42f04ff4f 100644 --- a/test/tagging/tagging.rb +++ b/test/tagging/tagging.rb @@ -1,15 +1,8 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppet' require 'puppettest' -require 'test/unit' class TestTagging < Test::Unit::TestCase - include TestPuppet + include PuppetTest # Make sure the scopes are getting the right tags def test_scopetags @@ -62,9 +55,14 @@ class TestTagging < Test::Unit::TestCase ) } + ast = Puppet::Parser::AST::ASTArray.new({}) + + # We have to use 'evaluate', rather than just calling to_trans directly, + # because scopes do some internal checking to make sure the same object + # is not translated multiple times. objects = nil assert_nothing_raised { - objects = scope.to_trans + objects = scope.evaluate(:ast => ast) } # There's only one object, so shift it out diff --git a/test/test b/test/test deleted file mode 100755 index 9b3613599..000000000 --- a/test/test +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/env ruby - -#------------------------------------------------------------ -# run any or all test suites - -basedir = File.dirname(__FILE__) -if basedir == "." - basedir = Dir.getwd -end -$puppetbase = File.expand_path(File.join(basedir, "..")) - -$:.unshift basedir -$:.unshift "#{$puppetbase}/lib" - - -require 'puppettest.rb' -require 'getoptlong' - - #[ "--size", "-s", GetoptLong::REQUIRED_ARGUMENT ], -result = GetoptLong.new( - [ "--debug", "-d", GetoptLong::NO_ARGUMENT ], - [ "-n", GetoptLong::REQUIRED_ARGUMENT ], - [ "--help", "-h", GetoptLong::NO_ARGUMENT ] -) - -usage = "USAGE: %s [--help] <testsuite> <testsuite> .." % $0 - -opts = [] - -result.each { |opt,arg| - case opt - when "--debug" - Puppet::Log.level = :debug - when "--help" - puts usage - exit - else - opts << opt << arg - #raise "Invalid option '#{opt}'" - end -} -suites = nil - -if ARGV.length != 0 - suites = ARGV.dup -else - suites = PuppetTestSuite.list -end - -ARGV.clear - -opts.each { |o| ARGV << o } - -suites.each { |suite| - PuppetTestSuite.new(suite) -} - -# This damn problem just doesn't seem to want to go away -system("%s/etc/init.d/sleeper stop 2>/dev/null 1>/dev/null" % $puppetbase) - -# $Id$ diff --git a/test/types/basic.rb b/test/types/basic.rb index f734cb5a0..e8dd38c77 100644 --- a/test/types/basic.rb +++ b/test/types/basic.rb @@ -1,15 +1,8 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppet' require 'puppettest' -require 'test/unit' class TestBasic < Test::Unit::TestCase - include TestPuppet + include PuppetTest # hmmm # this is complicated, because we store references to the created # objects in a central store @@ -39,7 +32,7 @@ class TestBasic < Test::Unit::TestCase @sleeper = Puppet.type(:service).create( :name => "sleeper", :provider => "init", - :path => File.join($puppetbase,"examples/root/etc/init.d"), + :path => exampledir("root/etc/init.d"), :hasstatus => true, :ensure => :running ) diff --git a/test/types/component.rb b/test/types/component.rb index 0754e7cdc..2ab0661d6 100755 --- a/test/types/component.rb +++ b/test/types/component.rb @@ -1,17 +1,10 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../../../../language/trunk" -end - require 'puppet' require 'puppettest' -require 'test/unit' # $Id$ class TestComponent < Test::Unit::TestCase - include TestPuppet + include PuppetTest def setup super @@used = {} diff --git a/test/types/cron.rb b/test/types/cron.rb index 65d37cfa0..b802a1c77 100755 --- a/test/types/cron.rb +++ b/test/types/cron.rb @@ -1,18 +1,11 @@ # Test cron job creation, modification, and destruction -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../lib' - $puppetbase = "../.." -end - require 'puppettest' require 'puppet' -require 'test/unit' require 'facter' class TestCron < Test::Unit::TestCase - include TestPuppet + include PuppetTest def setup super diff --git a/test/types/exec.rb b/test/types/exec.rb index 8f09420d1..4719e0baa 100755 --- a/test/types/exec.rb +++ b/test/types/exec.rb @@ -1,16 +1,9 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppet' require 'puppettest' -require 'test/unit' require 'facter' class TestExec < Test::Unit::TestCase - include TestPuppet + include PuppetTest def test_execution command = nil output = nil diff --git a/test/types/file.rb b/test/types/file.rb index e814b6c37..b87f1b928 100644 --- a/test/types/file.rb +++ b/test/types/file.rb @@ -1,16 +1,9 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppet' -require 'test/unit' require 'fileutils' require 'puppettest' class TestFile < Test::Unit::TestCase - include FileTesting + include PuppetTest::FileTesting # hmmm # this is complicated, because we store references to the created # objects in a central store diff --git a/test/types/filebucket.rb b/test/types/filebucket.rb index e7e7e3e73..eb7ee59f7 100755 --- a/test/types/filebucket.rb +++ b/test/types/filebucket.rb @@ -1,18 +1,11 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../../../../language/trunk" -end - require 'puppet' -require 'test/unit' require 'fileutils' require 'puppettest' # $Id$ class TestFileBucket < Test::Unit::TestCase - include FileTesting + include PuppetTest::FileTesting # hmmm # this is complicated, because we store references to the created # objects in a central store diff --git a/test/types/fileignoresource.rb b/test/types/fileignoresource.rb index 4189c50e3..1340dbbc9 100644 --- a/test/types/fileignoresource.rb +++ b/test/types/fileignoresource.rb @@ -1,19 +1,11 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $:.unshift "../../../../language/trunk/lib" - $puppetbase = "../../../../language/trunk" -end - require 'puppet' require 'cgi' -require 'test/unit' require 'fileutils' require 'puppettest' class TestFileIgnoreSources < Test::Unit::TestCase - include FileTesting + include PuppetTest::FileTesting def setup super diff --git a/test/types/filesources.rb b/test/types/filesources.rb index 009d1a35a..3cc546b40 100755 --- a/test/types/filesources.rb +++ b/test/types/filesources.rb @@ -1,18 +1,10 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $:.unshift "../../../../language/trunk/lib" - $puppetbase = "../../../../language/trunk" -end - require 'puppet' require 'cgi' -require 'test/unit' require 'fileutils' require 'puppettest' class TestFileSources < Test::Unit::TestCase - include FileTesting + include PuppetTest::FileTesting def setup super begin diff --git a/test/types/group.rb b/test/types/group.rb index 508b8436c..68893ff4d 100755 --- a/test/types/group.rb +++ b/test/types/group.rb @@ -1,18 +1,11 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'etc' require 'puppet/type' require 'puppettest' -require 'test/unit' class TestGroup < Test::Unit::TestCase - include TestPuppet + include PuppetTest - p = Puppet::Type.type(:group).provide :fake, :parent => TestPuppet::FakeProvider do + p = Puppet::Type.type(:group).provide :fake, :parent => PuppetTest::FakeProvider do @name = :fake apimethods :ensure, :gid diff --git a/test/types/host.rb b/test/types/host.rb index 8af9e3e4a..db2c391bf 100755 --- a/test/types/host.rb +++ b/test/types/host.rb @@ -1,18 +1,11 @@ # Test host job creation, modification, and destruction -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppettest' require 'puppet' -require 'test/unit' require 'facter' class TestHost < Test::Unit::TestCase - include TestPuppet + include PuppetTest def setup super # god i'm lazy diff --git a/test/types/mount.rb b/test/types/mount.rb index 70170289e..e0838e072 100755 --- a/test/types/mount.rb +++ b/test/types/mount.rb @@ -1,19 +1,12 @@ # Test host job creation, modification, and destruction -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppettest' require 'puppet' require 'puppet/type/parsedtype/mount' -require 'test/unit' require 'facter' class TestMounts < Test::Unit::TestCase - include TestPuppet + include PuppetTest def setup super @mounttype = Puppet.type(:mount) diff --git a/test/types/package.rb b/test/types/package.rb index 51bfc5fa3..4d04dc147 100644 --- a/test/types/package.rb +++ b/test/types/package.rb @@ -1,12 +1,5 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppettest' require 'puppet' -require 'test/unit' require 'facter' $platform = Facter["operatingsystem"].value @@ -16,7 +9,7 @@ unless Puppet.type(:package).defaultprovider else class TestPackages < Test::Unit::TestCase - include FileTesting + include PuppetTest::FileTesting def setup super #@list = Puppet.type(:package).getpkglist diff --git a/test/types/parameter.rb b/test/types/parameter.rb index 902f1398e..e94fe914b 100644 --- a/test/types/parameter.rb +++ b/test/types/parameter.rb @@ -1,15 +1,8 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppet/type' require 'puppettest' -require 'test/unit' class TestParameter < Test::Unit::TestCase - include TestPuppet + include PuppetTest def newparam(name = :fakeparam) assert_nothing_raised { diff --git a/test/types/port.rb b/test/types/port.rb index debd7ed89..ad73e7d97 100755 --- a/test/types/port.rb +++ b/test/types/port.rb @@ -1,19 +1,12 @@ # Test host job creation, modification, and destruction -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppettest' require 'puppet' require 'puppet/type/parsedtype/port' -require 'test/unit' require 'facter' class TestPort < Test::Unit::TestCase - include TestPuppet + include PuppetTest def setup super @porttype = Puppet.type(:port) diff --git a/test/types/query.rb b/test/types/query.rb index 121670012..fe5742490 100644 --- a/test/types/query.rb +++ b/test/types/query.rb @@ -1,23 +1,16 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = File.join(Dir.getwd(), "../..") -end - require 'puppet' require 'puppettest' -require 'test/unit' # $Id$ class TestQuery < Test::Unit::TestCase - include TestPuppet + include PuppetTest # hmmm # this is complicated, because we store references to the created # objects in a central store def file assert_nothing_raised() { - cfile = File.join($puppetbase,"examples/root/etc/configfile") + cfile = exampledir("root/etc/configfile") unless Puppet.type(:file).has_key?(cfile) Puppet.type(:file).create( :path => cfile, @@ -35,7 +28,7 @@ class TestQuery < Test::Unit::TestCase Puppet.type(:service).create( :name => "sleeper", :provider => "init", - :path => File.join($puppetbase,"examples/root/etc/init.d"), + :path => exampledir("root/etc/init.d"), :hasstatus => true, :check => [:ensure] ) diff --git a/test/types/schedule.rb b/test/types/schedule.rb index ded677fd2..b68540d84 100755 --- a/test/types/schedule.rb +++ b/test/types/schedule.rb @@ -1,16 +1,9 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppet' -require 'test/unit' require 'puppet/type/schedule' require 'puppettest' class TestSchedule < Test::Unit::TestCase - include TestPuppet + include PuppetTest def setup super diff --git a/test/types/service.rb b/test/types/service.rb index e936e8f84..f9d6251ad 100644 --- a/test/types/service.rb +++ b/test/types/service.rb @@ -1,12 +1,5 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppet' require 'puppettest' -require 'test/unit' $skipsvcs = false case Facter["operatingsystem"].value @@ -18,13 +11,13 @@ if $skipsvcs else #class TestInitService < Test::Unit::TestCase class TestInitService - include TestPuppet + include PuppetTest def setup super sleeper = nil - script = File.join($puppetbase,"examples/root/etc/init.d/sleeper") - @init = File.join($puppetbase,"examples/root/etc/init.d") + script = exampledir("root/etc/init.d/sleeper") + @init = exampledir("root/etc/init.d") @status = script + " status" end @@ -44,7 +37,7 @@ class TestInitService def mksleeper(hash = {}) hash[:name] = "sleeper" - hash[:path] = File.join($puppetbase,"examples/root/etc/init.d") + hash[:path] = exampledir("root/etc/init.d") hash[:ensure] = true hash[:hasstatus] = true hash[:hasrestart] = true @@ -111,7 +104,7 @@ class TestInitService end class TestLocalService < Test::Unit::TestCase - include TestPuppet + include PuppetTest def teardown Puppet.type(:service).clear diff --git a/test/types/sshkey.rb b/test/types/sshkey.rb index ff9adc336..e541a0bd6 100755 --- a/test/types/sshkey.rb +++ b/test/types/sshkey.rb @@ -1,19 +1,12 @@ # Test key job creation, modification, and destruction -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppettest' require 'puppet' require 'puppet/type/parsedtype/sshkey' -require 'test/unit' require 'facter' class TestSSHKey < Test::Unit::TestCase - include TestPuppet + include PuppetTest def setup super # god i'm lazy diff --git a/test/types/state.rb b/test/types/state.rb index 638372afe..c3ea0965f 100644 --- a/test/types/state.rb +++ b/test/types/state.rb @@ -1,15 +1,8 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppet/type' require 'puppettest' -require 'test/unit' class TestState < Test::Unit::TestCase - include TestPuppet + include PuppetTest def newinst(state) inst = nil diff --git a/test/types/symlink.rb b/test/types/symlink.rb index 408817cb7..8f3e1d598 100755 --- a/test/types/symlink.rb +++ b/test/types/symlink.rb @@ -1,17 +1,10 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../../../../language/trunk" -end - require 'puppet' require 'puppettest' -require 'test/unit' # $Id$ class TestSymlink < Test::Unit::TestCase - include FileTesting + include PuppetTest::FileTesting def mktmpfile # because luke's home directory is on nfs, it can't be used for testing # as root diff --git a/test/types/tidy.rb b/test/types/tidy.rb index dc5bc2d2d..74c6bceda 100755 --- a/test/types/tidy.rb +++ b/test/types/tidy.rb @@ -1,17 +1,10 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../../../../language/trunk" -end - require 'puppet' require 'puppettest' -require 'test/unit' # $Id$ class TestTidy < Test::Unit::TestCase - include FileTesting + include PuppetTest::FileTesting def mktmpfile # because luke's home directory is on nfs, it can't be used for testing # as root diff --git a/test/types/type.rb b/test/types/type.rb index 010102ad9..f8785fd3b 100644 --- a/test/types/type.rb +++ b/test/types/type.rb @@ -1,15 +1,8 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppet/type' require 'puppettest' -require 'test/unit' class TestType < Test::Unit::TestCase - include TestPuppet + include PuppetTest def test_typemethods Puppet::Type.eachtype { |type| name = nil diff --git a/test/types/user.rb b/test/types/user.rb index 008f39272..958cf9441 100755 --- a/test/types/user.rb +++ b/test/types/user.rb @@ -1,18 +1,11 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'etc' require 'puppet/type' require 'puppettest' -require 'test/unit' class TestUser < Test::Unit::TestCase - include TestPuppet + include PuppetTest - p = Puppet::Type.type(:user).provide :fake, :parent => TestPuppet::FakeProvider do + p = Puppet::Type.type(:user).provide :fake, :parent => PuppetTest::FakeProvider do @name = :fake apimethods def create diff --git a/test/types/yumrepo.rb b/test/types/yumrepo.rb index f88525d1e..4a377c3ed 100644 --- a/test/types/yumrepo.rb +++ b/test/types/yumrepo.rb @@ -1,18 +1,11 @@ # Test the yumrepo type -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppettest' require 'puppet' -require 'test/unit' require 'fileutils' class TestYumRepo < Test::Unit::TestCase - include TestPuppet + include PuppetTest def setup super diff --git a/test/types/zone.rb b/test/types/zone.rb index 4370c300d..46f411ef3 100755 --- a/test/types/zone.rb +++ b/test/types/zone.rb @@ -1,19 +1,12 @@ # Test host job creation, modification, and destruction -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = "../.." -end - require 'puppettest' require 'puppet' require 'puppet/type/zone' -require 'test/unit' require 'facter' class TestZone < Test::Unit::TestCase - include TestPuppet + include PuppetTest def test_nothing end diff --git a/test/util/classgen.rb b/test/util/classgen.rb index 7b1b4731c..7f3cb23ca 100755 --- a/test/util/classgen.rb +++ b/test/util/classgen.rb @@ -1,15 +1,8 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = ".." -end - require 'puppet' require 'puppettest' -require 'test/unit' class TestPuppetUtilClassGen < Test::Unit::TestCase - include TestPuppet + include PuppetTest class FakeBase class << self diff --git a/test/util/execution.rb b/test/util/execution.rb index ec56c84bb..932e03807 100755 --- a/test/util/execution.rb +++ b/test/util/execution.rb @@ -1,15 +1,8 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = ".." -end - require 'puppet' require 'puppettest' -require 'test/unit' class TestPuppetUtilExecution < Test::Unit::TestCase - include TestPuppet + include PuppetTest def test_withenv ENV["testing"] = "yay" diff --git a/test/util/package.rb b/test/util/package.rb index 2d7f633de..bb5cd3c85 100755 --- a/test/util/package.rb +++ b/test/util/package.rb @@ -1,16 +1,9 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = ".." -end - require 'puppet' require 'puppet/util/package' require 'puppettest' -require 'test/unit' class TestPuppetUtilPackage < Test::Unit::TestCase - include TestPuppet + include PuppetTest include Puppet::Util::Package def test_versioncmp diff --git a/test/util/utiltest.rb b/test/util/utiltest.rb index 481b8a9fe..b3a356429 100755 --- a/test/util/utiltest.rb +++ b/test/util/utiltest.rb @@ -1,15 +1,8 @@ -if __FILE__ == $0 - $:.unshift '..' - $:.unshift '../../lib' - $puppetbase = ".." -end - require 'puppet' require 'puppettest' -require 'test/unit' class TestPuppetUtil < Test::Unit::TestCase - include TestPuppet + include PuppetTest # we're getting corrupt files, probably because multiple processes # are reading or writing the file at once |