test/util/utiltest.rb in puppet-0.25.5 vs test/util/utiltest.rb in puppet-2.6.0

- old
+ new

@@ -4,232 +4,233 @@ require 'puppettest' require 'mocha' class TestPuppetUtil < Test::Unit::TestCase - include PuppetTest + include PuppetTest - def test_withumask - oldmask = File.umask + def test_withumask + oldmask = File.umask - path = tempfile() + path = tempfile - # FIXME this fails on FreeBSD with a mode of 01777 - Puppet::Util.withumask(000) do - Dir.mkdir(path, 0777) - end - - assert(File.stat(path).mode & 007777 == 0777, "File has the incorrect mode") - assert_equal(oldmask, File.umask, "Umask was not reset") + # FIXME this fails on FreeBSD with a mode of 01777 + Puppet::Util.withumask(000) do + Dir.mkdir(path, 0777) end - def test_benchmark - path = tempfile() - str = "yayness" - File.open(path, "w") do |f| f.print "yayness" end + assert(File.stat(path).mode & 007777 == 0777, "File has the incorrect mode") + assert_equal(oldmask, File.umask, "Umask was not reset") + end - # First test it with the normal args - assert_nothing_raised do - val = nil - result = Puppet::Util.benchmark(:notice, "Read file") do - val = File.read(path) - end + def test_benchmark + path = tempfile + str = "yayness" + File.open(path, "w") do |f| f.print "yayness" end - assert_equal(str, val) + # First test it with the normal args + assert_nothing_raised do + val = nil + result = Puppet::Util.benchmark(:notice, "Read file") do + val = File.read(path) + end - assert_instance_of(Float, result) + assert_equal(str, val) - end + assert_instance_of(Float, result) - # Now test it with a passed object - assert_nothing_raised do - val = nil - Puppet::Util.benchmark(Puppet, :notice, "Read file") do - val = File.read(path) - end + end - assert_equal(str, val) - end + # Now test it with a passed object + assert_nothing_raised do + val = nil + Puppet::Util.benchmark(Puppet, :notice, "Read file") do + val = File.read(path) + end + + assert_equal(str, val) end + end - def test_proxy - klass = Class.new do - attr_accessor :hash - class << self - attr_accessor :ohash - end - end - klass.send(:include, Puppet::Util) + def test_proxy + klass = Class.new do + attr_accessor :hash + class << self + attr_accessor :ohash + end + end + klass.send(:include, Puppet::Util) - klass.ohash = {} + klass.ohash = {} - inst = klass.new - inst.hash = {} - assert_nothing_raised do - Puppet::Util.proxy klass, :hash, "[]", "[]=", :clear, :delete - end + inst = klass.new + inst.hash = {} + assert_nothing_raised do + Puppet::Util.proxy klass, :hash, "[]", "[]=", :clear, :delete + end - assert_nothing_raised do - Puppet::Util.classproxy klass, :ohash, "[]", "[]=", :clear, :delete - end + assert_nothing_raised do + Puppet::Util.classproxy klass, :ohash, "[]", "[]=", :clear, :delete + end - assert_nothing_raised do - inst[:yay] = "boo" - inst["cool"] = :yayness - end + assert_nothing_raised do + inst[:yay] = "boo" + inst["cool"] = :yayness + end - [:yay, "cool"].each do |var| - assert_equal(inst.hash[var], inst[var], - "Var %s did not take" % var) - end + [:yay, "cool"].each do |var| + assert_equal(inst.hash[var], inst[var], "Var #{var} did not take") + end - assert_nothing_raised do - klass[:Yay] = "boo" - klass["Cool"] = :yayness - end + assert_nothing_raised do + klass[:Yay] = "boo" + klass["Cool"] = :yayness + end - [:Yay, "Cool"].each do |var| - assert_equal(inst.hash[var], inst[var], - "Var %s did not take" % var) - end + [:Yay, "Cool"].each do |var| + assert_equal(inst.hash[var], inst[var], "Var #{var} did not take") end + end - def test_symbolize - ret = nil - assert_nothing_raised { - ret = Puppet::Util.symbolize("yayness") - } + def test_symbolize + ret = nil + assert_nothing_raised { + ret = Puppet::Util.symbolize("yayness") + } - assert_equal(:yayness, ret) + assert_equal(:yayness, ret) - assert_nothing_raised { - ret = Puppet::Util.symbolize(:yayness) - } + assert_nothing_raised { + ret = Puppet::Util.symbolize(:yayness) + } - assert_equal(:yayness, ret) + assert_equal(:yayness, ret) - assert_nothing_raised { - ret = Puppet::Util.symbolize(43) - } + assert_nothing_raised { + ret = Puppet::Util.symbolize(43) + } - assert_equal(43, ret) + assert_equal(43, ret) - assert_nothing_raised { - ret = Puppet::Util.symbolize(nil) - } + assert_nothing_raised { + ret = Puppet::Util.symbolize(nil) + } - assert_equal(nil, ret) + assert_equal(nil, ret) + end + + def test_execute + command = tempfile + File.open(command, "w") { |f| + f.puts %{#!/bin/sh\n/bin/echo "$1">&1; echo "$2">&2} + } + File.chmod(0755, command) + output = nil + assert_nothing_raised do + output = Puppet::Util.execute([command, "yaytest", "funtest"]) end + assert_equal("yaytest\nfuntest\n", output) - def test_execute - command = tempfile() - File.open(command, "w") { |f| - f.puts %{#!/bin/sh\n/bin/echo "$1">&1; echo "$2">&2} - } - File.chmod(0755, command) - output = nil - assert_nothing_raised do - output = Puppet::Util.execute([command, "yaytest", "funtest"]) - end - assert_equal("yaytest\nfuntest\n", output) + # Now try it with a single quote + assert_nothing_raised do + output = Puppet::Util.execute([command, "yay'test", "funtest"]) + end + assert_equal("yay'test\nfuntest\n", output) - # Now try it with a single quote - assert_nothing_raised do - output = Puppet::Util.execute([command, "yay'test", "funtest"]) - end - assert_equal("yay'test\nfuntest\n", output) + # Now make sure we can squelch output (#565) + assert_nothing_raised do + output = Puppet::Util.execute([command, "yay'test", "funtest"], :squelch => true) + end + assert_equal(nil, output) - # Now make sure we can squelch output (#565) - assert_nothing_raised do - output = Puppet::Util.execute([command, "yay'test", "funtest"], :squelch => true) - end - assert_equal(nil, output) + # Now test that we correctly fail if the command returns non-zero + assert_raise(Puppet::ExecutionFailure) do + out = Puppet::Util.execute(["touch", "/no/such/file/could/exist"]) + end - # Now test that we correctly fail if the command returns non-zero - assert_raise(Puppet::ExecutionFailure) do - out = Puppet::Util.execute(["touch", "/no/such/file/could/exist"]) - end + # And that we can tell it not to fail + assert_nothing_raised do + out = Puppet::Util.execute(["touch", "/no/such/file/could/exist"], :failonfail => false) + end - # And that we can tell it not to fail - assert_nothing_raised() do - out = Puppet::Util.execute(["touch", "/no/such/file/could/exist"], :failonfail => false) - end + if Process.uid == 0 + # Make sure we correctly set our uid and gid + user = nonrootuser + group = nonrootgroup + file = tempfile + assert_nothing_raised do + Puppet::Util.execute(["touch", file], :uid => user.name, :gid => group.name) + end + assert(FileTest.exists?(file), "file was not created") + assert_equal(user.uid, File.stat(file).uid, "uid was not set correctly") - if Process.uid == 0 - # Make sure we correctly set our uid and gid - user = nonrootuser - group = nonrootgroup - file = tempfile() - assert_nothing_raised do - Puppet::Util.execute(["touch", file], :uid => user.name, :gid => group.name) - end - assert(FileTest.exists?(file), "file was not created") - assert_equal(user.uid, File.stat(file).uid, "uid was not set correctly") + # We can't really check the gid, because it just behaves too + # inconsistently everywhere. + # assert_equal(group.gid, File.stat(file).gid, + # "gid was not set correctly") + end - # We can't really check the gid, because it just behaves too - # inconsistently everywhere. - # assert_equal(group.gid, File.stat(file).gid, - # "gid was not set correctly") - end - - # (#565) Test the case of patricide. - patricidecommand = tempfile() - File.open(patricidecommand, "w") { |f| - f.puts %{#!/bin/bash\n/bin/bash -c 'kill -TERM \$PPID' &;\n while [ 1 ]; do echo -n ''; done;\n} - } - File.chmod(0755, patricidecommand) - assert_nothing_raised do - output = Puppet::Util.execute([patricidecommand], :squelch => true) - end - assert_equal(nil, output) - # See what happens if we try and read the pipe to the command... - assert_raise(Puppet::ExecutionFailure) do - output = Puppet::Util.execute([patricidecommand]) - end - assert_nothing_raised do - output = Puppet::Util.execute([patricidecommand], :failonfail => false) - end + # (#565) Test the case of patricide. + patricidecommand = tempfile + File.open(patricidecommand, "w") { |f| + f.puts %{#!/bin/bash\n/bin/bash -c 'kill -TERM \$PPID' &;\n while [ 1 ]; do echo -n ''; done;\n} + } + File.chmod(0755, patricidecommand) + assert_nothing_raised do + output = Puppet::Util.execute([patricidecommand], :squelch => true) end + assert_equal(nil, output) + # See what happens if we try and read the pipe to the command... + assert_raise(Puppet::ExecutionFailure) do + output = Puppet::Util.execute([patricidecommand]) + end + assert_nothing_raised do + output = Puppet::Util.execute([patricidecommand], :failonfail => false) + end + end - def test_lang_environ_in_execute - orig_lang = ENV["LANG"] - orig_lc_all = ENV["LC_ALL"] - orig_lc_messages = ENV["LC_MESSAGES"] - orig_language = ENV["LANGUAGE"] + def test_lang_environ_in_execute + orig_lang = ENV["LANG"] + orig_lc_all = ENV["LC_ALL"] + orig_lc_messages = ENV["LC_MESSAGES"] + orig_language = ENV["LANGUAGE"] - cleanup do - ENV["LANG"] = orig_lang - ENV["LC_ALL"] = orig_lc_all - ENV["LC_MESSAGES"] = orig_lc_messages - ENV["LANGUAGE"] = orig_lc_messages - end + cleanup do + ENV["LANG"] = orig_lang + ENV["LC_ALL"] = orig_lc_all + ENV["LC_MESSAGES"] = orig_lc_messages + ENV["LANGUAGE"] = orig_lc_messages + end - # Mmm, we love gettext(3) - ENV["LANG"] = "en_US" - ENV["LC_ALL"] = "en_US" - ENV["LC_MESSAGES"] = "en_US" - ENV["LANGUAGE"] = "en_US" + # Mmm, we love gettext(3) + ENV["LANG"] = "en_US" + ENV["LC_ALL"] = "en_US" + ENV["LC_MESSAGES"] = "en_US" + ENV["LANGUAGE"] = "en_US" - %w{LANG LC_ALL LC_MESSAGES LANGUAGE}.each do |env| - assert_equal('C', - Puppet::Util.execute(['ruby', '-e', "print ENV['#{env}']"]), - "Environment var #{env} wasn't set to 'C'") + %w{LANG LC_ALL LC_MESSAGES LANGUAGE}.each do |env| - assert_equal 'en_US', ENV[env], "Environment var #{env} not set back correctly" - end + assert_equal( + 'C', + Puppet::Util.execute(['ruby', '-e', "print ENV['#{env}']"]), - end + "Environment var #{env} wasn't set to 'C'") - # Check whether execute() accepts strings in addition to arrays. - def test_string_exec - cmd = "/bin/echo howdy" - output = nil - assert_raise(ArgumentError) { - output = Puppet::Util.execute(cmd) - } - #assert_equal("howdy\n", output) - #assert_raise(RuntimeError) { - # Puppet::Util.execute(cmd, 0, 0) - #} + assert_equal 'en_US', ENV[env], "Environment var #{env} not set back correctly" end + + end + + # Check whether execute accepts strings in addition to arrays. + def test_string_exec + cmd = "/bin/echo howdy" + output = nil + assert_raise(ArgumentError) { + output = Puppet::Util.execute(cmd) + } + #assert_equal("howdy\n", output) + #assert_raise(RuntimeError) { + # Puppet::Util.execute(cmd, 0, 0) + #} + end end