diff options
author | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2006-09-19 18:04:20 +0000 |
---|---|---|
committer | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2006-09-19 18:04:20 +0000 |
commit | 3891f48119ea01d04d7495cf2f07a9ddb37b2afc (patch) | |
tree | 564c02bc5cc3498a440ddea80e96a8852791c528 | |
parent | dcab464f8db80e6d8c91a595a77875222f2927bf (diff) | |
download | puppet-3891f48119ea01d04d7495cf2f07a9ddb37b2afc.tar.gz |
Converting to using the Rakefile for testing. The old 'test' script is
now deprecated, and I'll send an email to the dev list and update the
docs to reflect that.
This still isn't the final solution, because the module structure is a
bit weird, but at least it's a starting point, and everything from here
on out is small changes, as opposed to large architectural changes.
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@1632 980ebf18-57e1-0310-9a29-db15c13687c0
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 |