Skip to content
Fetching contributors…
Cannot retrieve contributors at this time
132 lines (114 sloc) 4.41 KB
#!/usr/bin/enn rspec
require 'spec_helper'
module MCollective
describe PluginPackager do
describe "#load_packagers" do
it "should load all PluginPackager plugins" do
PluginManager.expects(:find_and_load).with("pluginpackager")
PluginPackager.load_packagers
end
end
describe "#[]" do
it "should return the correct class" do
PluginPackager.expects(:const_get).with("Foo").returns(:foo)
result = PluginPackager["Foo"]
result.should == :foo
end
it "should do something else" do
expect{
PluginPackager["Bar"]
}.to raise_error NameError, 'uninitialized constant MCollective::PluginPackager::Bar'
end
end
describe "#get_metadata" do
it "should raise an exception if the ddl file can't be loaded" do
DDL.expects(:new).with("package", :foo, false)
File.stubs(:join)
Dir.stubs(:glob).returns('')
expect{
PluginPackager.get_metadata("/tmp", "foo")
}.to raise_error RuntimeError
end
it "should load the ddl file and return the metadata" do
ddl = mock
DDL.expects(:new).with("package", :foo, false).returns(ddl)
File.stubs(:join)
Dir.stubs(:glob).returns(["foo.ddl"])
File.expects(:read).with("foo.ddl").returns("foo_ddl")
ddl.expects(:instance_eval).with("foo_ddl")
ddl.expects(:meta).returns("metadata")
ddl.expects(:requirements).returns({:mcollective => 1})
meta, requirements = PluginPackager.get_metadata("/tmp", "foo")
meta.should == "metadata"
requirements.should == 1
end
end
describe "#check_dir_present" do
it "should return true if the directory is present and not empty" do
File.expects(:directory?).with("/tmp").returns(true)
File.expects(:join).with("/tmp", "*")
Dir.expects(:glob).returns([1])
result = PluginPackager.check_dir_present("/tmp")
result.should == true
end
it "should return false if the directory is not present" do
File.expects(:directory?).with("/tmp").returns(false)
result = PluginPackager.check_dir_present("/tmp")
result.should == false
end
it "should return false if the direcotry is present but empty" do
File.expects(:directory?).with("/tmp").returns(true)
File.expects(:join).with("/tmp", "*")
Dir.expects(:glob).returns([])
result = PluginPackager.check_dir_present("/tmp")
result.should == false
end
end
describe "#do_quietly?" do
it "should call the block parameter if verbose is true" do
result = PluginPackager.do_quietly?(true) {:success}
result.should == :success
end
it "should call the block parameter quietly if verbose is false" do
std_out = Tempfile.new("mc_pluginpackager_spec")
File.expects(:new).with("/dev/null", "w").returns(std_out)
PluginPackager.do_quietly?(false) {puts "success"}
std_out.rewind
std_out.read.should == "success\n"
std_out.close
std_out.unlink
end
it "should raise an exception and reset stdout if the block raises an execption" do
expect{
PluginPackager.do_quietly?(false) {raise Exception, "exception"}
}.to raise_error Exception, "exception"
end
end
describe "#build_tool?" do
it "should return true if the given build tool is present on the system" do
File.expects(:join).returns("foo")
File.expects(:exists?).with("foo").returns(true)
result = PluginPackager.build_tool?("foo")
result.should == true
end
it "should return false if the given build tool is not present on the system" do
File.stubs(:join).returns("foo")
File.stubs(:exists?).with("foo").returns(false)
result = PluginPackager.build_tool?("foo")
result.should == false
end
end
describe "#safe_system" do
it "should not raise any exceptions if a command ran" do
PluginPackager.expects(:system).with("foo").returns(true)
lambda{PluginPackager.safe_system("foo")}.should_not raise_error
end
it "should raise a RuntimeError if command cannot be run" do
PluginPackager.expects(:system).with("foo").returns(false)
expect{
PluginPackager.safe_system("foo")
}.to raise_error RuntimeError, "Failed: foo"
end
end
end
end
Something went wrong with that request. Please try again.