diff options
Diffstat (limited to 'spec/unit/provider/package')
20 files changed, 1081 insertions, 1081 deletions
diff --git a/spec/unit/provider/package/aix_spec.rb b/spec/unit/provider/package/aix_spec.rb index 5d6e23302f..6908b1288d 100644 --- a/spec/unit/provider/package/aix_spec.rb +++ b/spec/unit/provider/package/aix_spec.rb @@ -28,7 +28,7 @@ describe Chef::Provider::Package::Aix do @new_resource.source("/tmp/samba.base") @provider = Chef::Provider::Package::Aix.new(@new_resource, @run_context) - ::File.stub(:exists?).and_return(true) + allow(::File).to receive(:exists?).and_return(true) end describe "assessing the current package status" do @@ -40,118 +40,118 @@ describe Chef::Provider::Package::Aix do end it "should create a current resource with the name of new_resource" do - @provider.stub(:popen4).and_return(@status) + allow(@provider).to receive(:popen4).and_return(@status) @provider.load_current_resource - @provider.current_resource.name.should == "samba.base" + expect(@provider.current_resource.name).to eq("samba.base") end it "should set the current resource bff package name to the new resource bff package name" do - @provider.stub(:popen4).and_return(@status) + allow(@provider).to receive(:popen4).and_return(@status) @provider.load_current_resource - @provider.current_resource.package_name.should == "samba.base" + expect(@provider.current_resource.package_name).to eq("samba.base") end it "should raise an exception if a source is supplied but not found" do - @provider.stub(:popen4).and_return(@status) - ::File.stub(:exists?).and_return(false) + allow(@provider).to receive(:popen4).and_return(@status) + allow(::File).to receive(:exists?).and_return(false) @provider.define_resource_requirements @provider.load_current_resource - lambda { @provider.process_resource_requirements }.should raise_error(Chef::Exceptions::Package) + expect { @provider.process_resource_requirements }.to raise_error(Chef::Exceptions::Package) end it "should get the source package version from lslpp if provided" do @stdout = StringIO.new(@bffinfo) @stdin, @stderr = StringIO.new, StringIO.new - @provider.should_receive(:popen4).with("installp -L -d /tmp/samba.base").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) - @provider.should_receive(:popen4).with("lslpp -lcq samba.base").and_return(@status) + expect(@provider).to receive(:popen4).with("installp -L -d /tmp/samba.base").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + expect(@provider).to receive(:popen4).with("lslpp -lcq samba.base").and_return(@status) @provider.load_current_resource - @provider.current_resource.package_name.should == "samba.base" - @new_resource.version.should == "3.3.12.0" + expect(@provider.current_resource.package_name).to eq("samba.base") + expect(@new_resource.version).to eq("3.3.12.0") end it "should return the current version installed if found by lslpp" do @stdout = StringIO.new(@bffinfo) @stdin, @stderr = StringIO.new, StringIO.new - @provider.should_receive(:popen4).with("installp -L -d /tmp/samba.base").and_return(@status) - @provider.should_receive(:popen4).with("lslpp -lcq samba.base").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + expect(@provider).to receive(:popen4).with("installp -L -d /tmp/samba.base").and_return(@status) + expect(@provider).to receive(:popen4).with("lslpp -lcq samba.base").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) @provider.load_current_resource - @provider.current_resource.version.should == "3.3.12.0" + expect(@provider.current_resource.version).to eq("3.3.12.0") end it "should raise an exception if the source is not set but we are installing" do @new_resource = Chef::Resource::Package.new("samba.base") @provider = Chef::Provider::Package::Aix.new(@new_resource, @run_context) - @provider.stub(:popen4).and_return(@status) - lambda { @provider.run_action(:install) }.should raise_error(Chef::Exceptions::Package) + allow(@provider).to receive(:popen4).and_return(@status) + expect { @provider.run_action(:install) }.to raise_error(Chef::Exceptions::Package) end it "should raise an exception if installp/lslpp fails to run" do @status = double("Status", :exitstatus => -1) - @provider.stub(:popen4).and_return(@status) - lambda { @provider.load_current_resource }.should raise_error(Chef::Exceptions::Package) + allow(@provider).to receive(:popen4).and_return(@status) + expect { @provider.load_current_resource }.to raise_error(Chef::Exceptions::Package) end it "should return a current resource with a nil version if the package is not found" do @stdout = StringIO.new - @provider.should_receive(:popen4).with("installp -L -d /tmp/samba.base").and_return(@status) - @provider.should_receive(:popen4).with("lslpp -lcq samba.base").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + expect(@provider).to receive(:popen4).with("installp -L -d /tmp/samba.base").and_return(@status) + expect(@provider).to receive(:popen4).with("lslpp -lcq samba.base").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) @provider.load_current_resource - @provider.current_resource.version.should be_nil + expect(@provider.current_resource.version).to be_nil end end describe "candidate_version" do it "should return the candidate_version variable if already setup" do @provider.candidate_version = "3.3.12.0" - @provider.should_not_receive(:popen4) + expect(@provider).not_to receive(:popen4) @provider.candidate_version end it "should lookup the candidate_version if the variable is not already set" do @status = double("Status", :exitstatus => 0) - @provider.should_receive(:popen4).and_return(@status) + expect(@provider).to receive(:popen4).and_return(@status) @provider.candidate_version end it "should throw and exception if the exitstatus is not 0" do @status = double("Status", :exitstatus => 1) - @provider.stub(:popen4).and_return(@status) - lambda { @provider.candidate_version }.should raise_error(Chef::Exceptions::Package) + allow(@provider).to receive(:popen4).and_return(@status) + expect { @provider.candidate_version }.to raise_error(Chef::Exceptions::Package) end end describe "install and upgrade" do it "should run installp -aYF -d with the package source to install" do - @provider.should_receive(:shell_out!).with("installp -aYF -d /tmp/samba.base samba.base") + expect(@provider).to receive(:shell_out!).with("installp -aYF -d /tmp/samba.base samba.base") @provider.install_package("samba.base", "3.3.12.0") end it "should run when the package is a path to install" do @new_resource = Chef::Resource::Package.new("/tmp/samba.base") @provider = Chef::Provider::Package::Aix.new(@new_resource, @run_context) - @new_resource.source.should == "/tmp/samba.base" - @provider.should_receive(:shell_out!).with("installp -aYF -d /tmp/samba.base /tmp/samba.base") + expect(@new_resource.source).to eq("/tmp/samba.base") + expect(@provider).to receive(:shell_out!).with("installp -aYF -d /tmp/samba.base /tmp/samba.base") @provider.install_package("/tmp/samba.base", "3.3.12.0") end it "should run installp with -eLogfile option." do - @new_resource.stub(:options).and_return("-e/tmp/installp.log") - @provider.should_receive(:shell_out!).with("installp -aYF -e/tmp/installp.log -d /tmp/samba.base samba.base") + allow(@new_resource).to receive(:options).and_return("-e/tmp/installp.log") + expect(@provider).to receive(:shell_out!).with("installp -aYF -e/tmp/installp.log -d /tmp/samba.base samba.base") @provider.install_package("samba.base", "3.3.12.0") end end describe "remove" do it "should run installp -u samba.base to remove the package" do - @provider.should_receive(:shell_out!).with("installp -u samba.base") + expect(@provider).to receive(:shell_out!).with("installp -u samba.base") @provider.remove_package("samba.base", "3.3.12.0") end it "should run installp -u -e/tmp/installp.log with options -e/tmp/installp.log" do - @new_resource.stub(:options).and_return("-e/tmp/installp.log") - @provider.should_receive(:shell_out!).with("installp -u -e/tmp/installp.log samba.base") + allow(@new_resource).to receive(:options).and_return("-e/tmp/installp.log") + expect(@provider).to receive(:shell_out!).with("installp -u -e/tmp/installp.log samba.base") @provider.remove_package("samba.base", "3.3.12.0") end diff --git a/spec/unit/provider/package/apt_spec.rb b/spec/unit/provider/package/apt_spec.rb index 90e9dd6d3f..edca3e4c22 100644 --- a/spec/unit/provider/package/apt_spec.rb +++ b/spec/unit/provider/package/apt_spec.rb @@ -45,17 +45,17 @@ PKG_STATUS describe "when loading current resource" do it "should create a current resource with the name of the new_resource" do - @provider.should_receive(:shell_out!).with( + expect(@provider).to receive(:shell_out!).with( "apt-cache policy #{@new_resource.package_name}", :timeout => @timeout ).and_return(@shell_out) @provider.load_current_resource current_resource = @provider.current_resource - current_resource.should be_a(Chef::Resource::Package) - current_resource.name.should == "irssi" - current_resource.package_name.should == "irssi" - current_resource.version.should be_nil + expect(current_resource).to be_a(Chef::Resource::Package) + expect(current_resource.name).to eq("irssi") + expect(current_resource.package_name).to eq("irssi") + expect(current_resource.version).to be_nil end it "should set the installed version if package has one" do @@ -71,10 +71,10 @@ sudo: 1.7.2p1-1ubuntu5 0 500 http://us.archive.ubuntu.com/ubuntu/ lucid/main Packages INSTALLED - @provider.should_receive(:shell_out!).and_return(@shell_out) + expect(@provider).to receive(:shell_out!).and_return(@shell_out) @provider.load_current_resource - @provider.current_resource.version.should == "1.7.2p1-1ubuntu5.3" - @provider.candidate_version.should eql("1.7.2p1-1ubuntu5.3") + expect(@provider.current_resource.version).to eq("1.7.2p1-1ubuntu5.3") + expect(@provider.candidate_version).to eql("1.7.2p1-1ubuntu5.3") end # libmysqlclient-dev is a real package in newer versions of debian + ubuntu @@ -88,7 +88,7 @@ libmysqlclient15-dev: Version table: VPKG_STDOUT virtual_package = double(:stdout => virtual_package_out,:exitstatus => 0) - @provider.should_receive(:shell_out!).with( + expect(@provider).to receive(:shell_out!).with( "apt-cache policy libmysqlclient15-dev", :timeout => @timeout ).and_return(virtual_package) @@ -111,7 +111,7 @@ libmysqlclient-dev 5.1.41-3ubuntu12.10 libmysqlclient-dev 5.1.41-3ubuntu12 SHOWPKG_STDOUT showpkg = double(:stdout => showpkg_out,:exitstatus => 0) - @provider.should_receive(:shell_out!).with( + expect(@provider).to receive(:shell_out!).with( "apt-cache showpkg libmysqlclient15-dev", :timeout => @timeout ).and_return(showpkg) @@ -129,7 +129,7 @@ libmysqlclient-dev: 500 http://us.archive.ubuntu.com/ubuntu/ lucid/main Packages RPKG_STDOUT real_package = double(:stdout => real_package_out,:exitstatus => 0) - @provider.should_receive(:shell_out!).with( + expect(@provider).to receive(:shell_out!).with( "apt-cache policy libmysqlclient-dev", :timeout => @timeout ).and_return(real_package) @@ -145,7 +145,7 @@ mp3-decoder: Version table: VPKG_STDOUT virtual_package = double(:stdout => virtual_package_out,:exitstatus => 0) - @provider.should_receive(:shell_out!).with( + expect(@provider).to receive(:shell_out!).with( "apt-cache policy mp3-decoder", :timeout => @timeout ).and_return(virtual_package) @@ -171,20 +171,20 @@ mpg321 0.2.10.6 mpg123 1.12.1-0ubuntu1 SHOWPKG_STDOUT showpkg = double(:stdout => showpkg_out,:exitstatus => 0) - @provider.should_receive(:shell_out!).with( + expect(@provider).to receive(:shell_out!).with( "apt-cache showpkg mp3-decoder", :timeout => @timeout ).and_return(showpkg) - lambda { @provider.load_current_resource }.should raise_error(Chef::Exceptions::Package) + expect { @provider.load_current_resource }.to raise_error(Chef::Exceptions::Package) end it "should run apt-cache policy with the default_release option, if there is one and provider is explicitly defined" do @new_resource = Chef::Resource::AptPackage.new("irssi", @run_context) @provider = Chef::Provider::Package::Apt.new(@new_resource, @run_context) - @new_resource.stub(:default_release).and_return("lenny-backports") - @new_resource.stub(:provider).and_return("Chef::Provider::Package::Apt") - @provider.should_receive(:shell_out!).with( + allow(@new_resource).to receive(:default_release).and_return("lenny-backports") + allow(@new_resource).to receive(:provider).and_return("Chef::Provider::Package::Apt") + expect(@provider).to receive(:shell_out!).with( "apt-cache -o APT::Default-Release=lenny-backports policy irssi", :timeout => @timeout ).and_return(@shell_out) @@ -194,7 +194,7 @@ SHOWPKG_STDOUT it "raises an exception if a source is specified (CHEF-5113)" do @new_resource.source "pluto" @provider.define_resource_requirements - @provider.should_receive(:shell_out!).with("apt-cache policy irssi", {:timeout=>900}).and_return(@shell_out) + expect(@provider).to receive(:shell_out!).with("apt-cache policy irssi", {:timeout=>900}).and_return(@shell_out) expect { @provider.run_action(:install) }.to raise_error(Chef::Exceptions::Package) end end @@ -207,7 +207,7 @@ SHOWPKG_STDOUT describe "install_package" do it "should run apt-get install with the package name and version" do - @provider.should_receive(:shell_out!). with( + expect(@provider).to receive(:shell_out!). with( "apt-get -q -y install irssi=0.8.12-7", :env => { "DEBIAN_FRONTEND" => "noninteractive", "LC_ALL" => nil}, :timeout => @timeout @@ -216,7 +216,7 @@ SHOWPKG_STDOUT end it "should run apt-get install with the package name and version and options if specified" do - @provider.should_receive(:shell_out!).with( + expect(@provider).to receive(:shell_out!).with( "apt-get -q -y --force-yes install irssi=0.8.12-7", :env => {"DEBIAN_FRONTEND" => "noninteractive", "LC_ALL" => nil }, :timeout => @timeout @@ -232,7 +232,7 @@ SHOWPKG_STDOUT @new_resource.provider = @provider @provider.new_resource = @new_resource - @provider.should_receive(:shell_out!).with( + expect(@provider).to receive(:shell_out!).with( "apt-get -q -y -o APT::Default-Release=lenny-backports install irssi=0.8.12-7", :env => {"DEBIAN_FRONTEND" => "noninteractive", "LC_ALL" => nil }, :timeout => @timeout @@ -245,7 +245,7 @@ SHOWPKG_STDOUT describe Chef::Provider::Package::Apt, "upgrade_package" do it "should run install_package with the name and version" do - @provider.should_receive(:install_package).with("irssi", "0.8.12-7") + expect(@provider).to receive(:install_package).with("irssi", "0.8.12-7") @provider.upgrade_package("irssi", "0.8.12-7") end end @@ -253,7 +253,7 @@ SHOWPKG_STDOUT describe Chef::Provider::Package::Apt, "remove_package" do it "should run apt-get remove with the package name" do - @provider.should_receive(:shell_out!).with( + expect(@provider).to receive(:shell_out!).with( "apt-get -q -y remove irssi", :env => {"DEBIAN_FRONTEND" => "noninteractive", "LC_ALL" => nil}, :timeout => @timeout @@ -262,7 +262,7 @@ SHOWPKG_STDOUT end it "should run apt-get remove with the package name and options if specified" do - @provider.should_receive(:shell_out!).with( + expect(@provider).to receive(:shell_out!).with( "apt-get -q -y --force-yes remove irssi", :env => { "DEBIAN_FRONTEND" => "noninteractive", "LC_ALL" => nil }, :timeout => @timeout @@ -276,7 +276,7 @@ SHOWPKG_STDOUT describe "when purging a package" do it "should run apt-get purge with the package name" do - @provider.should_receive(:shell_out!).with( + expect(@provider).to receive(:shell_out!).with( "apt-get -q -y purge irssi", :env => { "DEBIAN_FRONTEND" => "noninteractive", "LC_ALL" => nil }, :timeout => @timeout @@ -285,7 +285,7 @@ SHOWPKG_STDOUT end it "should run apt-get purge with the package name and options if specified" do - @provider.should_receive(:shell_out!).with( + expect(@provider).to receive(:shell_out!).with( "apt-get -q -y --force-yes purge irssi", :env => { "DEBIAN_FRONTEND" => "noninteractive", "LC_ALL" => nil }, :timeout => @timeout @@ -298,14 +298,14 @@ SHOWPKG_STDOUT describe "when preseeding a package" do before(:each) do - @provider.stub(:get_preseed_file).and_return("/tmp/irssi-0.8.12-7.seed") + allow(@provider).to receive(:get_preseed_file).and_return("/tmp/irssi-0.8.12-7.seed") end it "should get the full path to the preseed response file" do - @provider.should_receive(:get_preseed_file).with("irssi", "0.8.12-7").and_return("/tmp/irssi-0.8.12-7.seed") + expect(@provider).to receive(:get_preseed_file).with("irssi", "0.8.12-7").and_return("/tmp/irssi-0.8.12-7.seed") file = @provider.get_preseed_file("irssi", "0.8.12-7") - @provider.should_receive(:shell_out!).with( + expect(@provider).to receive(:shell_out!).with( "debconf-set-selections /tmp/irssi-0.8.12-7.seed", :env => {"DEBIAN_FRONTEND" => "noninteractive", "LC_ALL" => nil}, :timeout => @timeout @@ -315,7 +315,7 @@ SHOWPKG_STDOUT end it "should run debconf-set-selections on the preseed file if it has changed" do - @provider.should_receive(:shell_out!).with( + expect(@provider).to receive(:shell_out!).with( "debconf-set-selections /tmp/irssi-0.8.12-7.seed", :env => {"DEBIAN_FRONTEND" => "noninteractive", "LC_ALL" => nil}, :timeout => @timeout @@ -325,18 +325,18 @@ SHOWPKG_STDOUT end it "should not run debconf-set-selections if the preseed file has not changed" do - @provider.stub(:check_package_state) + allow(@provider).to receive(:check_package_state) @current_resource.version "0.8.11" @new_resource.response_file "/tmp/file" - @provider.stub(:get_preseed_file).and_return(false) - @provider.should_not_receive(:shell_out!) + allow(@provider).to receive(:get_preseed_file).and_return(false) + expect(@provider).not_to receive(:shell_out!) @provider.run_action(:reconfig) end end describe "when reconfiguring a package" do it "should run dpkg-reconfigure package" do - @provider.should_receive(:shell_out!).with( + expect(@provider).to receive(:shell_out!).with( "dpkg-reconfigure irssi", :env => {"DEBIAN_FRONTEND" => "noninteractive", "LC_ALL" => nil }, :timeout => @timeout @@ -348,7 +348,7 @@ SHOWPKG_STDOUT describe "when installing a virtual package" do it "should install the package without specifying a version" do @provider.is_virtual_package = true - @provider.should_receive(:shell_out!).with( + expect(@provider).to receive(:shell_out!).with( "apt-get -q -y install libmysqlclient-dev", :env => {"DEBIAN_FRONTEND" => "noninteractive", "LC_ALL" => nil }, :timeout => @timeout diff --git a/spec/unit/provider/package/dpkg_spec.rb b/spec/unit/provider/package/dpkg_spec.rb index 439a42daa3..fdd9e50c8e 100644 --- a/spec/unit/provider/package/dpkg_spec.rb +++ b/spec/unit/provider/package/dpkg_spec.rb @@ -33,32 +33,32 @@ describe Chef::Provider::Package::Dpkg do @status = double("Status", :exitstatus => 0) @stderr = StringIO.new @pid = double("PID") - @provider.stub(:popen4).and_return(@status) + allow(@provider).to receive(:popen4).and_return(@status) - ::File.stub(:exists?).and_return(true) + allow(::File).to receive(:exists?).and_return(true) end describe "when loading the current resource state" do it "should create a current resource with the name of the new_resource" do @provider.load_current_resource - @provider.current_resource.package_name.should == "wget" + expect(@provider.current_resource.package_name).to eq("wget") end it "should raise an exception if a source is supplied but not found" do @provider.load_current_resource @provider.define_resource_requirements - ::File.stub(:exists?).and_return(false) - lambda { @provider.run_action(:install) }.should raise_error(Chef::Exceptions::Package) + allow(::File).to receive(:exists?).and_return(false) + expect { @provider.run_action(:install) }.to raise_error(Chef::Exceptions::Package) end describe 'gets the source package version from dpkg-deb' do def check_version(version) @stdout = StringIO.new("wget\t#{version}") - @provider.stub(:popen4).with("dpkg-deb -W #{@new_resource.source}").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + allow(@provider).to receive(:popen4).with("dpkg-deb -W #{@new_resource.source}").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) @provider.load_current_resource - @provider.current_resource.package_name.should == "wget" - @new_resource.version.should == version + expect(@provider.current_resource.package_name).to eq("wget") + expect(@new_resource.version).to eq(version) end it 'if short version provided' do @@ -80,9 +80,9 @@ describe Chef::Provider::Package::Dpkg do it "gets the source package name from dpkg-deb correctly when the package name has `-', `+' or `.' characters" do @stdout = StringIO.new("f.o.o-pkg++2\t1.11.4-1ubuntu1") - @provider.stub(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + allow(@provider).to receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) @provider.load_current_resource - @provider.current_resource.package_name.should == "f.o.o-pkg++2" + expect(@provider.current_resource.package_name).to eq("f.o.o-pkg++2") end it "should raise an exception if the source is not set but we are installing" do @@ -90,7 +90,7 @@ describe Chef::Provider::Package::Dpkg do @provider.new_resource = @new_resource @provider.define_resource_requirements @provider.load_current_resource - lambda { @provider.run_action(:install)}.should raise_error(Chef::Exceptions::Package) + expect { @provider.run_action(:install)}.to raise_error(Chef::Exceptions::Package) end it "should return the current version installed if found by dpkg" do @@ -107,22 +107,22 @@ Config-Version: 1.11.4-1ubuntu1 Depends: libc6 (>= 2.8~20080505), libssl0.9.8 (>= 0.9.8f-5) Conflicts: wget-ssl DPKG_S - @provider.stub(:popen4).with("dpkg -s wget").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + allow(@provider).to receive(:popen4).with("dpkg -s wget").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) @provider.load_current_resource - @provider.current_resource.version.should == "1.11.4-1ubuntu1" + expect(@provider.current_resource.version).to eq("1.11.4-1ubuntu1") end it "should raise an exception if dpkg fails to run" do @status = double("Status", :exitstatus => -1) - @provider.stub(:popen4).and_return(@status) - lambda { @provider.load_current_resource }.should raise_error(Chef::Exceptions::Package) + allow(@provider).to receive(:popen4).and_return(@status) + expect { @provider.load_current_resource }.to raise_error(Chef::Exceptions::Package) end end describe Chef::Provider::Package::Dpkg, "install and upgrade" do it "should run dpkg -i with the package source" do - @provider.should_receive(:run_noninteractive).with( + expect(@provider).to receive(:run_noninteractive).with( "dpkg -i /tmp/wget_1.11.4-1ubuntu1_amd64.deb" ) @provider.install_package("wget", "1.11.4-1ubuntu1") @@ -131,7 +131,7 @@ DPKG_S it "should run dpkg -i if the package is a path and the source is nil" do @new_resource = Chef::Resource::Package.new("/tmp/wget_1.11.4-1ubuntu1_amd64.deb") @provider = Chef::Provider::Package::Dpkg.new(@new_resource, @run_context) - @provider.should_receive(:run_noninteractive).with( + expect(@provider).to receive(:run_noninteractive).with( "dpkg -i /tmp/wget_1.11.4-1ubuntu1_amd64.deb" ) @provider.install_package("/tmp/wget_1.11.4-1ubuntu1_amd64.deb", "1.11.4-1ubuntu1") @@ -140,55 +140,55 @@ DPKG_S it "should run dpkg -i if the package is a path and the source is nil for an upgrade" do @new_resource = Chef::Resource::Package.new("/tmp/wget_1.11.4-1ubuntu1_amd64.deb") @provider = Chef::Provider::Package::Dpkg.new(@new_resource, @run_context) - @provider.should_receive(:run_noninteractive).with( + expect(@provider).to receive(:run_noninteractive).with( "dpkg -i /tmp/wget_1.11.4-1ubuntu1_amd64.deb" ) @provider.upgrade_package("/tmp/wget_1.11.4-1ubuntu1_amd64.deb", "1.11.4-1ubuntu1") end it "should run dpkg -i with the package source and options if specified" do - @provider.should_receive(:run_noninteractive).with( + expect(@provider).to receive(:run_noninteractive).with( "dpkg -i --force-yes /tmp/wget_1.11.4-1ubuntu1_amd64.deb" ) - @new_resource.stub(:options).and_return("--force-yes") + allow(@new_resource).to receive(:options).and_return("--force-yes") @provider.install_package("wget", "1.11.4-1ubuntu1") end it "should upgrade by running install_package" do - @provider.should_receive(:install_package).with("wget", "1.11.4-1ubuntu1") + expect(@provider).to receive(:install_package).with("wget", "1.11.4-1ubuntu1") @provider.upgrade_package("wget", "1.11.4-1ubuntu1") end end describe Chef::Provider::Package::Dpkg, "remove and purge" do it "should run dpkg -r to remove the package" do - @provider.should_receive(:run_noninteractive).with( + expect(@provider).to receive(:run_noninteractive).with( "dpkg -r wget" ) @provider.remove_package("wget", "1.11.4-1ubuntu1") end it "should run dpkg -r to remove the package with options if specified" do - @provider.should_receive(:run_noninteractive).with( + expect(@provider).to receive(:run_noninteractive).with( "dpkg -r --force-yes wget" ) - @new_resource.stub(:options).and_return("--force-yes") + allow(@new_resource).to receive(:options).and_return("--force-yes") @provider.remove_package("wget", "1.11.4-1ubuntu1") end it "should run dpkg -P to purge the package" do - @provider.should_receive(:run_noninteractive).with( + expect(@provider).to receive(:run_noninteractive).with( "dpkg -P wget" ) @provider.purge_package("wget", "1.11.4-1ubuntu1") end it "should run dpkg -P to purge the package with options if specified" do - @provider.should_receive(:run_noninteractive).with( + expect(@provider).to receive(:run_noninteractive).with( "dpkg -P --force-yes wget" ) - @new_resource.stub(:options).and_return("--force-yes") + allow(@new_resource).to receive(:options).and_return("--force-yes") @provider.purge_package("wget", "1.11.4-1ubuntu1") end diff --git a/spec/unit/provider/package/easy_install_spec.rb b/spec/unit/provider/package/easy_install_spec.rb index 87cbabcc19..221ec8fdfc 100644 --- a/spec/unit/provider/package/easy_install_spec.rb +++ b/spec/unit/provider/package/easy_install_spec.rb @@ -30,79 +30,79 @@ describe Chef::Provider::Package::EasyInstall do @current_resource.version('1.8d') @provider = Chef::Provider::Package::EasyInstall.new(@new_resource, @run_context) - Chef::Resource::Package.stub(:new).and_return(@current_resource) + allow(Chef::Resource::Package).to receive(:new).and_return(@current_resource) @stdin = StringIO.new @stdout = StringIO.new @status = double("Status", :exitstatus => 0) @stderr = StringIO.new @pid = 2342 - @provider.stub(:popen4).and_return(@status) + allow(@provider).to receive(:popen4).and_return(@status) end describe "easy_install_binary_path" do it "should return a Chef::Provider::EasyInstall object" do provider = Chef::Provider::Package::EasyInstall.new(@node, @new_resource) - provider.should be_a_kind_of(Chef::Provider::Package::EasyInstall) + expect(provider).to be_a_kind_of(Chef::Provider::Package::EasyInstall) end it "should set the current resources package name to the new resources package name" do - $stdout.stub(:write) - @current_resource.should_receive(:package_name).with(@new_resource.package_name) + allow($stdout).to receive(:write) + expect(@current_resource).to receive(:package_name).with(@new_resource.package_name) @provider.load_current_resource end it "should return a relative path to easy_install if no easy_install_binary is given" do - @provider.easy_install_binary_path.should eql("easy_install") + expect(@provider.easy_install_binary_path).to eql("easy_install") end it "should return a specific path to easy_install if a easy_install_binary is given" do - @new_resource.should_receive(:easy_install_binary).and_return("/opt/local/bin/custom/easy_install") - @provider.easy_install_binary_path.should eql("/opt/local/bin/custom/easy_install") + expect(@new_resource).to receive(:easy_install_binary).and_return("/opt/local/bin/custom/easy_install") + expect(@provider.easy_install_binary_path).to eql("/opt/local/bin/custom/easy_install") end end describe "actions_on_package" do it "should run easy_install with the package name and version" do - @provider.should_receive(:run_command).with({ + expect(@provider).to receive(:run_command).with({ :command => "easy_install \"boto==1.8d\"" }) @provider.install_package("boto", "1.8d") end it "should run easy_install with the package name and version and specified options" do - @provider.should_receive(:run_command).with({ + expect(@provider).to receive(:run_command).with({ :command => "easy_install --always-unzip \"boto==1.8d\"" }) - @new_resource.stub(:options).and_return("--always-unzip") + allow(@new_resource).to receive(:options).and_return("--always-unzip") @provider.install_package("boto", "1.8d") end it "should run easy_install with the package name and version" do - @provider.should_receive(:run_command).with({ + expect(@provider).to receive(:run_command).with({ :command => "easy_install \"boto==1.8d\"" }) @provider.upgrade_package("boto", "1.8d") end it "should run easy_install -m with the package name and version" do - @provider.should_receive(:run_command).with({ + expect(@provider).to receive(:run_command).with({ :command => "easy_install -m boto" }) @provider.remove_package("boto", "1.8d") end it "should run easy_install -m with the package name and version and specified options" do - @provider.should_receive(:run_command).with({ + expect(@provider).to receive(:run_command).with({ :command => "easy_install -x -m boto" }) - @new_resource.stub(:options).and_return("-x") + allow(@new_resource).to receive(:options).and_return("-x") @provider.remove_package("boto", "1.8d") end it "should run easy_install -m with the package name and version" do - @provider.should_receive(:run_command).with({ + expect(@provider).to receive(:run_command).with({ :command => "easy_install -m boto" }) @provider.purge_package("boto", "1.8d") diff --git a/spec/unit/provider/package/freebsd/pkg_spec.rb b/spec/unit/provider/package/freebsd/pkg_spec.rb index 9b2493a4c5..f67161930f 100644 --- a/spec/unit/provider/package/freebsd/pkg_spec.rb +++ b/spec/unit/provider/package/freebsd/pkg_spec.rb @@ -30,35 +30,35 @@ describe Chef::Provider::Package::Freebsd::Pkg, "load_current_resource" do @provider = Chef::Provider::Package::Freebsd::Pkg.new(@new_resource, @run_context) @provider.current_resource = @current_resource - ::File.stub(:exist?).with('/usr/ports/Makefile').and_return(false) + allow(::File).to receive(:exist?).with('/usr/ports/Makefile').and_return(false) end describe "when determining the current package state" do before do - @provider.stub(:ports_candidate_version).and_return("4.3.6") + allow(@provider).to receive(:ports_candidate_version).and_return("4.3.6") end it "should create a current resource with the name of the new_resource" do current_resource = Chef::Provider::Package::Freebsd::Pkg.new(@new_resource, @run_context).current_resource - current_resource.name.should == "zsh" + expect(current_resource.name).to eq("zsh") end it "should return a version if the package is installed" do - @provider.should_receive(:current_installed_version).and_return("4.3.6_7") + expect(@provider).to receive(:current_installed_version).and_return("4.3.6_7") @provider.load_current_resource - @current_resource.version.should == "4.3.6_7" + expect(@current_resource.version).to eq("4.3.6_7") end it "should return nil if the package is not installed" do - @provider.should_receive(:current_installed_version).and_return(nil) + expect(@provider).to receive(:current_installed_version).and_return(nil) @provider.load_current_resource - @current_resource.version.should be_nil + expect(@current_resource.version).to be_nil end it "should return a candidate version if it exists" do - @provider.should_receive(:current_installed_version).and_return(nil) + expect(@provider).to receive(:current_installed_version).and_return(nil) @provider.load_current_resource - @provider.candidate_version.should eql("4.3.6") + expect(@provider.candidate_version).to eql("4.3.6") end end @@ -77,42 +77,42 @@ describe Chef::Provider::Package::Freebsd::Pkg, "load_current_resource" do it "should return the version number when it is installed" do pkg_info = OpenStruct.new(:stdout => "zsh-4.3.6_7") - @provider.should_receive(:shell_out!).with('pkg_info -E "zsh*"', :env => nil, :returns => [0,1]).and_return(pkg_info) + expect(@provider).to receive(:shell_out!).with('pkg_info -E "zsh*"', :env => nil, :returns => [0,1]).and_return(pkg_info) #@provider.should_receive(:popen4).with('pkg_info -E "zsh*"').and_yield(@pid, @stdin, ["zsh-4.3.6_7"], @stderr).and_return(@status) - @provider.stub(:package_name).and_return("zsh") - @provider.current_installed_version.should == "4.3.6_7" + allow(@provider).to receive(:package_name).and_return("zsh") + expect(@provider.current_installed_version).to eq("4.3.6_7") end it "does not set the current version number when the package is not installed" do pkg_info = OpenStruct.new(:stdout => "") - @provider.should_receive(:shell_out!).with('pkg_info -E "zsh*"', :env => nil, :returns => [0,1]).and_return(pkg_info) - @provider.stub(:package_name).and_return("zsh") - @provider.current_installed_version.should be_nil + expect(@provider).to receive(:shell_out!).with('pkg_info -E "zsh*"', :env => nil, :returns => [0,1]).and_return(pkg_info) + allow(@provider).to receive(:package_name).and_return("zsh") + expect(@provider.current_installed_version).to be_nil end it "should return the port path for a valid port name" do whereis = OpenStruct.new(:stdout => "zsh: /usr/ports/shells/zsh") - @provider.should_receive(:shell_out!).with("whereis -s zsh", :env => nil).and_return(whereis) + expect(@provider).to receive(:shell_out!).with("whereis -s zsh", :env => nil).and_return(whereis) #@provider.should_receive(:popen4).with("whereis -s zsh").and_yield(@pid, @stdin, ["zsh: /usr/ports/shells/zsh"], @stderr).and_return(@status) - @provider.stub(:port_name).and_return("zsh") - @provider.port_path.should == "/usr/ports/shells/zsh" + allow(@provider).to receive(:port_name).and_return("zsh") + expect(@provider.port_path).to eq("/usr/ports/shells/zsh") end # Not happy with the form of these tests as they are far too closely tied to the implementation and so very fragile. it "should return the ports candidate version when given a valid port path" do - @provider.stub(:port_path).and_return("/usr/ports/shells/zsh") + allow(@provider).to receive(:port_path).and_return("/usr/ports/shells/zsh") make_v = OpenStruct.new(:stdout => "4.3.6\n", :exitstatus => 0) - @provider.should_receive(:shell_out!).with("make -V PORTVERSION", {:cwd=>"/usr/ports/shells/zsh", :returns=>[0, 1], :env=>nil}).and_return(make_v) - @provider.ports_candidate_version.should == "4.3.6" + expect(@provider).to receive(:shell_out!).with("make -V PORTVERSION", {:cwd=>"/usr/ports/shells/zsh", :returns=>[0, 1], :env=>nil}).and_return(make_v) + expect(@provider.ports_candidate_version).to eq("4.3.6") end it "should figure out the package name when we have ports" do - ::File.stub(:exist?).with('/usr/ports/Makefile').and_return(true) - @provider.stub(:port_path).and_return("/usr/ports/shells/zsh") + allow(::File).to receive(:exist?).with('/usr/ports/Makefile').and_return(true) + allow(@provider).to receive(:port_path).and_return("/usr/ports/shells/zsh") make_v = OpenStruct.new(:stdout => "zsh-4.3.6_7\n", :exitstatus => 0) - @provider.should_receive(:shell_out!).with("make -V PKGNAME", {:cwd=>"/usr/ports/shells/zsh", :env=>nil, :returns=>[0, 1]}).and_return(make_v) + expect(@provider).to receive(:shell_out!).with("make -V PKGNAME", {:cwd=>"/usr/ports/shells/zsh", :env=>nil, :returns=>[0, 1]}).and_return(make_v) #@provider.should_receive(:ports_makefile_variable_value).with("PKGNAME").and_return("zsh-4.3.6_7") - @provider.package_name.should == "zsh" + expect(@provider.package_name).to eq("zsh") end end @@ -121,13 +121,13 @@ describe Chef::Provider::Package::Freebsd::Pkg, "load_current_resource" do @cmd_result = OpenStruct.new(:status => true) @provider.current_resource = @current_resource - @provider.stub(:package_name).and_return("zsh") - @provider.stub(:latest_link_name).and_return("zsh") - @provider.stub(:port_path).and_return("/usr/ports/shells/zsh") + allow(@provider).to receive(:package_name).and_return("zsh") + allow(@provider).to receive(:latest_link_name).and_return("zsh") + allow(@provider).to receive(:port_path).and_return("/usr/ports/shells/zsh") end it "should run pkg_add -r with the package name" do - @provider.should_receive(:shell_out!).with("pkg_add -r zsh", :env => nil).and_return(@cmd_result) + expect(@provider).to receive(:shell_out!).with("pkg_add -r zsh", :env => nil).and_return(@cmd_result) @provider.install_package("zsh", "4.3.6_7") end end @@ -142,15 +142,15 @@ describe Chef::Provider::Package::Freebsd::Pkg, "load_current_resource" do it "should figure out the port path from the package_name using whereis" do whereis = OpenStruct.new(:stdout => "zsh: /usr/ports/shells/zsh") - @provider.should_receive(:shell_out!).with("whereis -s zsh", :env=>nil).and_return(whereis) - @provider.port_path.should == "/usr/ports/shells/zsh" + expect(@provider).to receive(:shell_out!).with("whereis -s zsh", :env=>nil).and_return(whereis) + expect(@provider.port_path).to eq("/usr/ports/shells/zsh") end it "should use the package_name as the port path when it starts with /" do new_resource = Chef::Resource::Package.new("/usr/ports/www/wordpress") provider = Chef::Provider::Package::Freebsd::Pkg.new(new_resource, @run_context) - provider.should_not_receive(:popen4) - provider.port_path.should == "/usr/ports/www/wordpress" + expect(provider).not_to receive(:popen4) + expect(provider.port_path).to eq("/usr/ports/www/wordpress") end it "should use the package_name as a relative path from /usr/ports when it contains / but doesn't start with it" do @@ -159,8 +159,8 @@ describe Chef::Provider::Package::Freebsd::Pkg, "load_current_resource" do # :cookbook_name => "xenoparadox") new_resource = Chef::Resource::Package.new("www/wordpress") provider = Chef::Provider::Package::Freebsd::Pkg.new(new_resource, @run_context) - provider.should_not_receive(:popen4) - provider.port_path.should == "/usr/ports/www/wordpress" + expect(provider).not_to receive(:popen4) + expect(provider.port_path).to eq("/usr/ports/www/wordpress") end end @@ -170,15 +170,15 @@ describe Chef::Provider::Package::Freebsd::Pkg, "load_current_resource" do @current_resource = Chef::Resource::Package.new("ruby-iconv") @provider = Chef::Provider::Package::Freebsd::Pkg.new(@new_resource, @run_context) @provider.current_resource = @current_resource - @provider.stub(:port_path).and_return("/usr/ports/converters/ruby-iconv") - @provider.stub(:package_name).and_return("ruby18-iconv") - @provider.stub(:latest_link_name).and_return("ruby18-iconv") + allow(@provider).to receive(:port_path).and_return("/usr/ports/converters/ruby-iconv") + allow(@provider).to receive(:package_name).and_return("ruby18-iconv") + allow(@provider).to receive(:latest_link_name).and_return("ruby18-iconv") @install_result = OpenStruct.new(:status => true) end it "should run pkg_add -r with the package name" do - @provider.should_receive(:shell_out!).with("pkg_add -r ruby18-iconv", :env => nil).and_return(@install_result) + expect(@provider).to receive(:shell_out!).with("pkg_add -r ruby18-iconv", :env => nil).and_return(@install_result) @provider.install_package("ruby-iconv", "1.0") end end @@ -189,11 +189,11 @@ describe Chef::Provider::Package::Freebsd::Pkg, "load_current_resource" do @new_resource.version "4.3.6_7" @current_resource.version "4.3.6_7" @provider.current_resource = @current_resource - @provider.stub(:package_name).and_return("zsh") + allow(@provider).to receive(:package_name).and_return("zsh") end it "should run pkg_delete with the package name and version" do - @provider.should_receive(:shell_out!).with("pkg_delete zsh-4.3.6_7", :env => nil).and_return(@pkg_delete) + expect(@provider).to receive(:shell_out!).with("pkg_delete zsh-4.3.6_7", :env => nil).and_return(@pkg_delete) @provider.remove_package("zsh", "4.3.6_7") end end @@ -213,16 +213,16 @@ describe Chef::Provider::Package::Freebsd::Pkg, "load_current_resource" do it "should return the port path for a valid port name" do whereis = OpenStruct.new(:stdout => "bonnie++: /usr/ports/benchmarks/bonnie++") - @provider.should_receive(:shell_out!).with("whereis -s bonnie++", :env => nil).and_return(whereis) - @provider.stub(:port_name).and_return("bonnie++") - @provider.port_path.should == "/usr/ports/benchmarks/bonnie++" + expect(@provider).to receive(:shell_out!).with("whereis -s bonnie++", :env => nil).and_return(whereis) + allow(@provider).to receive(:port_name).and_return("bonnie++") + expect(@provider.port_path).to eq("/usr/ports/benchmarks/bonnie++") end it "should return the version number when it is installed" do pkg_info = OpenStruct.new(:stdout => "bonnie++-1.96") - @provider.should_receive(:shell_out!).with('pkg_info -E "bonnie++*"', :env => nil, :returns => [0,1]).and_return(pkg_info) - @provider.stub(:package_name).and_return("bonnie++") - @provider.current_installed_version.should == "1.96" + expect(@provider).to receive(:shell_out!).with('pkg_info -E "bonnie++*"', :env => nil, :returns => [0,1]).and_return(pkg_info) + allow(@provider).to receive(:package_name).and_return("bonnie++") + expect(@provider.current_installed_version).to eq("1.96") end end @@ -249,11 +249,11 @@ describe Chef::Provider::Package::Freebsd::Pkg, "load_current_resource" do @current_resource = Chef::Resource::Package.new("perl5.8") @provider = Chef::Provider::Package::Freebsd::Pkg.new(@new_resource, @run_context) @provider.current_resource = @current_resource - @provider.stub(:package_name).and_return("perl") - @provider.stub(:latest_link_name).and_return("perl") + allow(@provider).to receive(:package_name).and_return("perl") + allow(@provider).to receive(:latest_link_name).and_return("perl") cmd = OpenStruct.new(:status => true) - @provider.should_receive(:shell_out!).with("pkg_add -r perl", :env => nil).and_return(cmd) + expect(@provider).to receive(:shell_out!).with("pkg_add -r perl", :env => nil).and_return(cmd) @provider.install_package("perl5.8", "5.8.8_1") end @@ -263,11 +263,11 @@ describe Chef::Provider::Package::Freebsd::Pkg, "load_current_resource" do @current_resource = Chef::Resource::Package.new("mysql50-server") @provider = Chef::Provider::Package::Freebsd::Pkg.new(@new_resource, @run_context) @provider.current_resource = @current_resource - @provider.stub(:package_name).and_return("mysql-server") - @provider.stub(:latest_link_name).and_return("mysql50-server") + allow(@provider).to receive(:package_name).and_return("mysql-server") + allow(@provider).to receive(:latest_link_name).and_return("mysql50-server") cmd = OpenStruct.new(:status => true) - @provider.should_receive(:shell_out!).with("pkg_add -r mysql50-server", :env=>nil).and_return(cmd) + expect(@provider).to receive(:shell_out!).with("pkg_add -r mysql50-server", :env=>nil).and_return(cmd) @provider.install_package("mysql50-server", "5.0.45_1") end end diff --git a/spec/unit/provider/package/freebsd/pkgng_spec.rb b/spec/unit/provider/package/freebsd/pkgng_spec.rb index c3837a251b..d314735bf0 100644 --- a/spec/unit/provider/package/freebsd/pkgng_spec.rb +++ b/spec/unit/provider/package/freebsd/pkgng_spec.rb @@ -33,46 +33,46 @@ describe Chef::Provider::Package::Freebsd::Port do describe "initialization" do it "should create a current resource with the name of the new resource" do - @provider.current_resource.is_a?(Chef::Resource::Package).should be_true - @provider.current_resource.name.should == 'zsh' + expect(@provider.current_resource.is_a?(Chef::Resource::Package)).to be_true + expect(@provider.current_resource.name).to eq('zsh') end end describe "loading current resource" do before(:each) do - @provider.stub(:current_installed_version) - @provider.stub(:candidate_version) + allow(@provider).to receive(:current_installed_version) + allow(@provider).to receive(:candidate_version) end it "should set the package name" do @provider.load_current_resource - @provider.current_resource.package_name.should == "zsh" + expect(@provider.current_resource.package_name).to eq("zsh") end it "should set the current version" do - @provider.should_receive(:current_installed_version).and_return("5.0.2") + expect(@provider).to receive(:current_installed_version).and_return("5.0.2") @provider.load_current_resource - @provider.current_resource.version.should == "5.0.2" + expect(@provider.current_resource.version).to eq("5.0.2") end it "should set the candidate version" do - @provider.should_receive(:candidate_version).and_return("5.0.5") + expect(@provider).to receive(:candidate_version).and_return("5.0.5") @provider.load_current_resource - @provider.instance_variable_get(:"@candidate_version").should == "5.0.5" + expect(@provider.instance_variable_get(:"@candidate_version")).to eq("5.0.5") end end describe "determining current installed version" do before(:each) do - @provider.stub(:supports_pkgng?) + allow(@provider).to receive(:supports_pkgng?) @pkg_info = OpenStruct.new(:stdout => "zsh-3.1.7\nVersion : 3.1.7\n") end it "should query pkg database" do - @provider.should_receive(:shell_out!).with('pkg info "zsh"', :env => nil, :returns => [0,70]).and_return(@pkg_info) - @provider.current_installed_version.should == "3.1.7" + expect(@provider).to receive(:shell_out!).with('pkg info "zsh"', :env => nil, :returns => [0,70]).and_return(@pkg_info) + expect(@provider.current_installed_version).to eq("3.1.7") end end @@ -80,20 +80,20 @@ describe Chef::Provider::Package::Freebsd::Port do describe "determining candidate version" do it "should query repository" do pkg_query = OpenStruct.new(:stdout => "5.0.5\n", :exitstatus => 0) - @provider.should_receive(:shell_out!).with("pkg rquery '%v' zsh", :env => nil).and_return(pkg_query) - @provider.candidate_version.should == "5.0.5" + expect(@provider).to receive(:shell_out!).with("pkg rquery '%v' zsh", :env => nil).and_return(pkg_query) + expect(@provider.candidate_version).to eq("5.0.5") end it "should query specified repository when given option" do @provider.new_resource.options('-r LocalMirror') # This requires LocalMirror repo configuration. pkg_query = OpenStruct.new(:stdout => "5.0.3\n", :exitstatus => 0) - @provider.should_receive(:shell_out!).with("pkg rquery -r LocalMirror '%v' zsh", :env => nil).and_return(pkg_query) - @provider.candidate_version.should == "5.0.3" + expect(@provider).to receive(:shell_out!).with("pkg rquery -r LocalMirror '%v' zsh", :env => nil).and_return(pkg_query) + expect(@provider.candidate_version).to eq("5.0.3") end it "should return candidate version from file when given a file" do @provider.new_resource.source("/nas/pkg/repo/zsh-5.0.1.txz") - @provider.candidate_version.should == "5.0.1" + expect(@provider.candidate_version).to eq("5.0.1") end end @@ -105,7 +105,7 @@ describe Chef::Provider::Package::Freebsd::Port do it "should handle package source from file" do @provider.new_resource.source("/nas/pkg/repo/zsh-5.0.1.txz") - @provider.should_receive(:shell_out!). + expect(@provider).to receive(:shell_out!). with("pkg add /nas/pkg/repo/zsh-5.0.1.txz", :env => { 'LC_ALL' => nil }). and_return(@install_result) @provider.install_package("zsh", "5.0.1") @@ -113,21 +113,21 @@ describe Chef::Provider::Package::Freebsd::Port do it "should handle package source over ftp or http" do @provider.new_resource.source("http://repo.example.com/zsh-5.0.1.txz") - @provider.should_receive(:shell_out!). + expect(@provider).to receive(:shell_out!). with("pkg add http://repo.example.com/zsh-5.0.1.txz", :env => { 'LC_ALL' => nil }). and_return(@install_result) @provider.install_package("zsh", "5.0.1") end it "should handle a package name" do - @provider.should_receive(:shell_out!). + expect(@provider).to receive(:shell_out!). with("pkg install -y zsh", :env => { 'LC_ALL' => nil }).and_return(@install_result) @provider.install_package("zsh", "5.0.1") end it "should handle a package name with a specified repo" do @provider.new_resource.options('-r LocalMirror') # This requires LocalMirror repo configuration. - @provider.should_receive(:shell_out!). + expect(@provider).to receive(:shell_out!). with("pkg install -y -r LocalMirror zsh", :env => { 'LC_ALL' => nil }).and_return(@install_result) @provider.install_package("zsh", "5.0.1") end @@ -140,14 +140,14 @@ describe Chef::Provider::Package::Freebsd::Port do end it "should call pkg delete" do - @provider.should_receive(:shell_out!). + expect(@provider).to receive(:shell_out!). with("pkg delete -y zsh-5.0.1", :env => nil).and_return(@install_result) @provider.remove_package("zsh", "5.0.1") end it "should not include repo option in pkg delete" do @provider.new_resource.options('-r LocalMirror') # This requires LocalMirror repo configuration. - @provider.should_receive(:shell_out!). + expect(@provider).to receive(:shell_out!). with("pkg delete -y zsh-5.0.1", :env => nil).and_return(@install_result) @provider.remove_package("zsh", "5.0.1") end diff --git a/spec/unit/provider/package/freebsd/port_spec.rb b/spec/unit/provider/package/freebsd/port_spec.rb index 8725e5440f..3085b16a92 100644 --- a/spec/unit/provider/package/freebsd/port_spec.rb +++ b/spec/unit/provider/package/freebsd/port_spec.rb @@ -33,33 +33,33 @@ describe Chef::Provider::Package::Freebsd::Port do describe "initialization" do it "should create a current resource with the name of the new resource" do - @provider.current_resource.is_a?(Chef::Resource::Package).should be_true - @provider.current_resource.name.should == 'zsh' + expect(@provider.current_resource.is_a?(Chef::Resource::Package)).to be_true + expect(@provider.current_resource.name).to eq('zsh') end end describe "loading current resource" do before(:each) do - @provider.stub(:current_installed_version) - @provider.stub(:candidate_version) + allow(@provider).to receive(:current_installed_version) + allow(@provider).to receive(:candidate_version) end it "should set the package name" do @provider.load_current_resource - @provider.current_resource.package_name.should == "zsh" + expect(@provider.current_resource.package_name).to eq("zsh") end it "should set the current version" do - @provider.should_receive(:current_installed_version).and_return("5.0.2") + expect(@provider).to receive(:current_installed_version).and_return("5.0.2") @provider.load_current_resource - @provider.current_resource.version.should == "5.0.2" + expect(@provider.current_resource.version).to eq("5.0.2") end it "should set the candidate version" do - @provider.should_receive(:candidate_version).and_return("5.0.5") + expect(@provider).to receive(:candidate_version).and_return("5.0.5") @provider.load_current_resource - @provider.instance_variable_get(:"@candidate_version").should == "5.0.5" + expect(@provider.instance_variable_get(:"@candidate_version")).to eq("5.0.5") end end @@ -70,27 +70,27 @@ describe Chef::Provider::Package::Freebsd::Port do end it "should check 'pkg_info' if system uses pkg_* tools" do - @new_resource.stub(:supports_pkgng?) - @new_resource.should_receive(:supports_pkgng?).and_return(false) - @provider.should_receive(:shell_out!).with('pkg_info -E "zsh*"', :env => nil, :returns => [0,1]).and_return(@pkg_info) - @provider.current_installed_version.should == "3.1.7" + allow(@new_resource).to receive(:supports_pkgng?) + expect(@new_resource).to receive(:supports_pkgng?).and_return(false) + expect(@provider).to receive(:shell_out!).with('pkg_info -E "zsh*"', :env => nil, :returns => [0,1]).and_return(@pkg_info) + expect(@provider.current_installed_version).to eq("3.1.7") end it "should check 'pkg info' if make supports WITH_PKGNG if freebsd version is < 1000017" do pkg_enabled = OpenStruct.new(:stdout => "yes\n") [1000016, 1000000, 901503, 902506, 802511].each do |__freebsd_version| @node.automatic_attrs[:os_version] = __freebsd_version - @new_resource.should_receive(:shell_out!).with('make -V WITH_PKGNG', :env => nil).and_return(pkg_enabled) - @provider.should_receive(:shell_out!).with('pkg info "zsh"', :env => nil, :returns => [0,70]).and_return(@pkg_info) - @provider.current_installed_version.should == "3.1.7" + expect(@new_resource).to receive(:shell_out!).with('make -V WITH_PKGNG', :env => nil).and_return(pkg_enabled) + expect(@provider).to receive(:shell_out!).with('pkg info "zsh"', :env => nil, :returns => [0,70]).and_return(@pkg_info) + expect(@provider.current_installed_version).to eq("3.1.7") end end it "should check 'pkg info' if the freebsd version is greater than or equal to 1000017" do __freebsd_version = 1000017 @node.automatic_attrs[:os_version] = __freebsd_version - @provider.should_receive(:shell_out!).with('pkg info "zsh"', :env => nil, :returns => [0,70]).and_return(@pkg_info) - @provider.current_installed_version.should == "3.1.7" + expect(@provider).to receive(:shell_out!).with('pkg info "zsh"', :env => nil, :returns => [0,70]).and_return(@pkg_info) + expect(@provider.current_installed_version).to eq("3.1.7") end end @@ -100,15 +100,15 @@ describe Chef::Provider::Package::Freebsd::Port do end it "should return candidate version if port exists" do - ::File.stub(:exist?).with('/usr/ports/Makefile').and_return(true) - @provider.stub(:port_dir).and_return('/usr/ports/shells/zsh') - @provider.should_receive(:shell_out!).with("make -V PORTVERSION", :cwd => "/usr/ports/shells/zsh", :env => nil, :returns => [0,1]). + allow(::File).to receive(:exist?).with('/usr/ports/Makefile').and_return(true) + allow(@provider).to receive(:port_dir).and_return('/usr/ports/shells/zsh') + expect(@provider).to receive(:shell_out!).with("make -V PORTVERSION", :cwd => "/usr/ports/shells/zsh", :env => nil, :returns => [0,1]). and_return(@port_version) - @provider.candidate_version.should == "5.0.5" + expect(@provider.candidate_version).to eq("5.0.5") end it "should raise exception if ports tree not found" do - ::File.stub(:exist?).with('/usr/ports/Makefile').and_return(false) + allow(::File).to receive(:exist?).with('/usr/ports/Makefile').and_return(false) expect { @provider.candidate_version }.to raise_error(Chef::Exceptions::Package, "Ports collection could not be found") end end @@ -116,24 +116,24 @@ describe Chef::Provider::Package::Freebsd::Port do describe "determining port directory" do it "should return name if package name is absolute path" do - @provider.new_resource.stub(:package_name).and_return("/var/ports/shells/zsh") - @provider.port_dir.should == "/var/ports/shells/zsh" + allow(@provider.new_resource).to receive(:package_name).and_return("/var/ports/shells/zsh") + expect(@provider.port_dir).to eq("/var/ports/shells/zsh") end it "should return full ports path given package name and category" do - @provider.new_resource.stub(:package_name).and_return("shells/zsh") - @provider.port_dir.should == "/usr/ports/shells/zsh" + allow(@provider.new_resource).to receive(:package_name).and_return("shells/zsh") + expect(@provider.port_dir).to eq("/usr/ports/shells/zsh") end it "should query system for path given just a name" do whereis = OpenStruct.new(:stdout => "zsh: /usr/ports/shells/zsh\n") - @provider.should_receive(:shell_out!).with("whereis -s zsh", :env => nil).and_return(whereis) - @provider.port_dir.should == "/usr/ports/shells/zsh" + expect(@provider).to receive(:shell_out!).with("whereis -s zsh", :env => nil).and_return(whereis) + expect(@provider.port_dir).to eq("/usr/ports/shells/zsh") end it "should raise exception if not found" do whereis = OpenStruct.new(:stdout => "zsh:\n") - @provider.should_receive(:shell_out!).with("whereis -s zsh", :env => nil).and_return(whereis) + expect(@provider).to receive(:shell_out!).with("whereis -s zsh", :env => nil).and_return(whereis) expect { @provider.port_dir }.to raise_error(Chef::Exceptions::Package, "Could not find port with the name zsh") end end @@ -145,8 +145,8 @@ describe Chef::Provider::Package::Freebsd::Port do end it "should run make install in port directory" do - @provider.stub(:port_dir).and_return("/usr/ports/shells/zsh") - @provider.should_receive(:shell_out!). + allow(@provider).to receive(:port_dir).and_return("/usr/ports/shells/zsh") + expect(@provider).to receive(:shell_out!). with("make -DBATCH install clean", :timeout => 1800, :cwd => "/usr/ports/shells/zsh", :env => nil). and_return(@install_result) @provider.install_package("zsh", "5.0.5") @@ -160,8 +160,8 @@ describe Chef::Provider::Package::Freebsd::Port do end it "should run make deinstall in port directory" do - @provider.stub(:port_dir).and_return("/usr/ports/shells/zsh") - @provider.should_receive(:shell_out!). + allow(@provider).to receive(:port_dir).and_return("/usr/ports/shells/zsh") + expect(@provider).to receive(:shell_out!). with("make deinstall", :timeout => 300, :cwd => "/usr/ports/shells/zsh", :env => nil). and_return(@install_result) @provider.remove_package("zsh", "5.0.5") diff --git a/spec/unit/provider/package/ips_spec.rb b/spec/unit/provider/package/ips_spec.rb index 07bca7f6d5..4e0afc46e9 100644 --- a/spec/unit/provider/package/ips_spec.rb +++ b/spec/unit/provider/package/ips_spec.rb @@ -28,7 +28,7 @@ describe Chef::Provider::Package::Ips do @run_context = Chef::RunContext.new(@node, {}, @events) @new_resource = Chef::Resource::Package.new("crypto/gnupg", @run_context) @current_resource = Chef::Resource::Package.new("crypto/gnupg", @run_context) - Chef::Resource::Package.stub(:new).and_return(@current_resource) + allow(Chef::Resource::Package).to receive(:new).and_return(@current_resource) @provider = Chef::Provider::Package::Ips.new(@new_resource, @run_context) end @@ -65,30 +65,30 @@ PKG_STATUS context "when loading current resource" do it "should create a current resource with the name of the new_resource" do - @provider.should_receive(:shell_out).with("pkg info #{@new_resource.package_name}").and_return(local_output) - @provider.should_receive(:shell_out!).with("pkg info -r #{@new_resource.package_name}").and_return(remote_output) - Chef::Resource::Package.should_receive(:new).and_return(@current_resource) + expect(@provider).to receive(:shell_out).with("pkg info #{@new_resource.package_name}").and_return(local_output) + expect(@provider).to receive(:shell_out!).with("pkg info -r #{@new_resource.package_name}").and_return(remote_output) + expect(Chef::Resource::Package).to receive(:new).and_return(@current_resource) @provider.load_current_resource end it "should set the current resources package name to the new resources package name" do - @provider.should_receive(:shell_out).with("pkg info #{@new_resource.package_name}").and_return(local_output) - @provider.should_receive(:shell_out!).with("pkg info -r #{@new_resource.package_name}").and_return(remote_output) + expect(@provider).to receive(:shell_out).with("pkg info #{@new_resource.package_name}").and_return(local_output) + expect(@provider).to receive(:shell_out!).with("pkg info -r #{@new_resource.package_name}").and_return(remote_output) @provider.load_current_resource - @current_resource.package_name.should == @new_resource.package_name + expect(@current_resource.package_name).to eq(@new_resource.package_name) end it "should run pkg info with the package name" do - @provider.should_receive(:shell_out).with("pkg info #{@new_resource.package_name}").and_return(local_output) - @provider.should_receive(:shell_out!).with("pkg info -r #{@new_resource.package_name}").and_return(remote_output) + expect(@provider).to receive(:shell_out).with("pkg info #{@new_resource.package_name}").and_return(local_output) + expect(@provider).to receive(:shell_out!).with("pkg info -r #{@new_resource.package_name}").and_return(remote_output) @provider.load_current_resource end it "should set the installed version to nil on the current resource if package state is not installed" do - @provider.should_receive(:shell_out).with("pkg info #{@new_resource.package_name}").and_return(local_output) - @provider.should_receive(:shell_out!).with("pkg info -r #{@new_resource.package_name}").and_return(remote_output) + expect(@provider).to receive(:shell_out).with("pkg info #{@new_resource.package_name}").and_return(local_output) + expect(@provider).to receive(:shell_out!).with("pkg info -r #{@new_resource.package_name}").and_return(remote_output) @provider.load_current_resource - @current_resource.version.should be_nil + expect(@current_resource.version).to be_nil end it "should set the installed version if package has one" do @@ -108,28 +108,28 @@ Packaging Date: October 19, 2011 09:14:50 AM Size: 8.07 MB FMRI: pkg://solaris/crypto/gnupg@2.0.17,5.11-0.175.0.0.0.2.537:20111019T091450Z INSTALLED - @provider.should_receive(:shell_out).with("pkg info #{@new_resource.package_name}").and_return(local) - @provider.should_receive(:shell_out!).with("pkg info -r #{@new_resource.package_name}").and_return(remote_output) + expect(@provider).to receive(:shell_out).with("pkg info #{@new_resource.package_name}").and_return(local) + expect(@provider).to receive(:shell_out!).with("pkg info -r #{@new_resource.package_name}").and_return(remote_output) @provider.load_current_resource - @current_resource.version.should == "2.0.17" + expect(@current_resource.version).to eq("2.0.17") end it "should return the current resource" do - @provider.should_receive(:shell_out).with("pkg info #{@new_resource.package_name}").and_return(local_output) - @provider.should_receive(:shell_out!).with("pkg info -r #{@new_resource.package_name}").and_return(remote_output) - @provider.load_current_resource.should eql(@current_resource) + expect(@provider).to receive(:shell_out).with("pkg info #{@new_resource.package_name}").and_return(local_output) + expect(@provider).to receive(:shell_out!).with("pkg info -r #{@new_resource.package_name}").and_return(remote_output) + expect(@provider.load_current_resource).to eql(@current_resource) end end context "when installing a package" do it "should run pkg install with the package name and version" do - @provider.should_receive(:shell_out).with("pkg install -q crypto/gnupg@2.0.17") + expect(@provider).to receive(:shell_out).with("pkg install -q crypto/gnupg@2.0.17") @provider.install_package("crypto/gnupg", "2.0.17") end it "should run pkg install with the package name and version and options if specified" do - @provider.should_receive(:shell_out).with("pkg --no-refresh install -q crypto/gnupg@2.0.17") - @new_resource.stub(:options).and_return("--no-refresh") + expect(@provider).to receive(:shell_out).with("pkg --no-refresh install -q crypto/gnupg@2.0.17") + allow(@new_resource).to receive(:options).and_return("--no-refresh") @provider.install_package("crypto/gnupg", "2.0.17") end @@ -147,11 +147,11 @@ Packaging Date: April 1, 2012 05:55:52 PM Size: 2.57 MB FMRI: pkg://omnios/security/sudo@1.8.4.1,5.11-0.151002:20120401T175552Z PKG_STATUS - @provider.should_receive(:shell_out).with("pkg info #{@new_resource.package_name}").and_return(local_output) - @provider.should_receive(:shell_out!).with("pkg info -r #{@new_resource.package_name}").and_return(remote) + expect(@provider).to receive(:shell_out).with("pkg info #{@new_resource.package_name}").and_return(local_output) + expect(@provider).to receive(:shell_out!).with("pkg info -r #{@new_resource.package_name}").and_return(remote) @provider.load_current_resource - @current_resource.version.should be_nil - @provider.candidate_version.should eql("1.8.4.1") + expect(@current_resource.version).to be_nil + expect(@provider.candidate_version).to eql("1.8.4.1") end it "should not upgrade the package if it is already installed" do @@ -188,20 +188,20 @@ Packaging Date: October 19, 2011 09:14:50 AM FMRI: pkg://solaris/crypto/gnupg@2.0.18,5.11-0.175.0.0.0.2.537:20111019T091450Z REMOTE - @provider.should_receive(:shell_out).with("pkg info #{@new_resource.package_name}").and_return(local) - @provider.should_receive(:shell_out!).with("pkg info -r #{@new_resource.package_name}").and_return(remote) + expect(@provider).to receive(:shell_out).with("pkg info #{@new_resource.package_name}").and_return(local) + expect(@provider).to receive(:shell_out!).with("pkg info -r #{@new_resource.package_name}").and_return(remote) @provider.load_current_resource - @provider.should_receive(:install_package).exactly(0).times + expect(@provider).to receive(:install_package).exactly(0).times @provider.action_install end context "when accept_license is true" do before do - @new_resource.stub(:accept_license).and_return(true) + allow(@new_resource).to receive(:accept_license).and_return(true) end it "should run pkg install with the --accept flag" do - @provider.should_receive(:shell_out).with("pkg install -q --accept crypto/gnupg@2.0.17") + expect(@provider).to receive(:shell_out).with("pkg install -q --accept crypto/gnupg@2.0.17") @provider.install_package("crypto/gnupg", "2.0.17") end end @@ -209,20 +209,20 @@ REMOTE context "when upgrading a package" do it "should run pkg install with the package name and version" do - @provider.should_receive(:shell_out).with("pkg install -q crypto/gnupg@2.0.17") + expect(@provider).to receive(:shell_out).with("pkg install -q crypto/gnupg@2.0.17") @provider.upgrade_package("crypto/gnupg", "2.0.17") end end context "when uninstalling a package" do it "should run pkg uninstall with the package name and version" do - @provider.should_receive(:shell_out!).with("pkg uninstall -q crypto/gnupg@2.0.17") + expect(@provider).to receive(:shell_out!).with("pkg uninstall -q crypto/gnupg@2.0.17") @provider.remove_package("crypto/gnupg", "2.0.17") end it "should run pkg uninstall with the package name and version and options if specified" do - @provider.should_receive(:shell_out!).with("pkg --no-refresh uninstall -q crypto/gnupg@2.0.17") - @new_resource.stub(:options).and_return("--no-refresh") + expect(@provider).to receive(:shell_out!).with("pkg --no-refresh uninstall -q crypto/gnupg@2.0.17") + allow(@new_resource).to receive(:options).and_return("--no-refresh") @provider.remove_package("crypto/gnupg", "2.0.17") end end diff --git a/spec/unit/provider/package/macports_spec.rb b/spec/unit/provider/package/macports_spec.rb index 535a5d2459..23a8233c66 100644 --- a/spec/unit/provider/package/macports_spec.rb +++ b/spec/unit/provider/package/macports_spec.rb @@ -27,7 +27,7 @@ describe Chef::Provider::Package::Macports do @current_resource = Chef::Resource::Package.new("zsh") @provider = Chef::Provider::Package::Macports.new(@new_resource, @run_context) - Chef::Resource::Package.stub(:new).and_return(@current_resource) + allow(Chef::Resource::Package).to receive(:new).and_return(@current_resource) @status = double("Status", :exitstatus => 0) @stdin = StringIO.new @@ -38,91 +38,91 @@ describe Chef::Provider::Package::Macports do describe "load_current_resource" do it "should create a current resource with the name of the new_resource" do - @provider.should_receive(:current_installed_version).and_return(nil) - @provider.should_receive(:macports_candidate_version).and_return("4.2.7") + expect(@provider).to receive(:current_installed_version).and_return(nil) + expect(@provider).to receive(:macports_candidate_version).and_return("4.2.7") @provider.load_current_resource - @provider.current_resource.name.should == "zsh" + expect(@provider.current_resource.name).to eq("zsh") end it "should create a current resource with the version if the package is installed" do - @provider.should_receive(:macports_candidate_version).and_return("4.2.7") - @provider.should_receive(:current_installed_version).and_return("4.2.7") + expect(@provider).to receive(:macports_candidate_version).and_return("4.2.7") + expect(@provider).to receive(:current_installed_version).and_return("4.2.7") @provider.load_current_resource - @provider.candidate_version.should == "4.2.7" + expect(@provider.candidate_version).to eq("4.2.7") end it "should create a current resource with a nil version if the package is not installed" do - @provider.should_receive(:current_installed_version).and_return(nil) - @provider.should_receive(:macports_candidate_version).and_return("4.2.7") + expect(@provider).to receive(:current_installed_version).and_return(nil) + expect(@provider).to receive(:macports_candidate_version).and_return("4.2.7") @provider.load_current_resource - @provider.current_resource.version.should be_nil + expect(@provider.current_resource.version).to be_nil end it "should set a candidate version if one exists" do - @provider.should_receive(:current_installed_version).and_return(nil) - @provider.should_receive(:macports_candidate_version).and_return("4.2.7") + expect(@provider).to receive(:current_installed_version).and_return(nil) + expect(@provider).to receive(:macports_candidate_version).and_return("4.2.7") @provider.load_current_resource - @provider.candidate_version.should == "4.2.7" + expect(@provider.candidate_version).to eq("4.2.7") end end describe "current_installed_version" do it "should return the current version if the package is installed" do - @stdout.should_receive(:read).and_return(<<EOF + expect(@stdout).to receive(:read).and_return(<<EOF The following ports are currently installed: openssl @0.9.8k_0 (active) EOF ) - @provider.should_receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) - @provider.current_installed_version.should == "0.9.8k_0" + expect(@provider).to receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + expect(@provider.current_installed_version).to eq("0.9.8k_0") end it "should return nil if a package is not currently installed" do - @stdout.should_receive(:read).and_return(" \n") - @provider.should_receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) - @provider.current_installed_version.should be_nil + expect(@stdout).to receive(:read).and_return(" \n") + expect(@provider).to receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + expect(@provider.current_installed_version).to be_nil end end describe "macports_candidate_version" do it "should return the latest available version of a given package" do - @stdout.should_receive(:read).and_return("version: 4.2.7\n") - @provider.should_receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) - @provider.macports_candidate_version.should == "4.2.7" + expect(@stdout).to receive(:read).and_return("version: 4.2.7\n") + expect(@provider).to receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + expect(@provider.macports_candidate_version).to eq("4.2.7") end it "should return nil if there is no version for a given package" do - @stdout.should_receive(:read).and_return("Error: port fadsfadsfads not found\n") - @provider.should_receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) - @provider.macports_candidate_version.should be_nil + expect(@stdout).to receive(:read).and_return("Error: port fadsfadsfads not found\n") + expect(@provider).to receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + expect(@provider.macports_candidate_version).to be_nil end end describe "install_package" do it "should run the port install command with the correct version" do - @current_resource.should_receive(:version).and_return("4.1.6") + expect(@current_resource).to receive(:version).and_return("4.1.6") @provider.current_resource = @current_resource - @provider.should_receive(:shell_out!).with("port install zsh @4.2.7") + expect(@provider).to receive(:shell_out!).with("port install zsh @4.2.7") @provider.install_package("zsh", "4.2.7") end it "should not do anything if a package already exists with the same version" do - @current_resource.should_receive(:version).and_return("4.2.7") + expect(@current_resource).to receive(:version).and_return("4.2.7") @provider.current_resource = @current_resource - @provider.should_not_receive(:shell_out!) + expect(@provider).not_to receive(:shell_out!) @provider.install_package("zsh", "4.2.7") end it "should add options to the port command when specified" do - @current_resource.should_receive(:version).and_return("4.1.6") + expect(@current_resource).to receive(:version).and_return("4.1.6") @provider.current_resource = @current_resource - @new_resource.stub(:options).and_return("-f") - @provider.should_receive(:shell_out!).with("port -f install zsh @4.2.7") + allow(@new_resource).to receive(:options).and_return("-f") + expect(@provider).to receive(:shell_out!).with("port -f install zsh @4.2.7") @provider.install_package("zsh", "4.2.7") end @@ -130,72 +130,72 @@ EOF describe "purge_package" do it "should run the port uninstall command with the correct version" do - @provider.should_receive(:shell_out!).with("port uninstall zsh @4.2.7") + expect(@provider).to receive(:shell_out!).with("port uninstall zsh @4.2.7") @provider.purge_package("zsh", "4.2.7") end it "should purge the currently active version if no explicit version is passed in" do - @provider.should_receive(:shell_out!).with("port uninstall zsh") + expect(@provider).to receive(:shell_out!).with("port uninstall zsh") @provider.purge_package("zsh", nil) end it "should add options to the port command when specified" do - @new_resource.stub(:options).and_return("-f") - @provider.should_receive(:shell_out!).with("port -f uninstall zsh @4.2.7") + allow(@new_resource).to receive(:options).and_return("-f") + expect(@provider).to receive(:shell_out!).with("port -f uninstall zsh @4.2.7") @provider.purge_package("zsh", "4.2.7") end end describe "remove_package" do it "should run the port deactivate command with the correct version" do - @provider.should_receive(:shell_out!).with("port deactivate zsh @4.2.7") + expect(@provider).to receive(:shell_out!).with("port deactivate zsh @4.2.7") @provider.remove_package("zsh", "4.2.7") end it "should remove the currently active version if no explicit version is passed in" do - @provider.should_receive(:shell_out!).with("port deactivate zsh") + expect(@provider).to receive(:shell_out!).with("port deactivate zsh") @provider.remove_package("zsh", nil) end it "should add options to the port command when specified" do - @new_resource.stub(:options).and_return("-f") - @provider.should_receive(:shell_out!).with("port -f deactivate zsh @4.2.7") + allow(@new_resource).to receive(:options).and_return("-f") + expect(@provider).to receive(:shell_out!).with("port -f deactivate zsh @4.2.7") @provider.remove_package("zsh", "4.2.7") end end describe "upgrade_package" do it "should run the port upgrade command with the correct version" do - @current_resource.should_receive(:version).at_least(:once).and_return("4.1.6") + expect(@current_resource).to receive(:version).at_least(:once).and_return("4.1.6") @provider.current_resource = @current_resource - @provider.should_receive(:shell_out!).with("port upgrade zsh @4.2.7") + expect(@provider).to receive(:shell_out!).with("port upgrade zsh @4.2.7") @provider.upgrade_package("zsh", "4.2.7") end it "should not run the port upgrade command if the version is already installed" do - @current_resource.should_receive(:version).at_least(:once).and_return("4.2.7") + expect(@current_resource).to receive(:version).at_least(:once).and_return("4.2.7") @provider.current_resource = @current_resource - @provider.should_not_receive(:shell_out!) + expect(@provider).not_to receive(:shell_out!) @provider.upgrade_package("zsh", "4.2.7") end it "should call install_package if the package isn't currently installed" do - @current_resource.should_receive(:version).at_least(:once).and_return(nil) + expect(@current_resource).to receive(:version).at_least(:once).and_return(nil) @provider.current_resource = @current_resource - @provider.should_receive(:install_package).and_return(true) + expect(@provider).to receive(:install_package).and_return(true) @provider.upgrade_package("zsh", "4.2.7") end it "should add options to the port command when specified" do - @new_resource.stub(:options).and_return("-f") - @current_resource.should_receive(:version).at_least(:once).and_return("4.1.6") + allow(@new_resource).to receive(:options).and_return("-f") + expect(@current_resource).to receive(:version).at_least(:once).and_return("4.1.6") @provider.current_resource = @current_resource - @provider.should_receive(:shell_out!).with("port -f upgrade zsh @4.2.7") + expect(@provider).to receive(:shell_out!).with("port -f upgrade zsh @4.2.7") @provider.upgrade_package("zsh", "4.2.7") end diff --git a/spec/unit/provider/package/pacman_spec.rb b/spec/unit/provider/package/pacman_spec.rb index ed10513350..9fa5f9667c 100644 --- a/spec/unit/provider/package/pacman_spec.rb +++ b/spec/unit/provider/package/pacman_spec.rb @@ -28,8 +28,8 @@ describe Chef::Provider::Package::Pacman do @status = double("Status", :exitstatus => 0) @provider = Chef::Provider::Package::Pacman.new(@new_resource, @run_context) - Chef::Resource::Package.stub(:new).and_return(@current_resource) - @provider.stub(:popen4).and_return(@status) + allow(Chef::Resource::Package).to receive(:new).and_return(@current_resource) + allow(@provider).to receive(:popen4).and_return(@status) @stdin = StringIO.new @stdout = StringIO.new(<<-ERR) error: package "nano" not found @@ -40,29 +40,29 @@ ERR describe "when determining the current package state" do it "should create a current resource with the name of the new_resource" do - Chef::Resource::Package.should_receive(:new).and_return(@current_resource) + expect(Chef::Resource::Package).to receive(:new).and_return(@current_resource) @provider.load_current_resource end it "should set the current resources package name to the new resources package name" do - @current_resource.should_receive(:package_name).with(@new_resource.package_name) + expect(@current_resource).to receive(:package_name).with(@new_resource.package_name) @provider.load_current_resource end it "should run pacman query with the package name" do - @provider.should_receive(:popen4).with("pacman -Qi #{@new_resource.package_name}").and_return(@status) + expect(@provider).to receive(:popen4).with("pacman -Qi #{@new_resource.package_name}").and_return(@status) @provider.load_current_resource end it "should read stdout on pacman" do - @provider.stub(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) - @stdout.should_receive(:each).and_return(true) + allow(@provider).to receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + expect(@stdout).to receive(:each).and_return(true) @provider.load_current_resource end it "should set the installed version to nil on the current resource if pacman installed version not exists" do - @provider.stub(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) - @current_resource.should_receive(:version).with(nil).and_return(true) + allow(@provider).to receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + expect(@current_resource).to receive(:version).with(nil).and_return(true) @provider.load_current_resource end @@ -88,16 +88,16 @@ Install Reason : Explicitly installed Install Script : Yes Description : Pico editor clone with enhancements PACMAN - @provider.stub(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + allow(@provider).to receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) @provider.load_current_resource - @current_resource.version.should == "2.2.2-1" + expect(@current_resource.version).to eq("2.2.2-1") end it "should set the candidate version if pacman has one" do - @stdout.stub(:each).and_yield("core nano 2.2.3-1") - @provider.stub(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + allow(@stdout).to receive(:each).and_yield("core nano 2.2.3-1") + allow(@provider).to receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) @provider.load_current_resource - @provider.candidate_version.should eql("2.2.3-1") + expect(@provider.candidate_version).to eql("2.2.3-1") end it "should use pacman.conf to determine valid repo names for package versions" do @@ -119,45 +119,45 @@ Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist PACMAN_CONF - ::File.stub(:exists?).with("/etc/pacman.conf").and_return(true) - ::File.stub(:read).with("/etc/pacman.conf").and_return(@pacman_conf) - @stdout.stub(:each).and_yield("customrepo nano 1.2.3-4") - @provider.stub(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + allow(::File).to receive(:exists?).with("/etc/pacman.conf").and_return(true) + allow(::File).to receive(:read).with("/etc/pacman.conf").and_return(@pacman_conf) + allow(@stdout).to receive(:each).and_yield("customrepo nano 1.2.3-4") + allow(@provider).to receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) @provider.load_current_resource - @provider.candidate_version.should eql("1.2.3-4") + expect(@provider.candidate_version).to eql("1.2.3-4") end it "should raise an exception if pacman fails" do - @status.should_receive(:exitstatus).and_return(2) - lambda { @provider.load_current_resource }.should raise_error(Chef::Exceptions::Package) + expect(@status).to receive(:exitstatus).and_return(2) + expect { @provider.load_current_resource }.to raise_error(Chef::Exceptions::Package) end it "should not raise an exception if pacman succeeds" do - @status.should_receive(:exitstatus).and_return(0) - lambda { @provider.load_current_resource }.should_not raise_error + expect(@status).to receive(:exitstatus).and_return(0) + expect { @provider.load_current_resource }.not_to raise_error end it "should raise an exception if pacman does not return a candidate version" do - @stdout.stub(:each).and_yield("") - @provider.stub(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) - lambda { @provider.candidate_version }.should raise_error(Chef::Exceptions::Package) + allow(@stdout).to receive(:each).and_yield("") + allow(@provider).to receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + expect { @provider.candidate_version }.to raise_error(Chef::Exceptions::Package) end it "should return the current resouce" do - @provider.load_current_resource.should eql(@current_resource) + expect(@provider.load_current_resource).to eql(@current_resource) end end describe Chef::Provider::Package::Pacman, "install_package" do it "should run pacman install with the package name and version" do - @provider.should_receive(:shell_out!).with("pacman --sync --noconfirm --noprogressbar nano") + expect(@provider).to receive(:shell_out!).with("pacman --sync --noconfirm --noprogressbar nano") @provider.install_package("nano", "1.0") end it "should run pacman install with the package name and version and options if specified" do - @provider.should_receive(:shell_out!).with("pacman --sync --noconfirm --noprogressbar --debug nano") - @new_resource.stub(:options).and_return("--debug") + expect(@provider).to receive(:shell_out!).with("pacman --sync --noconfirm --noprogressbar --debug nano") + allow(@new_resource).to receive(:options).and_return("--debug") @provider.install_package("nano", "1.0") end @@ -165,20 +165,20 @@ PACMAN_CONF describe Chef::Provider::Package::Pacman, "upgrade_package" do it "should run install_package with the name and version" do - @provider.should_receive(:install_package).with("nano", "1.0") + expect(@provider).to receive(:install_package).with("nano", "1.0") @provider.upgrade_package("nano", "1.0") end end describe Chef::Provider::Package::Pacman, "remove_package" do it "should run pacman remove with the package name" do - @provider.should_receive(:shell_out!).with("pacman --remove --noconfirm --noprogressbar nano") + expect(@provider).to receive(:shell_out!).with("pacman --remove --noconfirm --noprogressbar nano") @provider.remove_package("nano", "1.0") end it "should run pacman remove with the package name and options if specified" do - @provider.should_receive(:shell_out!).with("pacman --remove --noconfirm --noprogressbar --debug nano") - @new_resource.stub(:options).and_return("--debug") + expect(@provider).to receive(:shell_out!).with("pacman --remove --noconfirm --noprogressbar --debug nano") + allow(@new_resource).to receive(:options).and_return("--debug") @provider.remove_package("nano", "1.0") end @@ -186,7 +186,7 @@ PACMAN_CONF describe Chef::Provider::Package::Pacman, "purge_package" do it "should run remove_package with the name and version" do - @provider.should_receive(:remove_package).with("nano", "1.0") + expect(@provider).to receive(:remove_package).with("nano", "1.0") @provider.purge_package("nano", "1.0") end diff --git a/spec/unit/provider/package/paludis_spec.rb b/spec/unit/provider/package/paludis_spec.rb index 8387bb1252..4ed5dfc003 100644 --- a/spec/unit/provider/package/paludis_spec.rb +++ b/spec/unit/provider/package/paludis_spec.rb @@ -28,7 +28,7 @@ describe Chef::Provider::Package::Paludis do @run_context = Chef::RunContext.new(@node, {}, @events) @new_resource = Chef::Resource::Package.new("net/ntp") @current_resource = Chef::Resource::Package.new("net/ntp") - Chef::Resource::Package.stub(:new).and_return(@current_resource) + allow(Chef::Resource::Package).to receive(:new).and_return(@current_resource) @provider = Chef::Provider::Package::Paludis.new(@new_resource, @run_context) @stdin = StringIO.new @@ -47,19 +47,19 @@ PKG_STATUS context "when loading current resource" do it "should create a current resource with the name of the new_resource" do - @provider.should_receive(:shell_out!).and_return(@shell_out) - Chef::Resource::Package.should_receive(:new).and_return(@current_resource) + expect(@provider).to receive(:shell_out!).and_return(@shell_out) + expect(Chef::Resource::Package).to receive(:new).and_return(@current_resource) @provider.load_current_resource end it "should set the current resources package name to the new resources package name" do - @provider.should_receive(:shell_out!).and_return(@shell_out) - @current_resource.should_receive(:package_name).with(@new_resource.package_name) + expect(@provider).to receive(:shell_out!).and_return(@shell_out) + expect(@current_resource).to receive(:package_name).with(@new_resource.package_name) @provider.load_current_resource end it "should run pkg info with the package name" do - @provider.should_receive(:shell_out!).with("cave -L warning print-ids -M none -m \"#{@new_resource.package_name}\" -f \"%c/%p %v %r\n\"").and_return(@shell_out) + expect(@provider).to receive(:shell_out!).with("cave -L warning print-ids -M none -m \"#{@new_resource.package_name}\" -f \"%c/%p %v %r\n\"").and_return(@shell_out) @provider.load_current_resource end @@ -72,28 +72,28 @@ user/ntp 0 accounts user/ntp 0 installed-accounts net/ntp 4.2.6_p5-r1 installed INSTALLED - @provider.should_receive(:shell_out!).and_return(@shell_out) + expect(@provider).to receive(:shell_out!).and_return(@shell_out) @provider.load_current_resource - @current_resource.version.should == "4.2.6_p5-r1" - @provider.candidate_version.should eql("4.2.6_p5-r2") + expect(@current_resource.version).to eq("4.2.6_p5-r1") + expect(@provider.candidate_version).to eql("4.2.6_p5-r2") end it "should return the current resource" do - @provider.should_receive(:shell_out!).and_return(@shell_out) - @provider.load_current_resource.should eql(@current_resource) + expect(@provider).to receive(:shell_out!).and_return(@shell_out) + expect(@provider.load_current_resource).to eql(@current_resource) end end context "when installing a package" do it "should run pkg install with the package name and version" do - @provider.should_receive(:shell_out!).with("cave -L warning resolve -x \"=net/ntp-4.2.6_p5-r2\"", {:timeout=>@new_resource.timeout}) + expect(@provider).to receive(:shell_out!).with("cave -L warning resolve -x \"=net/ntp-4.2.6_p5-r2\"", {:timeout=>@new_resource.timeout}) @provider.install_package("net/ntp", "4.2.6_p5-r2") end it "should run pkg install with the package name and version and options if specified" do - @provider.should_receive(:shell_out!).with("cave -L warning resolve -x --preserve-world \"=net/ntp-4.2.6_p5-r2\"", {:timeout=>@new_resource.timeout}) - @new_resource.stub(:options).and_return("--preserve-world") + expect(@provider).to receive(:shell_out!).with("cave -L warning resolve -x --preserve-world \"=net/ntp-4.2.6_p5-r2\"", {:timeout=>@new_resource.timeout}) + allow(@new_resource).to receive(:options).and_return("--preserve-world") @provider.install_package("net/ntp", "4.2.6_p5-r2") end @@ -102,7 +102,7 @@ INSTALLED sys-process/lsof 4.87 arbor sys-process/lsof 4.87 x86_64 PKG_STATUS - @provider.should_receive(:shell_out!).with("cave -L warning resolve -x \"=sys-process/lsof-4.87\"", {:timeout=>@new_resource.timeout}) + expect(@provider).to receive(:shell_out!).with("cave -L warning resolve -x \"=sys-process/lsof-4.87\"", {:timeout=>@new_resource.timeout}) @provider.install_package("sys-process/lsof", "4.87") end @@ -111,23 +111,23 @@ PKG_STATUS sys-process/lsof 4.87 arbor sys-process/lsof 4.87 x86_64 PKG_STATUS - @provider.should_receive(:shell_out!).and_return(@shell_out) + expect(@provider).to receive(:shell_out!).and_return(@shell_out) @provider.load_current_resource - @current_resource.version.should be_nil - @provider.candidate_version.should eql("4.87") + expect(@current_resource.version).to be_nil + expect(@provider.candidate_version).to eql("4.87") end end context "when upgrading a package" do it "should run pkg install with the package name and version" do - @provider.should_receive(:shell_out!).with("cave -L warning resolve -x \"=net/ntp-4.2.6_p5-r2\"", {:timeout=>@new_resource.timeout}) + expect(@provider).to receive(:shell_out!).with("cave -L warning resolve -x \"=net/ntp-4.2.6_p5-r2\"", {:timeout=>@new_resource.timeout}) @provider.upgrade_package("net/ntp", "4.2.6_p5-r2") end end context "when uninstalling a package" do it "should run pkg uninstall with the package name and version" do - @provider.should_receive(:shell_out!).with("cave -L warning uninstall -x \"=net/ntp-4.2.6_p5-r2\"") + expect(@provider).to receive(:shell_out!).with("cave -L warning uninstall -x \"=net/ntp-4.2.6_p5-r2\"") @provider.remove_package("net/ntp", "4.2.6_p5-r2") end diff --git a/spec/unit/provider/package/portage_spec.rb b/spec/unit/provider/package/portage_spec.rb index 570f123168..f83eda45de 100644 --- a/spec/unit/provider/package/portage_spec.rb +++ b/spec/unit/provider/package/portage_spec.rb @@ -27,73 +27,73 @@ describe Chef::Provider::Package::Portage, "load_current_resource" do @current_resource = Chef::Resource::Package.new("dev-util/git") @provider = Chef::Provider::Package::Portage.new(@new_resource, @run_context) - Chef::Resource::Package.stub(:new).and_return(@current_resource) + allow(Chef::Resource::Package).to receive(:new).and_return(@current_resource) end describe "when determining the current state of the package" do it "should create a current resource with the name of new_resource" do - ::Dir.stub(:[]).with("/var/db/pkg/dev-util/git-*").and_return(["/var/db/pkg/dev-util/git-1.0.0"]) - Chef::Resource::Package.should_receive(:new).and_return(@current_resource) + allow(::Dir).to receive(:[]).with("/var/db/pkg/dev-util/git-*").and_return(["/var/db/pkg/dev-util/git-1.0.0"]) + expect(Chef::Resource::Package).to receive(:new).and_return(@current_resource) @provider.load_current_resource end it "should set the current resource package name to the new resource package name" do - ::Dir.stub(:[]).with("/var/db/pkg/dev-util/git-*").and_return(["/var/db/pkg/dev-util/git-1.0.0"]) - @current_resource.should_receive(:package_name).with(@new_resource.package_name) + allow(::Dir).to receive(:[]).with("/var/db/pkg/dev-util/git-*").and_return(["/var/db/pkg/dev-util/git-1.0.0"]) + expect(@current_resource).to receive(:package_name).with(@new_resource.package_name) @provider.load_current_resource end it "should return a current resource with the correct version if the package is found" do - ::Dir.stub(:[]).with("/var/db/pkg/dev-util/git-*").and_return(["/var/db/pkg/dev-util/git-foobar-0.9", "/var/db/pkg/dev-util/git-1.0.0"]) + allow(::Dir).to receive(:[]).with("/var/db/pkg/dev-util/git-*").and_return(["/var/db/pkg/dev-util/git-foobar-0.9", "/var/db/pkg/dev-util/git-1.0.0"]) @provider.load_current_resource - @provider.current_resource.version.should == "1.0.0" + expect(@provider.current_resource.version).to eq("1.0.0") end it "should return a current resource with the correct version if the package is found with revision" do - ::Dir.stub(:[]).with("/var/db/pkg/dev-util/git-*").and_return(["/var/db/pkg/dev-util/git-1.0.0-r1"]) + allow(::Dir).to receive(:[]).with("/var/db/pkg/dev-util/git-*").and_return(["/var/db/pkg/dev-util/git-1.0.0-r1"]) @provider.load_current_resource - @provider.current_resource.version.should == "1.0.0-r1" + expect(@provider.current_resource.version).to eq("1.0.0-r1") end it "should return a current resource with a nil version if the package is not found" do - ::Dir.stub(:[]).with("/var/db/pkg/dev-util/git-*").and_return(["/var/db/pkg/dev-util/notgit-1.0.0"]) + allow(::Dir).to receive(:[]).with("/var/db/pkg/dev-util/git-*").and_return(["/var/db/pkg/dev-util/notgit-1.0.0"]) @provider.load_current_resource - @provider.current_resource.version.should be_nil + expect(@provider.current_resource.version).to be_nil end it "should return a package name match from /var/db/pkg/* if a category isn't specified and a match is found" do - ::Dir.stub(:[]).with("/var/db/pkg/*/git-*").and_return(["/var/db/pkg/dev-util/git-foobar-0.9", "/var/db/pkg/dev-util/git-1.0.0"]) + allow(::Dir).to receive(:[]).with("/var/db/pkg/*/git-*").and_return(["/var/db/pkg/dev-util/git-foobar-0.9", "/var/db/pkg/dev-util/git-1.0.0"]) @provider = Chef::Provider::Package::Portage.new(@new_resource_without_category, @run_context) @provider.load_current_resource - @provider.current_resource.version.should == "1.0.0" + expect(@provider.current_resource.version).to eq("1.0.0") end it "should return a current resource with a nil version if a category isn't specified and a name match from /var/db/pkg/* is not found" do - ::Dir.stub(:[]).with("/var/db/pkg/*/git-*").and_return(["/var/db/pkg/dev-util/notgit-1.0.0"]) + allow(::Dir).to receive(:[]).with("/var/db/pkg/*/git-*").and_return(["/var/db/pkg/dev-util/notgit-1.0.0"]) @provider = Chef::Provider::Package::Portage.new(@new_resource_without_category, @run_context) @provider.load_current_resource - @provider.current_resource.version.should be_nil + expect(@provider.current_resource.version).to be_nil end it "should throw an exception if a category isn't specified and multiple packages are found" do - ::Dir.stub(:[]).with("/var/db/pkg/*/git-*").and_return(["/var/db/pkg/dev-util/git-1.0.0", "/var/db/pkg/funny-words/git-1.0.0"]) + allow(::Dir).to receive(:[]).with("/var/db/pkg/*/git-*").and_return(["/var/db/pkg/dev-util/git-1.0.0", "/var/db/pkg/funny-words/git-1.0.0"]) @provider = Chef::Provider::Package::Portage.new(@new_resource_without_category, @run_context) - lambda { @provider.load_current_resource }.should raise_error(Chef::Exceptions::Package) + expect { @provider.load_current_resource }.to raise_error(Chef::Exceptions::Package) end it "should return a current resource with a nil version if a category is specified and multiple packages are found" do - ::Dir.stub(:[]).with("/var/db/pkg/dev-util/git-*").and_return(["/var/db/pkg/dev-util/git-1.0.0", "/var/db/pkg/funny-words/git-1.0.0"]) + allow(::Dir).to receive(:[]).with("/var/db/pkg/dev-util/git-*").and_return(["/var/db/pkg/dev-util/git-1.0.0", "/var/db/pkg/funny-words/git-1.0.0"]) @provider = Chef::Provider::Package::Portage.new(@new_resource, @run_context) @provider.load_current_resource - @provider.current_resource.version.should be_nil + expect(@provider.current_resource.version).to be_nil end it "should return a current resource with a nil version if a category is not specified and multiple packages from the same category are found" do - ::Dir.stub(:[]).with("/var/db/pkg/*/git-*").and_return(["/var/db/pkg/dev-util/git-1.0.0", "/var/db/pkg/dev-util/git-1.0.1"]) + allow(::Dir).to receive(:[]).with("/var/db/pkg/*/git-*").and_return(["/var/db/pkg/dev-util/git-1.0.0", "/var/db/pkg/dev-util/git-1.0.1"]) @provider = Chef::Provider::Package::Portage.new(@new_resource_without_category, @run_context) @provider.load_current_resource - @provider.current_resource.version.should be_nil + expect(@provider.current_resource.version).to be_nil end end @@ -102,14 +102,14 @@ describe Chef::Provider::Package::Portage, "load_current_resource" do describe Chef::Provider::Package::Portage, "candidate_version" do it "should return the candidate_version variable if already set" do @provider.candidate_version = "1.0.0" - @provider.should_not_receive(:popen4) + expect(@provider).not_to receive(:popen4) @provider.candidate_version end it "should throw an exception if the exitstatus is not 0" do @status = double("Status", :exitstatus => 1) - @provider.stub(:popen4).and_return(@status) - lambda { @provider.candidate_version }.should raise_error(Chef::Exceptions::Package) + allow(@provider).to receive(:popen4).and_return(@status) + expect { @provider.candidate_version }.to raise_error(Chef::Exceptions::Package) end it "should find the candidate_version if a category is specifed and there are no duplicates" do @@ -144,8 +144,8 @@ Searching... EOF @status = double("Status", :exitstatus => 0) - @provider.should_receive(:popen4).and_yield(nil, nil, StringIO.new(output), nil).and_return(@status) - @provider.candidate_version.should == "1.6.0.6" + expect(@provider).to receive(:popen4).and_yield(nil, nil, StringIO.new(output), nil).and_return(@status) + expect(@provider.candidate_version).to eq("1.6.0.6") end it "should find the candidate_version if a category is not specifed and there are no duplicates" do @@ -181,8 +181,8 @@ EOF @status = double("Status", :exitstatus => 0) @provider = Chef::Provider::Package::Portage.new(@new_resource_without_category, @run_context) - @provider.should_receive(:popen4).and_yield(nil, nil, StringIO.new(output), nil).and_return(@status) - @provider.candidate_version.should == "1.6.0.6" + expect(@provider).to receive(:popen4).and_yield(nil, nil, StringIO.new(output), nil).and_return(@status) + expect(@provider.candidate_version).to eq("1.6.0.6") end it "should throw an exception if a category is not specified and there are duplicates" do @@ -226,8 +226,8 @@ EOF @status = double("Status", :exitstatus => 0) @provider = Chef::Provider::Package::Portage.new(@new_resource_without_category, @run_context) - @provider.should_receive(:popen4).and_yield(nil, nil, StringIO.new(output), nil).and_return(@status) - lambda { @provider.candidate_version }.should raise_error(Chef::Exceptions::Package) + expect(@provider).to receive(:popen4).and_yield(nil, nil, StringIO.new(output), nil).and_return(@status) + expect { @provider.candidate_version }.to raise_error(Chef::Exceptions::Package) end it "should find the candidate_version if a category is specifed and there are category duplicates" do @@ -271,25 +271,25 @@ EOF @status = double("Status", :exitstatus => 0) @provider = Chef::Provider::Package::Portage.new(@new_resource, @run_context) - @provider.should_receive(:popen4).and_yield(nil, nil, StringIO.new(output), nil).and_return(@status) - @provider.candidate_version.should == "1.6.0.6" + expect(@provider).to receive(:popen4).and_yield(nil, nil, StringIO.new(output), nil).and_return(@status) + expect(@provider.candidate_version).to eq("1.6.0.6") end end describe Chef::Provider::Package::Portage, "install_package" do it "should install a normally versioned package using portage" do - @provider.should_receive(:shell_out!).with("emerge -g --color n --nospinner --quiet =dev-util/git-1.0.0") + expect(@provider).to receive(:shell_out!).with("emerge -g --color n --nospinner --quiet =dev-util/git-1.0.0") @provider.install_package("dev-util/git", "1.0.0") end it "should install a tilde versioned package using portage" do - @provider.should_receive(:shell_out!).with("emerge -g --color n --nospinner --quiet ~dev-util/git-1.0.0") + expect(@provider).to receive(:shell_out!).with("emerge -g --color n --nospinner --quiet ~dev-util/git-1.0.0") @provider.install_package("dev-util/git", "~1.0.0") end it "should add options to the emerge command when specified" do - @provider.should_receive(:shell_out!).with("emerge -g --color n --nospinner --quiet --oneshot =dev-util/git-1.0.0") - @new_resource.stub(:options).and_return("--oneshot") + expect(@provider).to receive(:shell_out!).with("emerge -g --color n --nospinner --quiet --oneshot =dev-util/git-1.0.0") + allow(@new_resource).to receive(:options).and_return("--oneshot") @provider.install_package("dev-util/git", "1.0.0") end @@ -297,12 +297,12 @@ EOF describe Chef::Provider::Package::Portage, "remove_package" do it "should un-emerge the package with no version specified" do - @provider.should_receive(:shell_out!).with("emerge --unmerge --color n --nospinner --quiet dev-util/git") + expect(@provider).to receive(:shell_out!).with("emerge --unmerge --color n --nospinner --quiet dev-util/git") @provider.remove_package("dev-util/git", nil) end it "should un-emerge the package with a version specified" do - @provider.should_receive(:shell_out!).with("emerge --unmerge --color n --nospinner --quiet =dev-util/git-1.0.0") + expect(@provider).to receive(:shell_out!).with("emerge --unmerge --color n --nospinner --quiet =dev-util/git-1.0.0") @provider.remove_package("dev-util/git", "1.0.0") end end diff --git a/spec/unit/provider/package/rpm_spec.rb b/spec/unit/provider/package/rpm_spec.rb index 9a96d829b8..2aceee59a5 100644 --- a/spec/unit/provider/package/rpm_spec.rb +++ b/spec/unit/provider/package/rpm_spec.rb @@ -30,55 +30,55 @@ describe Chef::Provider::Package::Rpm do @provider = Chef::Provider::Package::Rpm.new(@new_resource, @run_context) @status = double("Status", :exitstatus => 0) - ::File.stub(:exists?).and_return(true) + allow(::File).to receive(:exists?).and_return(true) end describe "when determining the current state of the package" do it "should create a current resource with the name of new_resource" do - @provider.stub(:popen4).and_return(@status) + allow(@provider).to receive(:popen4).and_return(@status) @provider.load_current_resource - @provider.current_resource.name.should == "ImageMagick-c++" + expect(@provider.current_resource.name).to eq("ImageMagick-c++") end it "should set the current reource package name to the new resource package name" do - @provider.stub(:popen4).and_return(@status) + allow(@provider).to receive(:popen4).and_return(@status) @provider.load_current_resource - @provider.current_resource.package_name.should == 'ImageMagick-c++' + expect(@provider.current_resource.package_name).to eq('ImageMagick-c++') end it "should raise an exception if a source is supplied but not found" do - ::File.stub(:exists?).and_return(false) - lambda { @provider.run_action(:any) }.should raise_error(Chef::Exceptions::Package) + allow(::File).to receive(:exists?).and_return(false) + expect { @provider.run_action(:any) }.to raise_error(Chef::Exceptions::Package) end it "should get the source package version from rpm if provided" do @stdout = StringIO.new("ImageMagick-c++ 6.5.4.7-7.el6_5") - @provider.should_receive(:popen4).with("rpm -qp --queryformat '%{NAME} %{VERSION}-%{RELEASE}\n' /tmp/ImageMagick-c++-6.5.4.7-7.el6_5.x86_64.rpm").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) - @provider.should_receive(:popen4).with("rpm -q --queryformat '%{NAME} %{VERSION}-%{RELEASE}\n' ImageMagick-c++").and_return(@status) + expect(@provider).to receive(:popen4).with("rpm -qp --queryformat '%{NAME} %{VERSION}-%{RELEASE}\n' /tmp/ImageMagick-c++-6.5.4.7-7.el6_5.x86_64.rpm").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + expect(@provider).to receive(:popen4).with("rpm -q --queryformat '%{NAME} %{VERSION}-%{RELEASE}\n' ImageMagick-c++").and_return(@status) @provider.load_current_resource - @provider.current_resource.package_name.should == "ImageMagick-c++" - @provider.new_resource.version.should == "6.5.4.7-7.el6_5" + expect(@provider.current_resource.package_name).to eq("ImageMagick-c++") + expect(@provider.new_resource.version).to eq("6.5.4.7-7.el6_5") end it "should return the current version installed if found by rpm" do @stdout = StringIO.new("ImageMagick-c++ 6.5.4.7-7.el6_5") - @provider.should_receive(:popen4).with("rpm -qp --queryformat '%{NAME} %{VERSION}-%{RELEASE}\n' /tmp/ImageMagick-c++-6.5.4.7-7.el6_5.x86_64.rpm").and_return(@status) - @provider.should_receive(:popen4).with("rpm -q --queryformat '%{NAME} %{VERSION}-%{RELEASE}\n' ImageMagick-c++").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + expect(@provider).to receive(:popen4).with("rpm -qp --queryformat '%{NAME} %{VERSION}-%{RELEASE}\n' /tmp/ImageMagick-c++-6.5.4.7-7.el6_5.x86_64.rpm").and_return(@status) + expect(@provider).to receive(:popen4).with("rpm -q --queryformat '%{NAME} %{VERSION}-%{RELEASE}\n' ImageMagick-c++").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) @provider.load_current_resource - @provider.current_resource.version.should == "6.5.4.7-7.el6_5" + expect(@provider.current_resource.version).to eq("6.5.4.7-7.el6_5") end it "should raise an exception if the source is not set but we are installing" do new_resource = Chef::Resource::Package.new("ImageMagick-c++") provider = Chef::Provider::Package::Rpm.new(new_resource, @run_context) - lambda { provider.run_action(:any) }.should raise_error(Chef::Exceptions::Package) + expect { provider.run_action(:any) }.to raise_error(Chef::Exceptions::Package) end it "should raise an exception if rpm fails to run" do status = double("Status", :exitstatus => -1) - @provider.stub(:popen4).and_return(status) - lambda { @provider.run_action(:any) }.should raise_error(Chef::Exceptions::Package) + allow(@provider).to receive(:popen4).and_return(status) + expect { @provider.run_action(:any) }.to raise_error(Chef::Exceptions::Package) end it "should not detect the package name as version when not installed" do @@ -87,10 +87,10 @@ describe Chef::Provider::Package::Rpm do @new_resource = Chef::Resource::Package.new("openssh-askpass") @new_resource.source 'openssh-askpass' @provider = Chef::Provider::Package::Rpm.new(@new_resource, @run_context) - @provider.should_receive(:popen4).with("rpm -qp --queryformat '%{NAME} %{VERSION}-%{RELEASE}\n' openssh-askpass").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) - @provider.should_receive(:popen4).with("rpm -q --queryformat '%{NAME} %{VERSION}-%{RELEASE}\n' openssh-askpass").and_return(@status) + expect(@provider).to receive(:popen4).with("rpm -qp --queryformat '%{NAME} %{VERSION}-%{RELEASE}\n' openssh-askpass").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + expect(@provider).to receive(:popen4).with("rpm -q --queryformat '%{NAME} %{VERSION}-%{RELEASE}\n' openssh-askpass").and_return(@status) @provider.load_current_resource - @provider.current_resource.version.should be_nil + expect(@provider.current_resource.version).to be_nil end end @@ -102,54 +102,54 @@ describe Chef::Provider::Package::Rpm do describe "when installing or upgrading" do it "should run rpm -i with the package source to install" do - @provider.should_receive(:shell_out!).with("rpm -i /tmp/ImageMagick-c++-6.5.4.7-7.el6_5.x86_64.rpm") + expect(@provider).to receive(:shell_out!).with("rpm -i /tmp/ImageMagick-c++-6.5.4.7-7.el6_5.x86_64.rpm") @provider.install_package("ImageMagick-c++", "6.5.4.7-7.el6_5") end it "should run rpm -U with the package source to upgrade" do @current_resource.version("21.4-19.el5") - @provider.should_receive(:shell_out!).with("rpm -U /tmp/ImageMagick-c++-6.5.4.7-7.el6_5.x86_64.rpm") + expect(@provider).to receive(:shell_out!).with("rpm -U /tmp/ImageMagick-c++-6.5.4.7-7.el6_5.x86_64.rpm") @provider.upgrade_package("ImageMagick-c++", "6.5.4.7-7.el6_5") end it "should install package if missing and set to upgrade" do @current_resource.version("ImageMagick-c++") - @provider.should_receive(:shell_out!).with("rpm -U /tmp/ImageMagick-c++-6.5.4.7-7.el6_5.x86_64.rpm") + expect(@provider).to receive(:shell_out!).with("rpm -U /tmp/ImageMagick-c++-6.5.4.7-7.el6_5.x86_64.rpm") @provider.upgrade_package("ImageMagick-c++", "6.5.4.7-7.el6_5") end it "should install from a path when the package is a path and the source is nil" do @new_resource = Chef::Resource::Package.new("/tmp/ImageMagick-c++-6.5.4.7-7.el6_5.x86_64.rpm") @provider = Chef::Provider::Package::Rpm.new(@new_resource, @run_context) - @new_resource.source.should == "/tmp/ImageMagick-c++-6.5.4.7-7.el6_5.x86_64.rpm" + expect(@new_resource.source).to eq("/tmp/ImageMagick-c++-6.5.4.7-7.el6_5.x86_64.rpm") @current_resource = Chef::Resource::Package.new("ImageMagick-c++") @provider.current_resource = @current_resource - @provider.should_receive(:shell_out!).with("rpm -i /tmp/ImageMagick-c++-6.5.4.7-7.el6_5.x86_64.rpm") + expect(@provider).to receive(:shell_out!).with("rpm -i /tmp/ImageMagick-c++-6.5.4.7-7.el6_5.x86_64.rpm") @provider.install_package("/tmp/ImageMagick-c++-6.5.4.7-7.el6_5.x86_64.rpm", "6.5.4.7-7.el6_5") end it "should uprgrade from a path when the package is a path and the source is nil" do @new_resource = Chef::Resource::Package.new("/tmp/ImageMagick-c++-6.5.4.7-7.el6_5.x86_64.rpm") @provider = Chef::Provider::Package::Rpm.new(@new_resource, @run_context) - @new_resource.source.should == "/tmp/ImageMagick-c++-6.5.4.7-7.el6_5.x86_64.rpm" + expect(@new_resource.source).to eq("/tmp/ImageMagick-c++-6.5.4.7-7.el6_5.x86_64.rpm") @current_resource = Chef::Resource::Package.new("ImageMagick-c++") @current_resource.version("21.4-19.el5") @provider.current_resource = @current_resource - @provider.should_receive(:shell_out!).with("rpm -U /tmp/ImageMagick-c++-6.5.4.7-7.el6_5.x86_64.rpm") + expect(@provider).to receive(:shell_out!).with("rpm -U /tmp/ImageMagick-c++-6.5.4.7-7.el6_5.x86_64.rpm") @provider.upgrade_package("/tmp/ImageMagick-c++-6.5.4.7-7.el6_5.x86_64.rpm", "6.5.4.7-7.el6_5") end it "installs with custom options specified in the resource" do @provider.candidate_version = '11' @new_resource.options("--dbpath /var/lib/rpm") - @provider.should_receive(:shell_out!).with("rpm --dbpath /var/lib/rpm -i /tmp/ImageMagick-c++-6.5.4.7-7.el6_5.x86_64.rpm") + expect(@provider).to receive(:shell_out!).with("rpm --dbpath /var/lib/rpm -i /tmp/ImageMagick-c++-6.5.4.7-7.el6_5.x86_64.rpm") @provider.install_package(@new_resource.name, @provider.candidate_version) end end describe "when removing the package" do it "should run rpm -e to remove the package" do - @provider.should_receive(:shell_out!).with("rpm -e ImageMagick-c++-6.5.4.7-7.el6_5") + expect(@provider).to receive(:shell_out!).with("rpm -e ImageMagick-c++-6.5.4.7-7.el6_5") @provider.remove_package("ImageMagick-c++", "6.5.4.7-7.el6_5") end end diff --git a/spec/unit/provider/package/rubygems_spec.rb b/spec/unit/provider/package/rubygems_spec.rb index f4d0cebf62..bce0054220 100644 --- a/spec/unit/provider/package/rubygems_spec.rb +++ b/spec/unit/provider/package/rubygems_spec.rb @@ -39,23 +39,23 @@ describe Chef::Provider::Package::Rubygems::CurrentGemEnvironment do end it "determines the gem paths from the in memory rubygems" do - @gem_env.gem_paths.should == Gem.path + expect(@gem_env.gem_paths).to eq(Gem.path) end it "determines the installed versions of gems from Gem.source_index" do gems = [gemspec('rspec-core', Gem::Version.new('1.2.9')), gemspec('rspec-core', Gem::Version.new('1.3.0'))] if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.8.0') - Gem::Specification.should_receive(:find_all_by_name).with('rspec-core', Gem::Dependency.new('rspec-core').requirement).and_return(gems) + expect(Gem::Specification).to receive(:find_all_by_name).with('rspec-core', Gem::Dependency.new('rspec-core').requirement).and_return(gems) else - Gem.source_index.should_receive(:search).with(Gem::Dependency.new('rspec-core', nil)).and_return(gems) + expect(Gem.source_index).to receive(:search).with(Gem::Dependency.new('rspec-core', nil)).and_return(gems) end - @gem_env.installed_versions(Gem::Dependency.new('rspec-core', nil)).should == gems + expect(@gem_env.installed_versions(Gem::Dependency.new('rspec-core', nil))).to eq(gems) end it "determines the installed versions of gems from the source index (part2: the unmockening)" do expected = ['rspec-core', Gem::Version.new(RSpec::Core::Version::STRING)] actual = @gem_env.installed_versions(Gem::Dependency.new('rspec-core', nil)).map { |spec| [spec.name, spec.version] } - actual.should include(expected) + expect(actual).to include(expected) end it "yields to a block with an alternate source list set" do @@ -68,8 +68,8 @@ describe Chef::Provider::Package::Rubygems::CurrentGemEnvironment do end rescue RuntimeError end - sources_in_block.should == %w{http://gems.example.org} - Gem.sources.should == normal_sources + expect(sources_in_block).to eq(%w{http://gems.example.org}) + expect(Gem.sources).to eq(normal_sources) end it "it doesnt alter the gem sources if none are set" do @@ -82,29 +82,29 @@ describe Chef::Provider::Package::Rubygems::CurrentGemEnvironment do end rescue RuntimeError end - sources_in_block.should == normal_sources - Gem.sources.should == normal_sources + expect(sources_in_block).to eq(normal_sources) + expect(Gem.sources).to eq(normal_sources) end it "finds a matching gem candidate version" do dep = Gem::Dependency.new('rspec', '>= 0') dep_installer = Gem::DependencyInstaller.new - @gem_env.stub(:dependency_installer).and_return(dep_installer) + allow(@gem_env).to receive(:dependency_installer).and_return(dep_installer) latest = [[gemspec("rspec", Gem::Version.new("1.3.0")), "http://rubygems.org/"]] - dep_installer.should_receive(:find_gems_with_sources).with(dep).and_return(latest) - @gem_env.candidate_version_from_remote(Gem::Dependency.new('rspec', '>= 0')).should == Gem::Version.new('1.3.0') + expect(dep_installer).to receive(:find_gems_with_sources).with(dep).and_return(latest) + expect(@gem_env.candidate_version_from_remote(Gem::Dependency.new('rspec', '>= 0'))).to eq(Gem::Version.new('1.3.0')) end it "finds a matching gem candidate version on rubygems 2.0.0+" do dep = Gem::Dependency.new('rspec', '>= 0') dep_installer = Gem::DependencyInstaller.new - @gem_env.stub(:dependency_installer).and_return(dep_installer) + allow(@gem_env).to receive(:dependency_installer).and_return(dep_installer) best_gem = double("best gem match", :spec => gemspec("rspec", Gem::Version.new("1.3.0")), :source => "https://rubygems.org") available_set = double("Gem::AvailableSet test double") - available_set.should_receive(:pick_best!) - available_set.should_receive(:set).and_return([best_gem]) - dep_installer.should_receive(:find_gems_with_sources).with(dep).and_return(available_set) - @gem_env.candidate_version_from_remote(Gem::Dependency.new('rspec', '>= 0')).should == Gem::Version.new('1.3.0') + expect(available_set).to receive(:pick_best!) + expect(available_set).to receive(:set).and_return([best_gem]) + expect(dep_installer).to receive(:find_gems_with_sources).with(dep).and_return(available_set) + expect(@gem_env.candidate_version_from_remote(Gem::Dependency.new('rspec', '>= 0'))).to eq(Gem::Version.new('1.3.0')) end context "when rubygems was upgraded from 1.8->2.0" do @@ -121,7 +121,7 @@ describe Chef::Provider::Package::Rubygems::CurrentGemEnvironment do Gem.const_set(:Format, Object.new) @remove_gem_format = true end - Gem::Package.stub(:respond_to?).with(:open).and_return(false) + allow(Gem::Package).to receive(:respond_to?).with(:open).and_return(false) end after do @@ -132,8 +132,8 @@ describe Chef::Provider::Package::Rubygems::CurrentGemEnvironment do it "finds a matching gem candidate version on rubygems 2.0+ with some rubygems 1.8 code loaded" do package = double("Gem::Package", :spec => "a gemspec from package") - Gem::Package.should_receive(:new).with("/path/to/package.gem").and_return(package) - @gem_env.spec_from_file("/path/to/package.gem").should == "a gemspec from package" + expect(Gem::Package).to receive(:new).with("/path/to/package.gem").and_return(package) + expect(@gem_env.spec_from_file("/path/to/package.gem")).to eq("a gemspec from package") end end @@ -142,54 +142,54 @@ describe Chef::Provider::Package::Rubygems::CurrentGemEnvironment do dep = Gem::Dependency.new('rspec', '>= 0') latest = [] dep_installer = Gem::DependencyInstaller.new - @gem_env.stub(:dependency_installer).and_return(dep_installer) - dep_installer.should_receive(:find_gems_with_sources).with(dep).and_return(latest) - @gem_env.candidate_version_from_remote(Gem::Dependency.new('rspec', '>= 0')).should be_nil + allow(@gem_env).to receive(:dependency_installer).and_return(dep_installer) + expect(dep_installer).to receive(:find_gems_with_sources).with(dep).and_return(latest) + expect(@gem_env.candidate_version_from_remote(Gem::Dependency.new('rspec', '>= 0'))).to be_nil end it "finds a matching candidate version from a .gem file when the path to the gem is supplied" do location = CHEF_SPEC_DATA + '/gems/chef-integration-test-0.1.0.gem' - @gem_env.candidate_version_from_file(Gem::Dependency.new('chef-integration-test', '>= 0'), location).should == Gem::Version.new('0.1.0') - @gem_env.candidate_version_from_file(Gem::Dependency.new('chef-integration-test', '>= 0.2.0'), location).should be_nil + expect(@gem_env.candidate_version_from_file(Gem::Dependency.new('chef-integration-test', '>= 0'), location)).to eq(Gem::Version.new('0.1.0')) + expect(@gem_env.candidate_version_from_file(Gem::Dependency.new('chef-integration-test', '>= 0.2.0'), location)).to be_nil end it "finds a matching gem from a specific gemserver when explicit sources are given" do dep = Gem::Dependency.new('rspec', '>= 0') latest = [[gemspec("rspec", Gem::Version.new("1.3.0")), "http://rubygems.org/"]] - @gem_env.should_receive(:with_gem_sources).with('http://gems.example.com').and_yield + expect(@gem_env).to receive(:with_gem_sources).with('http://gems.example.com').and_yield dep_installer = Gem::DependencyInstaller.new - @gem_env.stub(:dependency_installer).and_return(dep_installer) - dep_installer.should_receive(:find_gems_with_sources).with(dep).and_return(latest) - @gem_env.candidate_version_from_remote(Gem::Dependency.new('rspec', '>=0'), 'http://gems.example.com').should == Gem::Version.new('1.3.0') + allow(@gem_env).to receive(:dependency_installer).and_return(dep_installer) + expect(dep_installer).to receive(:find_gems_with_sources).with(dep).and_return(latest) + expect(@gem_env.candidate_version_from_remote(Gem::Dependency.new('rspec', '>=0'), 'http://gems.example.com')).to eq(Gem::Version.new('1.3.0')) end it "installs a gem with a hash of options for the dependency installer" do dep_installer = Gem::DependencyInstaller.new - @gem_env.should_receive(:dependency_installer).with(:install_dir => '/foo/bar').and_return(dep_installer) - @gem_env.should_receive(:with_gem_sources).with('http://gems.example.com').and_yield - dep_installer.should_receive(:install).with(Gem::Dependency.new('rspec', '>= 0')) + expect(@gem_env).to receive(:dependency_installer).with(:install_dir => '/foo/bar').and_return(dep_installer) + expect(@gem_env).to receive(:with_gem_sources).with('http://gems.example.com').and_yield + expect(dep_installer).to receive(:install).with(Gem::Dependency.new('rspec', '>= 0')) @gem_env.install(Gem::Dependency.new('rspec', '>= 0'), :install_dir => '/foo/bar', :sources => ['http://gems.example.com']) end it "builds an uninstaller for a gem with options set to avoid requiring user input" do # default options for uninstaller should be: # :ignore => true, :executables => true - Gem::Uninstaller.should_receive(:new).with('rspec', :ignore => true, :executables => true) + expect(Gem::Uninstaller).to receive(:new).with('rspec', :ignore => true, :executables => true) @gem_env.uninstaller('rspec') end it "uninstalls all versions of a gem" do uninstaller = double('gem uninstaller') - uninstaller.should_receive(:uninstall) - @gem_env.should_receive(:uninstaller).with('rspec', :all => true).and_return(uninstaller) + expect(uninstaller).to receive(:uninstall) + expect(@gem_env).to receive(:uninstaller).with('rspec', :all => true).and_return(uninstaller) @gem_env.uninstall('rspec') end it "uninstalls a specific version of a gem" do uninstaller = double('gem uninstaller') - uninstaller.should_receive(:uninstall) - @gem_env.should_receive(:uninstaller).with('rspec', :version => '1.2.3').and_return(uninstaller) + expect(uninstaller).to receive(:uninstall) + expect(@gem_env).to receive(:uninstaller).with('rspec', :version => '1.2.3').and_return(uninstaller) @gem_env.uninstall('rspec', '1.2.3') end @@ -207,35 +207,35 @@ describe Chef::Provider::Package::Rubygems::AlternateGemEnvironment do it "determines the gem paths from shelling out to gem env" do gem_env_output = ['/path/to/gems', '/another/path/to/gems'].join(File::PATH_SEPARATOR) shell_out_result = OpenStruct.new(:stdout => gem_env_output) - @gem_env.should_receive(:shell_out!).with('/usr/weird/bin/gem env gempath').and_return(shell_out_result) - @gem_env.gem_paths.should == ['/path/to/gems', '/another/path/to/gems'] + expect(@gem_env).to receive(:shell_out!).with('/usr/weird/bin/gem env gempath').and_return(shell_out_result) + expect(@gem_env.gem_paths).to eq(['/path/to/gems', '/another/path/to/gems']) end it "caches the gempaths by gem_binary" do gem_env_output = ['/path/to/gems', '/another/path/to/gems'].join(File::PATH_SEPARATOR) shell_out_result = OpenStruct.new(:stdout => gem_env_output) - @gem_env.should_receive(:shell_out!).with('/usr/weird/bin/gem env gempath').and_return(shell_out_result) + expect(@gem_env).to receive(:shell_out!).with('/usr/weird/bin/gem env gempath').and_return(shell_out_result) expected = ['/path/to/gems', '/another/path/to/gems'] - @gem_env.gem_paths.should == ['/path/to/gems', '/another/path/to/gems'] - Chef::Provider::Package::Rubygems::AlternateGemEnvironment.gempath_cache['/usr/weird/bin/gem'].should == expected + expect(@gem_env.gem_paths).to eq(['/path/to/gems', '/another/path/to/gems']) + expect(Chef::Provider::Package::Rubygems::AlternateGemEnvironment.gempath_cache['/usr/weird/bin/gem']).to eq(expected) end it "uses the cached result for gem paths when available" do gem_env_output = ['/path/to/gems', '/another/path/to/gems'].join(File::PATH_SEPARATOR) shell_out_result = OpenStruct.new(:stdout => gem_env_output) - @gem_env.should_not_receive(:shell_out!) + expect(@gem_env).not_to receive(:shell_out!) expected = ['/path/to/gems', '/another/path/to/gems'] Chef::Provider::Package::Rubygems::AlternateGemEnvironment.gempath_cache['/usr/weird/bin/gem']= expected - @gem_env.gem_paths.should == ['/path/to/gems', '/another/path/to/gems'] + expect(@gem_env.gem_paths).to eq(['/path/to/gems', '/another/path/to/gems']) end it "builds the gems source index from the gem paths" do - @gem_env.stub(:gem_paths).and_return(['/path/to/gems', '/another/path/to/gems']) + allow(@gem_env).to receive(:gem_paths).and_return(['/path/to/gems', '/another/path/to/gems']) if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.8.0') @gem_env.gem_specification - Gem::Specification.dirs.should == [ '/path/to/gems/specifications', '/another/path/to/gems/specifications' ] + expect(Gem::Specification.dirs).to eq([ '/path/to/gems/specifications', '/another/path/to/gems/specifications' ]) else - Gem::SourceIndex.should_receive(:from_gems_in).with('/path/to/gems/specifications', '/another/path/to/gems/specifications') + expect(Gem::SourceIndex).to receive(:from_gems_in).with('/path/to/gems/specifications', '/another/path/to/gems/specifications') @gem_env.gem_source_index end end @@ -244,17 +244,17 @@ describe Chef::Provider::Package::Rubygems::AlternateGemEnvironment do gems = [gemspec('rspec', Gem::Version.new('1.2.9')), gemspec('rspec', Gem::Version.new('1.3.0'))] rspec_dep = Gem::Dependency.new('rspec', nil) if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.8.0') - @gem_env.stub(:gem_specification).and_return(Gem::Specification) - @gem_env.gem_specification.should_receive(:find_all_by_name).with(rspec_dep.name, rspec_dep.requirement).and_return(gems) + allow(@gem_env).to receive(:gem_specification).and_return(Gem::Specification) + expect(@gem_env.gem_specification).to receive(:find_all_by_name).with(rspec_dep.name, rspec_dep.requirement).and_return(gems) else - @gem_env.stub(:gem_source_index).and_return(Gem.source_index) - @gem_env.gem_source_index.should_receive(:search).with(rspec_dep).and_return(gems) + allow(@gem_env).to receive(:gem_source_index).and_return(Gem.source_index) + expect(@gem_env.gem_source_index).to receive(:search).with(rspec_dep).and_return(gems) end - @gem_env.installed_versions(Gem::Dependency.new('rspec', nil)).should == gems + expect(@gem_env.installed_versions(Gem::Dependency.new('rspec', nil))).to eq(gems) end it "determines the installed versions of gems from the source index (part2: the unmockening)" do - $stdout.stub(:write) + allow($stdout).to receive(:write) path_to_gem = if windows? `where gem`.split[1] else @@ -264,7 +264,7 @@ describe Chef::Provider::Package::Rubygems::AlternateGemEnvironment do gem_env = Chef::Provider::Package::Rubygems::AlternateGemEnvironment.new(path_to_gem) expected = ['rspec-core', Gem::Version.new(RSpec::Core::Version::STRING)] actual = gem_env.installed_versions(Gem::Dependency.new('rspec-core', nil)).map { |s| [s.name, s.version] } - actual.should include(expected) + expect(actual).to include(expected) end it "detects when the target gem environment is the jruby platform" do @@ -295,18 +295,18 @@ RubyGems Environment: - http://rubygems.org/ - http://gems.github.com/ JRUBY_GEM_ENV - @gem_env.should_receive(:shell_out!).with('/usr/weird/bin/gem env').and_return(double('jruby_gem_env', :stdout => gem_env_out)) + expect(@gem_env).to receive(:shell_out!).with('/usr/weird/bin/gem env').and_return(double('jruby_gem_env', :stdout => gem_env_out)) expected = ['ruby', Gem::Platform.new('universal-java-1.6')] - @gem_env.gem_platforms.should == expected + expect(@gem_env.gem_platforms).to eq(expected) # it should also cache the result - Chef::Provider::Package::Rubygems::AlternateGemEnvironment.platform_cache['/usr/weird/bin/gem'].should == expected + expect(Chef::Provider::Package::Rubygems::AlternateGemEnvironment.platform_cache['/usr/weird/bin/gem']).to eq(expected) end it "uses the cached result for gem platforms if available" do - @gem_env.should_not_receive(:shell_out!) + expect(@gem_env).not_to receive(:shell_out!) expected = ['ruby', Gem::Platform.new('universal-java-1.6')] Chef::Provider::Package::Rubygems::AlternateGemEnvironment.platform_cache['/usr/weird/bin/gem']= expected - @gem_env.gem_platforms.should == expected + expect(@gem_env.gem_platforms).to eq(expected) end it "uses the current gem platforms when the target env is not jruby" do @@ -337,9 +337,9 @@ RubyGems Environment: - http://rubygems.org/ - http://gems.github.com/ RBX_GEM_ENV - @gem_env.should_receive(:shell_out!).with('/usr/weird/bin/gem env').and_return(double('rbx_gem_env', :stdout => gem_env_out)) - @gem_env.gem_platforms.should == Gem.platforms - Chef::Provider::Package::Rubygems::AlternateGemEnvironment.platform_cache['/usr/weird/bin/gem'].should == Gem.platforms + expect(@gem_env).to receive(:shell_out!).with('/usr/weird/bin/gem env').and_return(double('rbx_gem_env', :stdout => gem_env_out)) + expect(@gem_env.gem_platforms).to eq(Gem.platforms) + expect(Chef::Provider::Package::Rubygems::AlternateGemEnvironment.platform_cache['/usr/weird/bin/gem']).to eq(Gem.platforms) end it "yields to a block while masquerading as a different gems platform" do @@ -352,8 +352,8 @@ RBX_GEM_ENV end rescue RuntimeError end - platforms_in_block.should == ['ruby', Gem::Platform.new('sparc64-java-1.7')] - Gem.platforms.should == original_platforms + expect(platforms_in_block).to eq(['ruby', Gem::Platform.new('sparc64-java-1.7')]) + expect(Gem.platforms).to eq(original_platforms) end end @@ -369,7 +369,7 @@ describe Chef::Provider::Package::Rubygems do @run_context = Chef::RunContext.new(@node, {}, @events) # We choose detect omnibus via RbConfig::CONFIG['bindir'] in Chef::Provider::Package::Rubygems.new - RbConfig::CONFIG.stub(:[]).with('bindir').and_return("/usr/bin/ruby") + allow(RbConfig::CONFIG).to receive(:[]).with('bindir').and_return("/usr/bin/ruby") @provider = Chef::Provider::Package::Rubygems.new(@new_resource, @run_context) end @@ -378,7 +378,7 @@ describe Chef::Provider::Package::Rubygems do it "target_version_already_installed? should return false so that we can search for candidates" do @provider.load_current_resource - @provider.target_version_already_installed?.should be_false + expect(@provider.target_version_already_installed?).to be_false end end @@ -387,74 +387,74 @@ describe Chef::Provider::Package::Rubygems do it "triggers a gem configuration load so a later one will not stomp its config values" do # ugly, is there a better way? - Gem.instance_variable_get(:@configuration).should_not be_nil + expect(Gem.instance_variable_get(:@configuration)).not_to be_nil end it "uses the CurrentGemEnvironment implementation when no gem_binary_path is provided" do - @provider.gem_env.should be_a_kind_of(Chef::Provider::Package::Rubygems::CurrentGemEnvironment) + expect(@provider.gem_env).to be_a_kind_of(Chef::Provider::Package::Rubygems::CurrentGemEnvironment) end it "uses the AlternateGemEnvironment implementation when a gem_binary_path is provided" do @new_resource.gem_binary('/usr/weird/bin/gem') provider = Chef::Provider::Package::Rubygems.new(@new_resource, @run_context) - provider.gem_env.gem_binary_location.should == '/usr/weird/bin/gem' + expect(provider.gem_env.gem_binary_location).to eq('/usr/weird/bin/gem') end it "searches for a gem binary when running on Omnibus on Unix" do platform_mock :unix do - RbConfig::CONFIG.stub(:[]).with('bindir').and_return("/opt/chef/embedded/bin") - ENV.stub(:[]).with('PATH').and_return("/usr/bin:/usr/sbin:/opt/chef/embedded/bin") - File.stub(:exists?).with('/usr/bin/gem').and_return(false) - File.stub(:exists?).with('/usr/sbin/gem').and_return(true) - File.stub(:exists?).with('/opt/chef/embedded/bin/gem').and_return(true) # should not get here + allow(RbConfig::CONFIG).to receive(:[]).with('bindir').and_return("/opt/chef/embedded/bin") + allow(ENV).to receive(:[]).with('PATH').and_return("/usr/bin:/usr/sbin:/opt/chef/embedded/bin") + allow(File).to receive(:exists?).with('/usr/bin/gem').and_return(false) + allow(File).to receive(:exists?).with('/usr/sbin/gem').and_return(true) + allow(File).to receive(:exists?).with('/opt/chef/embedded/bin/gem').and_return(true) # should not get here provider = Chef::Provider::Package::Rubygems.new(@new_resource, @run_context) - provider.gem_env.gem_binary_location.should == '/usr/sbin/gem' + expect(provider.gem_env.gem_binary_location).to eq('/usr/sbin/gem') end end it "searches for a gem binary when running on Omnibus on Windows" do platform_mock :windows do - RbConfig::CONFIG.stub(:[]).with('bindir').and_return("d:/opscode/chef/embedded/bin") - ENV.stub(:[]).with('PATH').and_return('C:\windows\system32;C:\windows;C:\Ruby186\bin;d:\opscode\chef\embedded\bin') - File.stub(:exists?).with('C:\\windows\\system32\\gem').and_return(false) - File.stub(:exists?).with('C:\\windows\\gem').and_return(false) - File.stub(:exists?).with('C:\\Ruby186\\bin\\gem').and_return(true) - File.stub(:exists?).with('d:\\opscode\\chef\\bin\\gem').and_return(false) # should not get here - File.stub(:exists?).with('d:\\opscode\\chef\\embedded\\bin\\gem').and_return(false) # should not get here + allow(RbConfig::CONFIG).to receive(:[]).with('bindir').and_return("d:/opscode/chef/embedded/bin") + allow(ENV).to receive(:[]).with('PATH').and_return('C:\windows\system32;C:\windows;C:\Ruby186\bin;d:\opscode\chef\embedded\bin') + allow(File).to receive(:exists?).with('C:\\windows\\system32\\gem').and_return(false) + allow(File).to receive(:exists?).with('C:\\windows\\gem').and_return(false) + allow(File).to receive(:exists?).with('C:\\Ruby186\\bin\\gem').and_return(true) + allow(File).to receive(:exists?).with('d:\\opscode\\chef\\bin\\gem').and_return(false) # should not get here + allow(File).to receive(:exists?).with('d:\\opscode\\chef\\embedded\\bin\\gem').and_return(false) # should not get here provider = Chef::Provider::Package::Rubygems.new(@new_resource, @run_context) - provider.gem_env.gem_binary_location.should == 'C:\Ruby186\bin\gem' + expect(provider.gem_env.gem_binary_location).to eq('C:\Ruby186\bin\gem') end end it "smites you when you try to use a hash of install options with an explicit gem binary" do @new_resource.gem_binary('/foo/bar') @new_resource.options(:fail => :burger) - lambda {Chef::Provider::Package::Rubygems.new(@new_resource, @run_context)}.should raise_error(ArgumentError) + expect {Chef::Provider::Package::Rubygems.new(@new_resource, @run_context)}.to raise_error(ArgumentError) end it "converts the new resource into a gem dependency" do - @provider.gem_dependency.should == Gem::Dependency.new('rspec-core', @spec_version) + expect(@provider.gem_dependency).to eq(Gem::Dependency.new('rspec-core', @spec_version)) @new_resource.version('~> 1.2.0') - @provider.gem_dependency.should == Gem::Dependency.new('rspec-core', '~> 1.2.0') + expect(@provider.gem_dependency).to eq(Gem::Dependency.new('rspec-core', '~> 1.2.0')) end describe "when determining the currently installed version" do it "sets the current version to the version specified by the new resource if that version is installed" do @provider.load_current_resource - @provider.current_resource.version.should == @spec_version + expect(@provider.current_resource.version).to eq(@spec_version) end it "sets the current version to the highest installed version if the requested version is not installed" do @new_resource.version('9000.0.2') @provider.load_current_resource - @provider.current_resource.version.should == @spec_version + expect(@provider.current_resource.version).to eq(@spec_version) end it "leaves the current version at nil if the package is not installed" do @new_resource.package_name("no-such-gem-should-exist-with-this-name") @provider.load_current_resource - @provider.current_resource.version.should be_nil + expect(@provider.current_resource.version).to be_nil end end @@ -463,23 +463,23 @@ describe Chef::Provider::Package::Rubygems do it "does not query for available versions when the current version is the target version" do @provider.current_resource = @new_resource.dup - @provider.candidate_version.should be_nil + expect(@provider.candidate_version).to be_nil end it "determines the candidate version by querying the remote gem servers" do @new_resource.source('http://mygems.example.com') version = Gem::Version.new(@spec_version) - @provider.gem_env.should_receive(:candidate_version_from_remote). + expect(@provider.gem_env).to receive(:candidate_version_from_remote). with(Gem::Dependency.new('rspec-core', @spec_version), "http://mygems.example.com"). and_return(version) - @provider.candidate_version.should == @spec_version + expect(@provider.candidate_version).to eq(@spec_version) end it "parses the gem's specification if the requested source is a file" do @new_resource.package_name('chef-integration-test') @new_resource.version('>= 0') @new_resource.source(CHEF_SPEC_DATA + '/gems/chef-integration-test-0.1.0.gem') - @provider.candidate_version.should == '0.1.0' + expect(@provider.candidate_version).to eq('0.1.0') end end @@ -489,56 +489,56 @@ describe Chef::Provider::Package::Rubygems do @current_resource = Chef::Resource::GemPackage.new('rspec-core') @provider.current_resource = @current_resource @gem_dep = Gem::Dependency.new('rspec-core', @spec_version) - @provider.stub(:load_current_resource) + allow(@provider).to receive(:load_current_resource) end describe "in the current gem environment" do it "installs the gem via the gems api when no explicit options are used" do - @provider.gem_env.should_receive(:install).with(@gem_dep, :sources => nil) - @provider.action_install.should be_true + expect(@provider.gem_env).to receive(:install).with(@gem_dep, :sources => nil) + expect(@provider.action_install).to be_true end it "installs the gem via the gems api when a remote source is provided" do @new_resource.source('http://gems.example.org') sources = ['http://gems.example.org'] - @provider.gem_env.should_receive(:install).with(@gem_dep, :sources => sources) - @provider.action_install.should be_true + expect(@provider.gem_env).to receive(:install).with(@gem_dep, :sources => sources) + expect(@provider.action_install).to be_true end it "installs the gem from file via the gems api when no explicit options are used" do @new_resource.source(CHEF_SPEC_DATA + '/gems/chef-integration-test-0.1.0.gem') - @provider.gem_env.should_receive(:install).with(CHEF_SPEC_DATA + '/gems/chef-integration-test-0.1.0.gem') - @provider.action_install.should be_true + expect(@provider.gem_env).to receive(:install).with(CHEF_SPEC_DATA + '/gems/chef-integration-test-0.1.0.gem') + expect(@provider.action_install).to be_true end it "installs the gem from file via the gems api when the package is a path and the source is nil" do @new_resource = Chef::Resource::GemPackage.new(CHEF_SPEC_DATA + '/gems/chef-integration-test-0.1.0.gem') @provider = Chef::Provider::Package::Rubygems.new(@new_resource, @run_context) @provider.current_resource = @current_resource - @new_resource.source.should == CHEF_SPEC_DATA + '/gems/chef-integration-test-0.1.0.gem' - @provider.gem_env.should_receive(:install).with(CHEF_SPEC_DATA + '/gems/chef-integration-test-0.1.0.gem') - @provider.action_install.should be_true + expect(@new_resource.source).to eq(CHEF_SPEC_DATA + '/gems/chef-integration-test-0.1.0.gem') + expect(@provider.gem_env).to receive(:install).with(CHEF_SPEC_DATA + '/gems/chef-integration-test-0.1.0.gem') + expect(@provider.action_install).to be_true end # this catches 'gem_package "foo"' when "./foo" is a file in the cwd, and instead of installing './foo' it fetches the remote gem it "installs the gem via the gems api, when the package has no file separator characters in it, but a matching file exists in cwd" do - ::File.stub(:exists?).and_return(true) + allow(::File).to receive(:exists?).and_return(true) @new_resource.package_name('rspec-core') - @provider.gem_env.should_receive(:install).with(@gem_dep, :sources => nil) - @provider.action_install.should be_true + expect(@provider.gem_env).to receive(:install).with(@gem_dep, :sources => nil) + expect(@provider.action_install).to be_true end it "installs the gem by shelling out when options are provided as a String" do @new_resource.options('-i /alt/install/location') expected ="gem install rspec-core -q --no-rdoc --no-ri -v \"#{@spec_version}\" -i /alt/install/location" - @provider.should_receive(:shell_out!).with(expected, :env => nil) - @provider.action_install.should be_true + expect(@provider).to receive(:shell_out!).with(expected, :env => nil) + expect(@provider.action_install).to be_true end it "installs the gem via the gems api when options are given as a Hash" do @new_resource.options(:install_dir => '/alt/install/location') - @provider.gem_env.should_receive(:install).with(@gem_dep, :sources => nil, :install_dir => '/alt/install/location') - @provider.action_install.should be_true + expect(@provider.gem_env).to receive(:install).with(@gem_dep, :sources => nil, :install_dir => '/alt/install/location') + expect(@provider.action_install).to be_true end describe "at a specific version" do @@ -547,24 +547,24 @@ describe Chef::Provider::Package::Rubygems do end it "installs the gem via the gems api" do - @provider.gem_env.should_receive(:install).with(@gem_dep, :sources => nil) - @provider.action_install.should be_true + expect(@provider.gem_env).to receive(:install).with(@gem_dep, :sources => nil) + expect(@provider.action_install).to be_true end end describe "at version specified with comparison operator" do it "skips install if current version satisifies requested version" do - @current_resource.stub(:version).and_return("2.3.3") - @new_resource.stub(:version).and_return(">=2.3.0") + allow(@current_resource).to receive(:version).and_return("2.3.3") + allow(@new_resource).to receive(:version).and_return(">=2.3.0") - @provider.gem_env.should_not_receive(:install) + expect(@provider.gem_env).not_to receive(:install) @provider.action_install end it "allows user to specify gem version with fuzzy operator" do - @current_resource.stub(:version).and_return("2.3.3") - @new_resource.stub(:version).and_return("~>2.3.0") + allow(@current_resource).to receive(:version).and_return("2.3.3") + allow(@new_resource).to receive(:version).and_return("~>2.3.0") - @provider.gem_env.should_not_receive(:install) + expect(@provider.gem_env).not_to receive(:install) @provider.action_install end end @@ -573,16 +573,16 @@ describe Chef::Provider::Package::Rubygems do describe "in an alternate gem environment" do it "installs the gem by shelling out to gem install" do @new_resource.gem_binary('/usr/weird/bin/gem') - @provider.should_receive(:shell_out!).with("/usr/weird/bin/gem install rspec-core -q --no-rdoc --no-ri -v \"#{@spec_version}\"", :env=>nil) - @provider.action_install.should be_true + expect(@provider).to receive(:shell_out!).with("/usr/weird/bin/gem install rspec-core -q --no-rdoc --no-ri -v \"#{@spec_version}\"", :env=>nil) + expect(@provider.action_install).to be_true end it "installs the gem from file by shelling out to gem install" do @new_resource.gem_binary('/usr/weird/bin/gem') @new_resource.source(CHEF_SPEC_DATA + '/gems/chef-integration-test-0.1.0.gem') @new_resource.version('>= 0') - @provider.should_receive(:shell_out!).with("/usr/weird/bin/gem install #{CHEF_SPEC_DATA}/gems/chef-integration-test-0.1.0.gem -q --no-rdoc --no-ri -v \">= 0\"", :env=>nil) - @provider.action_install.should be_true + expect(@provider).to receive(:shell_out!).with("/usr/weird/bin/gem install #{CHEF_SPEC_DATA}/gems/chef-integration-test-0.1.0.gem -q --no-rdoc --no-ri -v \">= 0\"", :env=>nil) + expect(@provider.action_install).to be_true end it "installs the gem from file by shelling out to gem install when the package is a path and the source is nil" do @@ -591,9 +591,9 @@ describe Chef::Provider::Package::Rubygems do @provider.current_resource = @current_resource @new_resource.gem_binary('/usr/weird/bin/gem') @new_resource.version('>= 0') - @new_resource.source.should == CHEF_SPEC_DATA + '/gems/chef-integration-test-0.1.0.gem' - @provider.should_receive(:shell_out!).with("/usr/weird/bin/gem install #{CHEF_SPEC_DATA}/gems/chef-integration-test-0.1.0.gem -q --no-rdoc --no-ri -v \">= 0\"", :env=>nil) - @provider.action_install.should be_true + expect(@new_resource.source).to eq(CHEF_SPEC_DATA + '/gems/chef-integration-test-0.1.0.gem') + expect(@provider).to receive(:shell_out!).with("/usr/weird/bin/gem install #{CHEF_SPEC_DATA}/gems/chef-integration-test-0.1.0.gem -q --no-rdoc --no-ri -v \">= 0\"", :env=>nil) + expect(@provider.action_install).to be_true end end @@ -611,32 +611,32 @@ describe Chef::Provider::Package::Rubygems do describe "in the current gem environment" do it "uninstalls via the api when no explicit options are used" do # pre-reqs for action_remove to actually remove the package: - @provider.new_resource.version.should be_nil - @provider.current_resource.version.should_not be_nil + expect(@provider.new_resource.version).to be_nil + expect(@provider.current_resource.version).not_to be_nil # the behavior we're testing: - @provider.gem_env.should_receive(:uninstall).with('rspec', nil) + expect(@provider.gem_env).to receive(:uninstall).with('rspec', nil) @provider.action_remove end it "uninstalls via the api when options are given as a Hash" do # pre-reqs for action_remove to actually remove the package: - @provider.new_resource.version.should be_nil - @provider.current_resource.version.should_not be_nil + expect(@provider.new_resource.version).to be_nil + expect(@provider.current_resource.version).not_to be_nil # the behavior we're testing: @new_resource.options(:install_dir => '/alt/install/location') - @provider.gem_env.should_receive(:uninstall).with('rspec', nil, :install_dir => '/alt/install/location') + expect(@provider.gem_env).to receive(:uninstall).with('rspec', nil, :install_dir => '/alt/install/location') @provider.action_remove end it "uninstalls via the gem command when options are given as a String" do @new_resource.options('-i /alt/install/location') - @provider.should_receive(:shell_out!).with("gem uninstall rspec -q -x -I -a -i /alt/install/location", :env=>nil) + expect(@provider).to receive(:shell_out!).with("gem uninstall rspec -q -x -I -a -i /alt/install/location", :env=>nil) @provider.action_remove end it "uninstalls a specific version of a gem when a version is provided" do @new_resource.version('1.2.3') - @provider.gem_env.should_receive(:uninstall).with('rspec', '1.2.3') + expect(@provider.gem_env).to receive(:uninstall).with('rspec', '1.2.3') @provider.action_remove end end @@ -644,7 +644,7 @@ describe Chef::Provider::Package::Rubygems do describe "in an alternate gem environment" do it "uninstalls via the gem command" do @new_resource.gem_binary('/usr/weird/bin/gem') - @provider.should_receive(:shell_out!).with("/usr/weird/bin/gem uninstall rspec -q -x -I -a", :env=>nil) + expect(@provider).to receive(:shell_out!).with("/usr/weird/bin/gem uninstall rspec -q -x -I -a", :env=>nil) @provider.action_remove end end diff --git a/spec/unit/provider/package/smartos_spec.rb b/spec/unit/provider/package/smartos_spec.rb index 1c690acbf5..db39589b85 100644 --- a/spec/unit/provider/package/smartos_spec.rb +++ b/spec/unit/provider/package/smartos_spec.rb @@ -31,7 +31,7 @@ describe Chef::Provider::Package::SmartOS, "load_current_resource" do @status = double("Status", :exitstatus => 0) @provider = Chef::Provider::Package::SmartOS.new(@new_resource, @run_context) - Chef::Resource::Package.stub(:new).and_return(@current_resource) + allow(Chef::Resource::Package).to receive(:new).and_return(@current_resource) @stdin = StringIO.new @stdout = "varnish-2.1.5nb2\n" @stderr = StringIO.new @@ -42,28 +42,28 @@ describe Chef::Provider::Package::SmartOS, "load_current_resource" do describe "when loading current resource" do it "should create a current resource with the name of the new_resource" do - @provider.should_receive(:shell_out!).and_return(@shell_out) - Chef::Resource::Package.should_receive(:new).and_return(@current_resource) + expect(@provider).to receive(:shell_out!).and_return(@shell_out) + expect(Chef::Resource::Package).to receive(:new).and_return(@current_resource) @provider.load_current_resource end it "should set the current resource package name" do - @provider.should_receive(:shell_out!).and_return(@shell_out) - @current_resource.should_receive(:package_name).with(@new_resource.package_name) + expect(@provider).to receive(:shell_out!).and_return(@shell_out) + expect(@current_resource).to receive(:package_name).with(@new_resource.package_name) @provider.load_current_resource end it "should set the installed version if it is installed" do - @provider.should_receive(:shell_out!).and_return(@shell_out) + expect(@provider).to receive(:shell_out!).and_return(@shell_out) @provider.load_current_resource - @current_resource.version.should == "2.1.5nb2" + expect(@current_resource.version).to eq("2.1.5nb2") end it "should set the installed version to nil if it's not installed" do out = OpenStruct.new(:stdout => nil) - @provider.should_receive(:shell_out!).and_return(out) + expect(@provider).to receive(:shell_out!).and_return(out) @provider.load_current_resource - @current_resource.version.should == nil + expect(@current_resource.version).to eq(nil) end @@ -72,18 +72,18 @@ describe Chef::Provider::Package::SmartOS, "load_current_resource" do describe "candidate_version" do it "should return the candidate_version variable if already setup" do @provider.candidate_version = "2.1.1" - @provider.should_not_receive(:shell_out!) + expect(@provider).not_to receive(:shell_out!) @provider.candidate_version end it "should lookup the candidate_version if the variable is not already set" do search = double() - search.should_receive(:each_line). + expect(search).to receive(:each_line). and_yield("something-varnish-1.1.1 something varnish like\n"). and_yield("varnish-2.3.4 actual varnish\n") @shell_out = double('shell_out!', :stdout => search) - @provider.should_receive(:shell_out!).with('/opt/local/bin/pkgin se varnish', :env => nil, :returns => [0,1]).and_return(@shell_out) - @provider.candidate_version.should == "2.3.4" + expect(@provider).to receive(:shell_out!).with('/opt/local/bin/pkgin se varnish', :env => nil, :returns => [0,1]).and_return(@shell_out) + expect(@provider.candidate_version).to eq("2.3.4") end end @@ -91,8 +91,8 @@ describe Chef::Provider::Package::SmartOS, "load_current_resource" do it "run pkgin and install the package" do out = OpenStruct.new(:stdout => nil) - @provider.should_receive(:shell_out!).with("/opt/local/sbin/pkg_info -E \"varnish*\"", {:env => nil, :returns=>[0,1]}).and_return(@shell_out) - @provider.should_receive(:shell_out!).with("/opt/local/bin/pkgin -y install varnish-2.1.5nb2", {:env=>nil}).and_return(out) + expect(@provider).to receive(:shell_out!).with("/opt/local/sbin/pkg_info -E \"varnish*\"", {:env => nil, :returns=>[0,1]}).and_return(@shell_out) + expect(@provider).to receive(:shell_out!).with("/opt/local/bin/pkgin -y install varnish-2.1.5nb2", {:env=>nil}).and_return(out) @provider.load_current_resource @provider.install_package("varnish", "2.1.5nb2") end diff --git a/spec/unit/provider/package/solaris_spec.rb b/spec/unit/provider/package/solaris_spec.rb index d83ccbdf06..8438202576 100644 --- a/spec/unit/provider/package/solaris_spec.rb +++ b/spec/unit/provider/package/solaris_spec.rb @@ -27,7 +27,7 @@ describe Chef::Provider::Package::Solaris do @new_resource.source("/tmp/bash.pkg") @provider = Chef::Provider::Package::Solaris.new(@new_resource, @run_context) - ::File.stub(:exists?).and_return(true) + allow(::File).to receive(:exists?).and_return(true) end describe "assessing the current package status" do @@ -50,119 +50,119 @@ PKGINFO end it "should create a current resource with the name of new_resource" do - @provider.stub(:popen4).and_return(@status) + allow(@provider).to receive(:popen4).and_return(@status) @provider.load_current_resource - @provider.current_resource.name.should == "SUNWbash" + expect(@provider.current_resource.name).to eq("SUNWbash") end it "should set the current reource package name to the new resource package name" do - @provider.stub(:popen4).and_return(@status) + allow(@provider).to receive(:popen4).and_return(@status) @provider.load_current_resource - @provider.current_resource.package_name.should == "SUNWbash" + expect(@provider.current_resource.package_name).to eq("SUNWbash") end it "should raise an exception if a source is supplied but not found" do - @provider.stub(:popen4).and_return(@status) - ::File.stub(:exists?).and_return(false) + allow(@provider).to receive(:popen4).and_return(@status) + allow(::File).to receive(:exists?).and_return(false) @provider.define_resource_requirements @provider.load_current_resource - lambda { @provider.process_resource_requirements }.should raise_error(Chef::Exceptions::Package) + expect { @provider.process_resource_requirements }.to raise_error(Chef::Exceptions::Package) end it "should get the source package version from pkginfo if provided" do @stdout = StringIO.new(@pkginfo) @stdin, @stderr = StringIO.new, StringIO.new - @provider.should_receive(:popen4).with("pkginfo -l -d /tmp/bash.pkg SUNWbash").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) - @provider.should_receive(:popen4).with("pkginfo -l SUNWbash").and_return(@status) + expect(@provider).to receive(:popen4).with("pkginfo -l -d /tmp/bash.pkg SUNWbash").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + expect(@provider).to receive(:popen4).with("pkginfo -l SUNWbash").and_return(@status) @provider.load_current_resource - @provider.current_resource.package_name.should == "SUNWbash" - @new_resource.version.should == "11.10.0,REV=2005.01.08.05.16" + expect(@provider.current_resource.package_name).to eq("SUNWbash") + expect(@new_resource.version).to eq("11.10.0,REV=2005.01.08.05.16") end it "should return the current version installed if found by pkginfo" do @stdout = StringIO.new(@pkginfo) @stdin, @stderr = StringIO.new, StringIO.new - @provider.should_receive(:popen4).with("pkginfo -l -d /tmp/bash.pkg SUNWbash").and_return(@status) - @provider.should_receive(:popen4).with("pkginfo -l SUNWbash").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + expect(@provider).to receive(:popen4).with("pkginfo -l -d /tmp/bash.pkg SUNWbash").and_return(@status) + expect(@provider).to receive(:popen4).with("pkginfo -l SUNWbash").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) @provider.load_current_resource - @provider.current_resource.version.should == "11.10.0,REV=2005.01.08.05.16" + expect(@provider.current_resource.version).to eq("11.10.0,REV=2005.01.08.05.16") end it "should raise an exception if the source is not set but we are installing" do @new_resource = Chef::Resource::Package.new("SUNWbash") @provider = Chef::Provider::Package::Solaris.new(@new_resource, @run_context) - @provider.stub(:popen4).and_return(@status) - lambda { @provider.run_action(:install) }.should raise_error(Chef::Exceptions::Package) + allow(@provider).to receive(:popen4).and_return(@status) + expect { @provider.run_action(:install) }.to raise_error(Chef::Exceptions::Package) end it "should raise an exception if pkginfo fails to run" do @status = double("Status", :exitstatus => -1) - @provider.stub(:popen4).and_return(@status) - lambda { @provider.load_current_resource }.should raise_error(Chef::Exceptions::Package) + allow(@provider).to receive(:popen4).and_return(@status) + expect { @provider.load_current_resource }.to raise_error(Chef::Exceptions::Package) end it "should return a current resource with a nil version if the package is not found" do @stdout = StringIO.new - @provider.should_receive(:popen4).with("pkginfo -l -d /tmp/bash.pkg SUNWbash").and_return(@status) - @provider.should_receive(:popen4).with("pkginfo -l SUNWbash").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + expect(@provider).to receive(:popen4).with("pkginfo -l -d /tmp/bash.pkg SUNWbash").and_return(@status) + expect(@provider).to receive(:popen4).with("pkginfo -l SUNWbash").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) @provider.load_current_resource - @provider.current_resource.version.should be_nil + expect(@provider.current_resource.version).to be_nil end end describe "candidate_version" do it "should return the candidate_version variable if already setup" do @provider.candidate_version = "11.10.0,REV=2005.01.08.05.16" - @provider.should_not_receive(:popen4) + expect(@provider).not_to receive(:popen4) @provider.candidate_version end it "should lookup the candidate_version if the variable is not already set" do @status = double("Status", :exitstatus => 0) - @provider.stub(:popen4).and_return(@status) - @provider.should_receive(:popen4) + allow(@provider).to receive(:popen4).and_return(@status) + expect(@provider).to receive(:popen4) @provider.candidate_version end it "should throw and exception if the exitstatus is not 0" do @status = double("Status", :exitstatus => 1) - @provider.stub(:popen4).and_return(@status) - lambda { @provider.candidate_version }.should raise_error(Chef::Exceptions::Package) + allow(@provider).to receive(:popen4).and_return(@status) + expect { @provider.candidate_version }.to raise_error(Chef::Exceptions::Package) end end describe "install and upgrade" do it "should run pkgadd -n -d with the package source to install" do - @provider.should_receive(:shell_out!).with("pkgadd -n -d /tmp/bash.pkg all") + expect(@provider).to receive(:shell_out!).with("pkgadd -n -d /tmp/bash.pkg all") @provider.install_package("SUNWbash", "11.10.0,REV=2005.01.08.05.16") end it "should run pkgadd -n -d when the package is a path to install" do @new_resource = Chef::Resource::Package.new("/tmp/bash.pkg") @provider = Chef::Provider::Package::Solaris.new(@new_resource, @run_context) - @new_resource.source.should == "/tmp/bash.pkg" - @provider.should_receive(:shell_out!).with("pkgadd -n -d /tmp/bash.pkg all") + expect(@new_resource.source).to eq("/tmp/bash.pkg") + expect(@provider).to receive(:shell_out!).with("pkgadd -n -d /tmp/bash.pkg all") @provider.install_package("/tmp/bash.pkg", "11.10.0,REV=2005.01.08.05.16") end it "should run pkgadd -n -a /tmp/myadmin -d with the package options -a /tmp/myadmin" do - @new_resource.stub(:options).and_return("-a /tmp/myadmin") - @provider.should_receive(:shell_out!).with("pkgadd -n -a /tmp/myadmin -d /tmp/bash.pkg all") + allow(@new_resource).to receive(:options).and_return("-a /tmp/myadmin") + expect(@provider).to receive(:shell_out!).with("pkgadd -n -a /tmp/myadmin -d /tmp/bash.pkg all") @provider.install_package("SUNWbash", "11.10.0,REV=2005.01.08.05.16") end end describe "remove" do it "should run pkgrm -n to remove the package" do - @provider.should_receive(:shell_out!).with("pkgrm -n SUNWbash") + expect(@provider).to receive(:shell_out!).with("pkgrm -n SUNWbash") @provider.remove_package("SUNWbash", "11.10.0,REV=2005.01.08.05.16") end it "should run pkgrm -n -a /tmp/myadmin with options -a /tmp/myadmin" do - @new_resource.stub(:options).and_return("-a /tmp/myadmin") - @provider.should_receive(:shell_out!).with("pkgrm -n -a /tmp/myadmin SUNWbash") + allow(@new_resource).to receive(:options).and_return("-a /tmp/myadmin") + expect(@provider).to receive(:shell_out!).with("pkgrm -n -a /tmp/myadmin SUNWbash") @provider.remove_package("SUNWbash", "11.10.0,REV=2005.01.08.05.16") end diff --git a/spec/unit/provider/package/windows/msi_spec.rb b/spec/unit/provider/package/windows/msi_spec.rb index c8a63ad066..e539bbbb79 100644 --- a/spec/unit/provider/package/windows/msi_spec.rb +++ b/spec/unit/provider/package/windows/msi_spec.rb @@ -37,15 +37,15 @@ describe Chef::Provider::Package::Windows::MSI, :windows_only do describe "installed_version" do it "returns the installed version" do - provider.stub(:get_product_property).and_return("{23170F69-40C1-2702-0920-000001000000}") - provider.stub(:get_installed_version).with("{23170F69-40C1-2702-0920-000001000000}").and_return("3.14159.1337.42") + allow(provider).to receive(:get_product_property).and_return("{23170F69-40C1-2702-0920-000001000000}") + allow(provider).to receive(:get_installed_version).with("{23170F69-40C1-2702-0920-000001000000}").and_return("3.14159.1337.42") expect(provider.installed_version).to eql("3.14159.1337.42") end end describe "package_version" do it "returns the version of a package" do - provider.stub(:get_product_property).with(/calculator.msi$/, "ProductVersion").and_return(42) + allow(provider).to receive(:get_product_property).with(/calculator.msi$/, "ProductVersion").and_return(42) expect(provider.package_version).to eql(42) end end diff --git a/spec/unit/provider/package/windows_spec.rb b/spec/unit/provider/package/windows_spec.rb index b4ababb243..5ab84e7ac7 100644 --- a/spec/unit/provider/package/windows_spec.rb +++ b/spec/unit/provider/package/windows_spec.rb @@ -27,8 +27,8 @@ describe Chef::Provider::Package::Windows, :windows_only do describe "load_current_resource" do before(:each) do - Chef::Util::PathHelper.stub(:validate_path) - provider.stub(:package_provider).and_return(double('package_provider', + allow(Chef::Util::PathHelper).to receive(:validate_path) + allow(provider).to receive(:package_provider).and_return(double('package_provider', :installed_version => "1.0", :package_version => "2.0")) end @@ -56,12 +56,12 @@ describe Chef::Provider::Package::Windows, :windows_only do describe "package_provider" do it "sets the package provider to MSI if the the installer type is :msi" do - provider.stub(:installer_type).and_return(:msi) + allow(provider).to receive(:installer_type).and_return(:msi) expect(provider.package_provider).to be_a(Chef::Provider::Package::Windows::MSI) end it "raises an error if the installer_type is unknown" do - provider.stub(:installer_type).and_return(:apt_for_windows) + allow(provider).to receive(:installer_type).and_return(:apt_for_windows) expect { provider.package_provider }.to raise_error end end diff --git a/spec/unit/provider/package/yum_spec.rb b/spec/unit/provider/package/yum_spec.rb index 9b3b6b60e0..0d2a44f3ae 100644 --- a/spec/unit/provider/package/yum_spec.rb +++ b/spec/unit/provider/package/yum_spec.rb @@ -37,7 +37,7 @@ describe Chef::Provider::Package::Yum do :package_repository => "base", :disable_extra_repo_control => true ) - Chef::Provider::Package::Yum::YumCache.stub(:instance).and_return(@yum_cache) + allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache) @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) @pid = double("PID") end @@ -45,32 +45,32 @@ describe Chef::Provider::Package::Yum do describe "when loading the current system state" do it "should create a current resource with the name of the new_resource" do @provider.load_current_resource - @provider.current_resource.name.should == "cups" + expect(@provider.current_resource.name).to eq("cups") end it "should set the current resources package name to the new resources package name" do @provider.load_current_resource - @provider.current_resource.package_name.should == "cups" + expect(@provider.current_resource.package_name).to eq("cups") end it "should set the installed version to nil on the current resource if no installed package" do - @yum_cache.stub(:installed_version).and_return(nil) + allow(@yum_cache).to receive(:installed_version).and_return(nil) @provider.load_current_resource - @provider.current_resource.version.should be_nil + expect(@provider.current_resource.version).to be_nil end it "should set the installed version if yum has one" do @provider.load_current_resource - @provider.current_resource.version.should == "1.2.4-11.18.el5" + expect(@provider.current_resource.version).to eq("1.2.4-11.18.el5") end it "should set the candidate version if yum info has one" do @provider.load_current_resource - @provider.candidate_version.should eql("1.2.4-11.18.el5_2.3") + expect(@provider.candidate_version).to eql("1.2.4-11.18.el5_2.3") end it "should return the current resouce" do - @provider.load_current_resource.should eql(@provider.current_resource) + expect(@provider.load_current_resource).to eql(@provider.current_resource) end describe "when arch in package_name" do @@ -79,11 +79,11 @@ describe Chef::Provider::Package::Yum do @yum_cache = double( 'Chef::Provider::Yum::YumCache' ) - @yum_cache.stub(:installed_version) do |package_name, arch| + allow(@yum_cache).to receive(:installed_version) do |package_name, arch| # nothing installed for package_name/new_package_name nil end - @yum_cache.stub(:candidate_version) do |package_name, arch| + allow(@yum_cache).to receive(:candidate_version) do |package_name, arch| if package_name == "testing.noarch" || package_name == "testing.more.noarch" nil # candidate for new_package_name @@ -91,21 +91,21 @@ describe Chef::Provider::Package::Yum do "1.1" end end - @yum_cache.stub(:package_available?).and_return(true) - @yum_cache.stub(:disable_extra_repo_control).and_return(true) - Chef::Provider::Package::Yum::YumCache.stub(:instance).and_return(@yum_cache) + allow(@yum_cache).to receive(:package_available?).and_return(true) + allow(@yum_cache).to receive(:disable_extra_repo_control).and_return(true) + allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache) @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) @provider.load_current_resource - @provider.new_resource.package_name.should == "testing" - @provider.new_resource.arch.should == "noarch" - @provider.arch.should == "noarch" + expect(@provider.new_resource.package_name).to eq("testing") + expect(@provider.new_resource.arch).to eq("noarch") + expect(@provider.arch).to eq("noarch") @new_resource = Chef::Resource::YumPackage.new('testing.more.noarch') @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) @provider.load_current_resource - @provider.new_resource.package_name.should == "testing.more" - @provider.new_resource.arch.should == "noarch" - @provider.arch.should == "noarch" + expect(@provider.new_resource.package_name).to eq("testing.more") + expect(@provider.new_resource.arch).to eq("noarch") + expect(@provider.arch).to eq("noarch") end it "should not set the arch when an existing package_name is found" do @@ -113,7 +113,7 @@ describe Chef::Provider::Package::Yum do @yum_cache = double( 'Chef::Provider::Yum::YumCache' ) - @yum_cache.stub(:installed_version) do |package_name, arch| + allow(@yum_cache).to receive(:installed_version) do |package_name, arch| # installed for package_name if package_name == "testing.beta3" || package_name == "testing.beta3.more" "1.1" @@ -121,26 +121,26 @@ describe Chef::Provider::Package::Yum do nil end end - @yum_cache.stub(:candidate_version) do |package_name, arch| + allow(@yum_cache).to receive(:candidate_version) do |package_name, arch| # no candidate for package_name/new_package_name nil end - @yum_cache.stub(:package_available?).and_return(true) - @yum_cache.stub(:disable_extra_repo_control).and_return(true) - Chef::Provider::Package::Yum::YumCache.stub(:instance).and_return(@yum_cache) + allow(@yum_cache).to receive(:package_available?).and_return(true) + allow(@yum_cache).to receive(:disable_extra_repo_control).and_return(true) + allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache) @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) # annoying side effect of the fun stub'ing above @provider.load_current_resource - @provider.new_resource.package_name.should == "testing.beta3" - @provider.new_resource.arch.should == nil - @provider.arch.should == nil + expect(@provider.new_resource.package_name).to eq("testing.beta3") + expect(@provider.new_resource.arch).to eq(nil) + expect(@provider.arch).to eq(nil) @new_resource = Chef::Resource::YumPackage.new('testing.beta3.more') @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) @provider.load_current_resource - @provider.new_resource.package_name.should == "testing.beta3.more" - @provider.new_resource.arch.should == nil - @provider.arch.should == nil + expect(@provider.new_resource.package_name).to eq("testing.beta3.more") + expect(@provider.new_resource.arch).to eq(nil) + expect(@provider.arch).to eq(nil) end it "should not set the arch when no existing package_name or new_package_name+new_arch is found" do @@ -148,29 +148,29 @@ describe Chef::Provider::Package::Yum do @yum_cache = double( 'Chef::Provider::Yum::YumCache' ) - @yum_cache.stub(:installed_version) do |package_name, arch| + allow(@yum_cache).to receive(:installed_version) do |package_name, arch| # nothing installed for package_name/new_package_name nil end - @yum_cache.stub(:candidate_version) do |package_name, arch| + allow(@yum_cache).to receive(:candidate_version) do |package_name, arch| # no candidate for package_name/new_package_name nil end - @yum_cache.stub(:package_available?).and_return(true) - @yum_cache.stub(:disable_extra_repo_control).and_return(true) - Chef::Provider::Package::Yum::YumCache.stub(:instance).and_return(@yum_cache) + allow(@yum_cache).to receive(:package_available?).and_return(true) + allow(@yum_cache).to receive(:disable_extra_repo_control).and_return(true) + allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache) @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) @provider.load_current_resource - @provider.new_resource.package_name.should == "testing.beta3" - @provider.new_resource.arch.should == nil - @provider.arch.should == nil + expect(@provider.new_resource.package_name).to eq("testing.beta3") + expect(@provider.new_resource.arch).to eq(nil) + expect(@provider.arch).to eq(nil) @new_resource = Chef::Resource::YumPackage.new('testing.beta3.more') @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) @provider.load_current_resource - @provider.new_resource.package_name.should == "testing.beta3.more" - @provider.new_resource.arch.should == nil - @provider.arch.should == nil + expect(@provider.new_resource.package_name).to eq("testing.beta3.more") + expect(@provider.new_resource.arch).to eq(nil) + expect(@provider.arch).to eq(nil) end it "should ensure it doesn't clobber an existing arch if passed" do @@ -179,11 +179,11 @@ describe Chef::Provider::Package::Yum do @yum_cache = double( 'Chef::Provider::Yum::YumCache' ) - @yum_cache.stub(:installed_version) do |package_name, arch| + allow(@yum_cache).to receive(:installed_version) do |package_name, arch| # nothing installed for package_name/new_package_name nil end - @yum_cache.stub(:candidate_version) do |package_name, arch| + allow(@yum_cache).to receive(:candidate_version) do |package_name, arch| if package_name == "testing.noarch" nil # candidate for new_package_name @@ -191,43 +191,43 @@ describe Chef::Provider::Package::Yum do "1.1" end end.and_return("something") - @yum_cache.stub(:package_available?).and_return(true) - @yum_cache.stub(:disable_extra_repo_control).and_return(true) - Chef::Provider::Package::Yum::YumCache.stub(:instance).and_return(@yum_cache) + allow(@yum_cache).to receive(:package_available?).and_return(true) + allow(@yum_cache).to receive(:disable_extra_repo_control).and_return(true) + allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache) @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) @provider.load_current_resource - @provider.new_resource.package_name.should == "testing.i386" - @provider.new_resource.arch.should == "x86_64" + expect(@provider.new_resource.package_name).to eq("testing.i386") + expect(@provider.new_resource.arch).to eq("x86_64") end end it "should flush the cache if :before is true" do - @new_resource.stub(:flush_cache).and_return({:after => false, :before => true}) - @yum_cache.should_receive(:reload).once + allow(@new_resource).to receive(:flush_cache).and_return({:after => false, :before => true}) + expect(@yum_cache).to receive(:reload).once @provider.load_current_resource end it "should flush the cache if :before is false" do - @new_resource.stub(:flush_cache).and_return({:after => false, :before => false}) - @yum_cache.should_not_receive(:reload) + allow(@new_resource).to receive(:flush_cache).and_return({:after => false, :before => false}) + expect(@yum_cache).not_to receive(:reload) @provider.load_current_resource end it "should detect --enablerepo or --disablerepo when passed among options, collect them preserving order and notify the yum cache" do - @new_resource.stub(:options).and_return("--stuff --enablerepo=foo --otherthings --disablerepo=a,b,c --enablerepo=bar") - @yum_cache.should_receive(:enable_extra_repo_control).with("--enablerepo=foo --disablerepo=a,b,c --enablerepo=bar") + allow(@new_resource).to receive(:options).and_return("--stuff --enablerepo=foo --otherthings --disablerepo=a,b,c --enablerepo=bar") + expect(@yum_cache).to receive(:enable_extra_repo_control).with("--enablerepo=foo --disablerepo=a,b,c --enablerepo=bar") @provider.load_current_resource end it "should let the yum cache know extra repos are disabled if --enablerepo or --disablerepo aren't among options" do - @new_resource.stub(:options).and_return("--stuff --otherthings") - @yum_cache.should_receive(:disable_extra_repo_control) + allow(@new_resource).to receive(:options).and_return("--stuff --otherthings") + expect(@yum_cache).to receive(:disable_extra_repo_control) @provider.load_current_resource end it "should let the yum cache know extra repos are disabled if options aren't set" do - @new_resource.stub(:options).and_return(nil) - @yum_cache.should_receive(:disable_extra_repo_control) + allow(@new_resource).to receive(:options).and_return(nil) + expect(@yum_cache).to receive(:disable_extra_repo_control) @provider.load_current_resource end @@ -242,12 +242,12 @@ describe Chef::Provider::Package::Yum do :version_available? => true, :disable_extra_repo_control => true ) - Chef::Provider::Package::Yum::YumCache.stub(:instance).and_return(@yum_cache) + allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache) pkg = Chef::Provider::Package::Yum::RPMPackage.new("test-package", "1.2.4-11.18.el5", "x86_64", []) - @yum_cache.should_receive(:packages_from_require).and_return([pkg]) + expect(@yum_cache).to receive(:packages_from_require).and_return([pkg]) @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) @provider.load_current_resource - @new_resource.package_name.should == "test-package" + expect(@new_resource.package_name).to eq("test-package") end it "should search provides if package name can't be found, warn about multiple matches, but use the first one" do @@ -261,14 +261,14 @@ describe Chef::Provider::Package::Yum do :version_available? => true, :disable_extra_repo_control => true ) - Chef::Provider::Package::Yum::YumCache.stub(:instance).and_return(@yum_cache) + allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache) pkg_x = Chef::Provider::Package::Yum::RPMPackage.new("test-package-x", "1.2.4-11.18.el5", "x86_64", []) pkg_y = Chef::Provider::Package::Yum::RPMPackage.new("test-package-y", "1.2.6-11.3.el5", "i386", []) - @yum_cache.should_receive(:packages_from_require).and_return([pkg_x, pkg_y]) - Chef::Log.should_receive(:warn).exactly(1).times.with(%r{matched multiple Provides}) + expect(@yum_cache).to receive(:packages_from_require).and_return([pkg_x, pkg_y]) + expect(Chef::Log).to receive(:warn).exactly(1).times.with(%r{matched multiple Provides}) @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) @provider.load_current_resource - @new_resource.package_name.should == "test-package-x" + expect(@new_resource.package_name).to eq("test-package-x") end it "should search provides if no package is available - if no match in installed provides then load the complete set" do @@ -282,9 +282,9 @@ describe Chef::Provider::Package::Yum do :version_available? => true, :disable_extra_repo_control => true ) - Chef::Provider::Package::Yum::YumCache.stub(:instance).and_return(@yum_cache) - @yum_cache.should_receive(:packages_from_require).twice.and_return([]) - @yum_cache.should_receive(:reload_provides) + allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache) + expect(@yum_cache).to receive(:packages_from_require).twice.and_return([]) + expect(@yum_cache).to receive(:reload_provides) @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) @provider.load_current_resource end @@ -300,14 +300,14 @@ describe Chef::Provider::Package::Yum do :version_available? => true, :disable_extra_repo_control => true ) - Chef::Provider::Package::Yum::YumCache.stub(:instance).and_return(@yum_cache) + allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache) @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) - @yum_cache.should_receive(:packages_from_require).once.and_return([]) - @yum_cache.should_not_receive(:reload_provides) + expect(@yum_cache).to receive(:packages_from_require).once.and_return([]) + expect(@yum_cache).not_to receive(:reload_provides) @new_resource.action(:remove) @provider.load_current_resource - @yum_cache.should_receive(:packages_from_require).once.and_return([]) - @yum_cache.should_not_receive(:reload_provides) + expect(@yum_cache).to receive(:packages_from_require).once.and_return([]) + expect(@yum_cache).not_to receive(:reload_provides) @new_resource.action(:purge) @provider.load_current_resource end @@ -324,27 +324,27 @@ describe Chef::Provider::Package::Yum do :version_available? => true, :disable_extra_repo_control => true ) - Chef::Provider::Package::Yum::YumCache.stub(:instance).and_return(@yum_cache) - @yum_cache.should_receive(:packages_from_require).twice.and_return([]) + allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache) + expect(@yum_cache).to receive(:packages_from_require).twice.and_return([]) @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) @provider.load_current_resource - @new_resource.package_name.should == "cups" + expect(@new_resource.package_name).to eq("cups") end end describe "when installing a package" do it "should run yum install with the package name and version" do @provider.load_current_resource - Chef::Provider::Package::Yum::RPMUtils.stub(:rpmvercmp).and_return(-1) - @provider.should_receive(:yum_command).with( + allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1) + expect(@provider).to receive(:yum_command).with( "yum -d0 -e0 -y install emacs-1.0" ) @provider.install_package("emacs", "1.0") end it "should run yum localinstall if given a path to an rpm" do - @new_resource.stub(:source).and_return("/tmp/emacs-21.4-20.el5.i386.rpm") - @provider.should_receive(:yum_command).with( + allow(@new_resource).to receive(:source).and_return("/tmp/emacs-21.4-20.el5.i386.rpm") + expect(@provider).to receive(:yum_command).with( "yum -d0 -e0 -y localinstall /tmp/emacs-21.4-20.el5.i386.rpm" ) @provider.install_package("emacs", "21.4-20.el5") @@ -352,10 +352,10 @@ describe Chef::Provider::Package::Yum do it "should run yum localinstall if given a path to an rpm as the package" do @new_resource = Chef::Resource::Package.new("/tmp/emacs-21.4-20.el5.i386.rpm") - ::File.stub(:exists?).and_return(true) + allow(::File).to receive(:exists?).and_return(true) @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) - @new_resource.source.should == "/tmp/emacs-21.4-20.el5.i386.rpm" - @provider.should_receive(:yum_command).with( + expect(@new_resource.source).to eq("/tmp/emacs-21.4-20.el5.i386.rpm") + expect(@provider).to receive(:yum_command).with( "yum -d0 -e0 -y localinstall /tmp/emacs-21.4-20.el5.i386.rpm" ) @provider.install_package("/tmp/emacs-21.4-20.el5.i386.rpm", "21.4-20.el5") @@ -363,9 +363,9 @@ describe Chef::Provider::Package::Yum do it "should run yum install with the package name, version and arch" do @provider.load_current_resource - @new_resource.stub(:arch).and_return("i386") - Chef::Provider::Package::Yum::RPMUtils.stub(:rpmvercmp).and_return(-1) - @provider.should_receive(:yum_command).with( + allow(@new_resource).to receive(:arch).and_return("i386") + allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1) + expect(@provider).to receive(:yum_command).with( "yum -d0 -e0 -y install emacs-21.4-20.el5.i386" ) @provider.install_package("emacs", "21.4-20.el5") @@ -374,9 +374,9 @@ describe Chef::Provider::Package::Yum do it "installs the package with the options given in the resource" do @provider.load_current_resource @provider.candidate_version = '11' - @new_resource.stub(:options).and_return("--disablerepo epmd") - Chef::Provider::Package::Yum::RPMUtils.stub(:rpmvercmp).and_return(-1) - @provider.should_receive(:yum_command).with( + allow(@new_resource).to receive(:options).and_return("--disablerepo epmd") + allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1) + expect(@provider).to receive(:yum_command).with( "yum -d0 -e0 -y --disablerepo epmd install cups-11" ) @provider.install_package(@new_resource.name, @provider.candidate_version) @@ -393,13 +393,13 @@ describe Chef::Provider::Package::Yum do :version_available? => nil, :disable_extra_repo_control => true ) - Chef::Provider::Package::Yum::YumCache.stub(:instance).and_return(@yum_cache) + allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache) @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) - lambda { @provider.install_package("lolcats", "0.99") }.should raise_error(Chef::Exceptions::Package, %r{Version .* not found}) + expect { @provider.install_package("lolcats", "0.99") }.to raise_error(Chef::Exceptions::Package, %r{Version .* not found}) end it "should raise an exception if candidate version is older than the installed version and allow_downgrade is false" do - @new_resource.stub(:allow_downgrade).and_return(false) + allow(@new_resource).to receive(:allow_downgrade).and_return(false) @yum_cache = double( 'Chef::Provider::Yum::YumCache', :reload_installed => true, @@ -411,10 +411,10 @@ describe Chef::Provider::Package::Yum do :allow_multi_install => [ "kernel" ], :disable_extra_repo_control => true ) - Chef::Provider::Package::Yum::YumCache.stub(:instance).and_return(@yum_cache) + allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache) @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) @provider.load_current_resource - lambda { @provider.install_package("cups", "1.2.4-11.15.el5") }.should raise_error(Chef::Exceptions::Package, %r{is newer than candidate package}) + expect { @provider.install_package("cups", "1.2.4-11.15.el5") }.to raise_error(Chef::Exceptions::Package, %r{is newer than candidate package}) end it "should not raise an exception if candidate version is older than the installed version and the package is list in yum's installonlypkg option" do @@ -430,17 +430,17 @@ describe Chef::Provider::Package::Yum do :package_repository => "base", :disable_extra_repo_control => true ) - Chef::Provider::Package::Yum::YumCache.stub(:instance).and_return(@yum_cache) + allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache) @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) @provider.load_current_resource - @provider.should_receive(:yum_command).with( + expect(@provider).to receive(:yum_command).with( "yum -d0 -e0 -y install cups-1.2.4-11.15.el5" ) @provider.install_package("cups", "1.2.4-11.15.el5") end it "should run yum downgrade if candidate version is older than the installed version and allow_downgrade is true" do - @new_resource.stub(:allow_downgrade).and_return(true) + allow(@new_resource).to receive(:allow_downgrade).and_return(true) @yum_cache = double( 'Chef::Provider::Yum::YumCache', :reload_installed => true, @@ -453,34 +453,34 @@ describe Chef::Provider::Package::Yum do :package_repository => "base", :disable_extra_repo_control => true ) - Chef::Provider::Package::Yum::YumCache.stub(:instance).and_return(@yum_cache) + allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache) @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) @provider.load_current_resource - @provider.should_receive(:yum_command).with( + expect(@provider).to receive(:yum_command).with( "yum -d0 -e0 -y downgrade cups-1.2.4-11.15.el5" ) @provider.install_package("cups", "1.2.4-11.15.el5") end it "should run yum install then flush the cache if :after is true" do - @new_resource.stub(:flush_cache).and_return({:after => true, :before => false}) + allow(@new_resource).to receive(:flush_cache).and_return({:after => true, :before => false}) @provider.load_current_resource - Chef::Provider::Package::Yum::RPMUtils.stub(:rpmvercmp).and_return(-1) - @provider.should_receive(:yum_command).with( + allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1) + expect(@provider).to receive(:yum_command).with( "yum -d0 -e0 -y install emacs-1.0" ) - @yum_cache.should_receive(:reload).once + expect(@yum_cache).to receive(:reload).once @provider.install_package("emacs", "1.0") end it "should run yum install then not flush the cache if :after is false" do - @new_resource.stub(:flush_cache).and_return({:after => false, :before => false}) + allow(@new_resource).to receive(:flush_cache).and_return({:after => false, :before => false}) @provider.load_current_resource - Chef::Provider::Package::Yum::RPMUtils.stub(:rpmvercmp).and_return(-1) - @provider.should_receive(:yum_command).with( + allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1) + expect(@provider).to receive(:yum_command).with( "yum -d0 -e0 -y install emacs-1.0" ) - @yum_cache.should_not_receive(:reload) + expect(@yum_cache).not_to receive(:reload) @provider.install_package("emacs", "1.0") end end @@ -489,8 +489,8 @@ describe Chef::Provider::Package::Yum do it "should run yum install if the package is installed and a version is given" do @provider.load_current_resource @provider.candidate_version = '11' - Chef::Provider::Package::Yum::RPMUtils.stub(:rpmvercmp).and_return(-1) - @provider.should_receive(:yum_command).with( + allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1) + expect(@provider).to receive(:yum_command).with( "yum -d0 -e0 -y install cups-11" ) @provider.upgrade_package(@new_resource.name, @provider.candidate_version) @@ -500,8 +500,8 @@ describe Chef::Provider::Package::Yum do @provider.load_current_resource @current_resource = Chef::Resource::Package.new('cups') @provider.candidate_version = '11' - Chef::Provider::Package::Yum::RPMUtils.stub(:rpmvercmp).and_return(-1) - @provider.should_receive(:yum_command).with( + allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1) + expect(@provider).to receive(:yum_command).with( "yum -d0 -e0 -y install cups-11" ) @provider.upgrade_package(@new_resource.name, @provider.candidate_version) @@ -519,19 +519,19 @@ describe Chef::Provider::Package::Yum do :allow_multi_install => [ "kernel" ], :disable_extra_repo_control => true ) - Chef::Provider::Package::Yum::YumCache.stub(:instance).and_return(@yum_cache) + allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache) @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context) @provider.load_current_resource - lambda { @provider.upgrade_package("cups", "1.2.4-11.15.el5") }.should raise_error(Chef::Exceptions::Package, %r{is newer than candidate package}) + expect { @provider.upgrade_package("cups", "1.2.4-11.15.el5") }.to raise_error(Chef::Exceptions::Package, %r{is newer than candidate package}) end # Test our little workaround, some crossover into Chef::Provider::Package territory it "should call action_upgrade in the parent if the current resource version is nil" do - @yum_cache.stub(:installed_version).and_return(nil) + allow(@yum_cache).to receive(:installed_version).and_return(nil) @provider.load_current_resource @current_resource = Chef::Resource::Package.new('cups') @provider.candidate_version = '11' - @provider.should_receive(:upgrade_package).with( + expect(@provider).to receive(:upgrade_package).with( "cups", "11" ) @@ -542,7 +542,7 @@ describe Chef::Provider::Package::Yum do @provider.load_current_resource @current_resource = Chef::Resource::Package.new('cups') @provider.candidate_version = nil - @provider.should_not_receive(:upgrade_package) + expect(@provider).not_to receive(:upgrade_package) @provider.action_upgrade end @@ -550,7 +550,7 @@ describe Chef::Provider::Package::Yum do @provider.load_current_resource @current_resource = Chef::Resource::Package.new('cups') @provider.candidate_version = '11' - @provider.should_receive(:upgrade_package).with( + expect(@provider).to receive(:upgrade_package).with( "cups", "11" ) @@ -558,26 +558,26 @@ describe Chef::Provider::Package::Yum do end it "should not call action_upgrade in the parent if the candidate is older" do - @yum_cache.stub(:installed_version).and_return("12") + allow(@yum_cache).to receive(:installed_version).and_return("12") @provider.load_current_resource @current_resource = Chef::Resource::Package.new('cups') @provider.candidate_version = '11' - @provider.should_not_receive(:upgrade_package) + expect(@provider).not_to receive(:upgrade_package) @provider.action_upgrade end end describe "when removing a package" do it "should run yum remove with the package name" do - @provider.should_receive(:yum_command).with( + expect(@provider).to receive(:yum_command).with( "yum -d0 -e0 -y remove emacs-1.0" ) @provider.remove_package("emacs", "1.0") end it "should run yum remove with the package name and arch" do - @new_resource.stub(:arch).and_return("x86_64") - @provider.should_receive(:yum_command).with( + allow(@new_resource).to receive(:arch).and_return("x86_64") + expect(@provider).to receive(:yum_command).with( "yum -d0 -e0 -y remove emacs-1.0.x86_64" ) @provider.remove_package("emacs", "1.0") @@ -586,7 +586,7 @@ describe Chef::Provider::Package::Yum do describe "when purging a package" do it "should run yum remove with the package name" do - @provider.should_receive(:yum_command).with( + expect(@provider).to receive(:yum_command).with( "yum -d0 -e0 -y remove emacs-1.0" ) @provider.purge_package("emacs", "1.0") @@ -596,8 +596,8 @@ describe Chef::Provider::Package::Yum do describe "when running yum" do it "should run yum once if it exits with a return code of 0" do @status = double("Status", :exitstatus => 0) - @provider.stub(:output_of_command).and_return([@status, "", ""]) - @provider.should_receive(:output_of_command).once.with( + allow(@provider).to receive(:output_of_command).and_return([@status, "", ""]) + expect(@provider).to receive(:output_of_command).once.with( "yum -d0 -e0 -y install emacs-1.0", {:timeout => Chef::Config[:yum_timeout]} ) @@ -606,34 +606,34 @@ describe Chef::Provider::Package::Yum do it "should run yum once if it exits with a return code > 0 and no scriptlet failures" do @status = double("Status", :exitstatus => 2) - @provider.stub(:output_of_command).and_return([@status, "failure failure", "problem problem"]) - @provider.should_receive(:output_of_command).once.with( + allow(@provider).to receive(:output_of_command).and_return([@status, "failure failure", "problem problem"]) + expect(@provider).to receive(:output_of_command).once.with( "yum -d0 -e0 -y install emacs-1.0", {:timeout => Chef::Config[:yum_timeout]} ) - lambda { @provider.yum_command("yum -d0 -e0 -y install emacs-1.0") }.should raise_error(Chef::Exceptions::Exec) + expect { @provider.yum_command("yum -d0 -e0 -y install emacs-1.0") }.to raise_error(Chef::Exceptions::Exec) end it "should run yum once if it exits with a return code of 1 and %pre scriptlet failures" do @status = double("Status", :exitstatus => 1) - @provider.stub(:output_of_command).and_return([@status, "error: %pre(demo-1-1.el5.centos.x86_64) scriptlet failed, exit status 2", ""]) - @provider.should_receive(:output_of_command).once.with( + allow(@provider).to receive(:output_of_command).and_return([@status, "error: %pre(demo-1-1.el5.centos.x86_64) scriptlet failed, exit status 2", ""]) + expect(@provider).to receive(:output_of_command).once.with( "yum -d0 -e0 -y install emacs-1.0", {:timeout => Chef::Config[:yum_timeout]} ) # will still raise an exception, can't stub out the subsequent call - lambda { @provider.yum_command("yum -d0 -e0 -y install emacs-1.0") }.should raise_error(Chef::Exceptions::Exec) + expect { @provider.yum_command("yum -d0 -e0 -y install emacs-1.0") }.to raise_error(Chef::Exceptions::Exec) end it "should run yum twice if it exits with a return code of 1 and %post scriptlet failures" do @status = double("Status", :exitstatus => 1) - @provider.stub(:output_of_command).and_return([@status, "error: %post(demo-1-1.el5.centos.x86_64) scriptlet failed, exit status 2", ""]) - @provider.should_receive(:output_of_command).twice.with( + allow(@provider).to receive(:output_of_command).and_return([@status, "error: %post(demo-1-1.el5.centos.x86_64) scriptlet failed, exit status 2", ""]) + expect(@provider).to receive(:output_of_command).twice.with( "yum -d0 -e0 -y install emacs-1.0", {:timeout => Chef::Config[:yum_timeout]} ) # will still raise an exception, can't stub out the subsequent call - lambda { @provider.yum_command("yum -d0 -e0 -y install emacs-1.0") }.should raise_error(Chef::Exceptions::Exec) + expect { @provider.yum_command("yum -d0 -e0 -y install emacs-1.0") }.to raise_error(Chef::Exceptions::Exec) end end end @@ -650,7 +650,7 @@ describe Chef::Provider::Package::Yum::RPMUtils do [ "9:1.7.3", [ 9, "1.7.3", nil ] ], [ "15:20020927", [ 15, "20020927", nil ] ] ].each do |x, y| - @rpmutils.version_parse(x).should == y + expect(@rpmutils.version_parse(x)).to eq(y) end end @@ -660,7 +660,7 @@ describe Chef::Provider::Package::Yum::RPMUtils do [ "-1:1.7.3", [ nil, nil, "1:1.7.3" ] ], [ "-:20020927", [ nil, nil, ":20020927" ] ] ].each do |x, y| - @rpmutils.version_parse(x).should == y + expect(@rpmutils.version_parse(x)).to eq(y) end end @@ -670,7 +670,7 @@ describe Chef::Provider::Package::Yum::RPMUtils do [ "1.7.3", [ nil, "1.7.3", nil ] ], [ "20020927", [ nil, "20020927", nil ] ] ].each do |x, y| - @rpmutils.version_parse(x).should == y + expect(@rpmutils.version_parse(x)).to eq(y) end end @@ -680,7 +680,7 @@ describe Chef::Provider::Package::Yum::RPMUtils do [ "0001.7.3", [ nil, "0001.7.3", nil ] ], [ "20020927,3", [ nil, "20020927,3", nil ] ] ].each do |x, y| - @rpmutils.version_parse(x).should == y + expect(@rpmutils.version_parse(x)).to eq(y) end end @@ -690,7 +690,7 @@ describe Chef::Provider::Package::Yum::RPMUtils do [ "1.7.3-1jpp.2.el5", [ nil, "1.7.3", "1jpp.2.el5" ] ], [ "20020927-46.el5", [ nil, "20020927", "46.el5" ] ] ].each do |x, y| - @rpmutils.version_parse(x).should == y + expect(@rpmutils.version_parse(x)).to eq(y) end end @@ -700,7 +700,7 @@ describe Chef::Provider::Package::Yum::RPMUtils do [ "-1jpp.2.el5", [ nil, nil, "1jpp.2.el5" ] ], [ "-0020020927-46.el5", [ nil, "-0020020927", "46.el5" ] ] ].each do |x, y| - @rpmutils.version_parse(x).should == y + expect(@rpmutils.version_parse(x)).to eq(y) end end end @@ -757,7 +757,7 @@ describe Chef::Provider::Package::Yum::RPMUtils do [ "0.0.1aa", "0.0.1aa", 0 ], [ "0.0.1a", "0.0.1aa", -1 ], ].each do |x, y, result| - @rpmutils.rpmvercmp(x,y).should == result + expect(@rpmutils.rpmvercmp(x,y)).to eq(result) end end @@ -776,43 +776,43 @@ describe Chef::Provider::Package::Yum::RPMUtils do [ "", "", 0 ], [ "", "1.0.1", -1 ] ].each do |x, y, result| - @rpmutils.rpmvercmp(x,y).should == result + expect(@rpmutils.rpmvercmp(x,y)).to eq(result) end end it "tests isalnum good input" do [ 'a', 'z', 'A', 'Z', '0', '9' ].each do |t| - @rpmutils.isalnum(t).should == true + expect(@rpmutils.isalnum(t)).to eq(true) end end it "tests isalnum bad input" do [ '-', '.', '!', '^', ':', '_' ].each do |t| - @rpmutils.isalnum(t).should == false + expect(@rpmutils.isalnum(t)).to eq(false) end end it "tests isalpha good input" do [ 'a', 'z', 'A', 'Z', ].each do |t| - @rpmutils.isalpha(t).should == true + expect(@rpmutils.isalpha(t)).to eq(true) end end it "tests isalpha bad input" do [ '0', '9', '-', '.', '!', '^', ':', '_' ].each do |t| - @rpmutils.isalpha(t).should == false + expect(@rpmutils.isalpha(t)).to eq(false) end end it "tests isdigit good input" do [ '0', '9', ].each do |t| - @rpmutils.isdigit(t).should == true + expect(@rpmutils.isdigit(t)).to eq(true) end end it "tests isdigit bad input" do [ 'A', 'z', '-', '.', '!', '^', ':', '_' ].each do |t| - @rpmutils.isdigit(t).should == false + expect(@rpmutils.isdigit(t)).to eq(false) end end end @@ -826,15 +826,15 @@ describe Chef::Provider::Package::Yum::RPMVersion do end it "should expose evr (name-version-release) available" do - @rpmv.e.should == 1 - @rpmv.v.should == "1.6.5" - @rpmv.r.should == "9.36.el5" + expect(@rpmv.e).to eq(1) + expect(@rpmv.v).to eq("1.6.5") + expect(@rpmv.r).to eq("9.36.el5") - @rpmv.evr.should == "1:1.6.5-9.36.el5" + expect(@rpmv.evr).to eq("1:1.6.5-9.36.el5") end it "should output a version-release string" do - @rpmv.to_s.should == "1.6.5-9.36.el5" + expect(@rpmv.to_s).to eq("1.6.5-9.36.el5") end end @@ -844,34 +844,34 @@ describe Chef::Provider::Package::Yum::RPMVersion do end it "should expose evr (name-version-release) available" do - @rpmv.e.should == 1 - @rpmv.v.should == "1.6.5" - @rpmv.r.should == "9.36.el5" + expect(@rpmv.e).to eq(1) + expect(@rpmv.v).to eq("1.6.5") + expect(@rpmv.r).to eq("9.36.el5") - @rpmv.evr.should == "1:1.6.5-9.36.el5" + expect(@rpmv.evr).to eq("1:1.6.5-9.36.el5") end it "should output a version-release string" do - @rpmv.to_s.should == "1.6.5-9.36.el5" + expect(@rpmv.to_s).to eq("1.6.5-9.36.el5") end end it "should raise an error unless passed 1 or 3 args" do - lambda { + expect { Chef::Provider::Package::Yum::RPMVersion.new() - }.should raise_error(ArgumentError) - lambda { + }.to raise_error(ArgumentError) + expect { Chef::Provider::Package::Yum::RPMVersion.new("1:1.6.5-9.36.el5") - }.should_not raise_error - lambda { + }.not_to raise_error + expect { Chef::Provider::Package::Yum::RPMVersion.new("1:1.6.5-9.36.el5", "extra") - }.should raise_error(ArgumentError) - lambda { + }.to raise_error(ArgumentError) + expect { Chef::Provider::Package::Yum::RPMVersion.new("1", "1.6.5", "9.36.el5") - }.should_not raise_error - lambda { + }.not_to raise_error + expect { Chef::Provider::Package::Yum::RPMVersion.new("1", "1.6.5", "9.36.el5", "extra") - }.should raise_error(ArgumentError) + }.to raise_error(ArgumentError) end # thanks version_class_spec.rb! @@ -898,9 +898,9 @@ describe Chef::Provider::Package::Yum::RPMVersion do ].each do |smaller, larger| sm = Chef::Provider::Package::Yum::RPMVersion.new(smaller) lg = Chef::Provider::Package::Yum::RPMVersion.new(larger) - sm.should be < lg - lg.should be > sm - sm.should_not == lg + expect(sm).to be < lg + expect(lg).to be > sm + expect(sm).not_to eq(lg) end end @@ -924,9 +924,9 @@ describe Chef::Provider::Package::Yum::RPMVersion do ].each do |smaller, larger| sm = Chef::Provider::Package::Yum::RPMVersion.new(smaller) lg = Chef::Provider::Package::Yum::RPMVersion.new(larger) - sm.should be < lg - lg.should be > sm - sm.should_not == lg + expect(sm).to be < lg + expect(lg).to be > sm + expect(sm).not_to eq(lg) end end @@ -941,7 +941,7 @@ describe Chef::Provider::Package::Yum::RPMVersion do ].each do |smaller, larger| sm = Chef::Provider::Package::Yum::RPMVersion.new(smaller) lg = Chef::Provider::Package::Yum::RPMVersion.new(larger) - sm.should be == lg + expect(sm).to eq(lg) end end @@ -956,7 +956,7 @@ describe Chef::Provider::Package::Yum::RPMVersion do ].each do |smaller, larger| sm = Chef::Provider::Package::Yum::RPMVersion.new(smaller) lg = Chef::Provider::Package::Yum::RPMVersion.new(larger) - sm.should be == lg + expect(sm).to eq(lg) end end end @@ -980,9 +980,9 @@ describe Chef::Provider::Package::Yum::RPMVersion do ].each do |smaller, larger| sm = Chef::Provider::Package::Yum::RPMVersion.new(smaller) lg = Chef::Provider::Package::Yum::RPMVersion.new(larger) - sm.partial_compare(lg).should be == -1 - lg.partial_compare(sm).should be == 1 - sm.partial_compare(lg).should_not be == 0 + expect(sm.partial_compare(lg)).to eq(-1) + expect(lg.partial_compare(sm)).to eq(1) + expect(sm.partial_compare(lg)).not_to eq(0) end end @@ -997,7 +997,7 @@ describe Chef::Provider::Package::Yum::RPMVersion do ].each do |smaller, larger| sm = Chef::Provider::Package::Yum::RPMVersion.new(smaller) lg = Chef::Provider::Package::Yum::RPMVersion.new(larger) - sm.partial_compare(lg).should be == 0 + expect(sm.partial_compare(lg)).to eq(0) end end end @@ -1011,18 +1011,18 @@ describe Chef::Provider::Package::Yum::RPMPackage do end it "should expose nevra (name-epoch-version-release-arch) available" do - @rpm.name.should == "testing" - @rpm.version.e.should == 1 - @rpm.version.v.should == "1.6.5" - @rpm.version.r.should == "9.36.el5" - @rpm.arch.should == "x86_64" + expect(@rpm.name).to eq("testing") + expect(@rpm.version.e).to eq(1) + expect(@rpm.version.v).to eq("1.6.5") + expect(@rpm.version.r).to eq("9.36.el5") + expect(@rpm.arch).to eq("x86_64") - @rpm.nevra.should == "testing-1:1.6.5-9.36.el5.x86_64" - @rpm.to_s.should == @rpm.nevra + expect(@rpm.nevra).to eq("testing-1:1.6.5-9.36.el5.x86_64") + expect(@rpm.to_s).to eq(@rpm.nevra) end it "should always have at least one provide, itself" do - @rpm.provides.size.should == 1 + expect(@rpm.provides.size).to eq(1) @rpm.provides[0].name == "testing" @rpm.provides[0].version.evr == "1:1.6.5-9.36.el5" @rpm.provides[0].flag == :== @@ -1035,18 +1035,18 @@ describe Chef::Provider::Package::Yum::RPMPackage do end it "should expose nevra (name-epoch-version-release-arch) available" do - @rpm.name.should == "testing" - @rpm.version.e.should == 1 - @rpm.version.v.should == "1.6.5" - @rpm.version.r.should == "9.36.el5" - @rpm.arch.should == "x86_64" + expect(@rpm.name).to eq("testing") + expect(@rpm.version.e).to eq(1) + expect(@rpm.version.v).to eq("1.6.5") + expect(@rpm.version.r).to eq("9.36.el5") + expect(@rpm.arch).to eq("x86_64") - @rpm.nevra.should == "testing-1:1.6.5-9.36.el5.x86_64" - @rpm.to_s.should == @rpm.nevra + expect(@rpm.nevra).to eq("testing-1:1.6.5-9.36.el5.x86_64") + expect(@rpm.to_s).to eq(@rpm.nevra) end it "should always have at least one provide, itself" do - @rpm.provides.size.should == 1 + expect(@rpm.provides.size).to eq(1) @rpm.provides[0].name == "testing" @rpm.provides[0].version.evr == "1:1.6.5-9.36.el5" @rpm.provides[0].flag == :== @@ -1054,30 +1054,30 @@ describe Chef::Provider::Package::Yum::RPMPackage do end it "should raise an error unless passed 4 or 6 args" do - lambda { + expect { Chef::Provider::Package::Yum::RPMPackage.new() - }.should raise_error(ArgumentError) - lambda { + }.to raise_error(ArgumentError) + expect { Chef::Provider::Package::Yum::RPMPackage.new("testing") - }.should raise_error(ArgumentError) - lambda { + }.to raise_error(ArgumentError) + expect { Chef::Provider::Package::Yum::RPMPackage.new("testing", "1:1.6.5-9.36.el5") - }.should raise_error(ArgumentError) - lambda { + }.to raise_error(ArgumentError) + expect { Chef::Provider::Package::Yum::RPMPackage.new("testing", "1:1.6.5-9.36.el5", "x86_64") - }.should raise_error(ArgumentError) - lambda { + }.to raise_error(ArgumentError) + expect { Chef::Provider::Package::Yum::RPMPackage.new("testing", "1:1.6.5-9.36.el5", "x86_64", []) - }.should_not raise_error - lambda { + }.not_to raise_error + expect { Chef::Provider::Package::Yum::RPMPackage.new("testing", "1", "1.6.5", "9.36.el5", "x86_64") - }.should raise_error(ArgumentError) - lambda { + }.to raise_error(ArgumentError) + expect { Chef::Provider::Package::Yum::RPMPackage.new("testing", "1", "1.6.5", "9.36.el5", "x86_64", []) - }.should_not raise_error - lambda { + }.not_to raise_error + expect { Chef::Provider::Package::Yum::RPMPackage.new("testing", "1", "1.6.5", "9.36.el5", "x86_64", [], "extra") - }.should raise_error(ArgumentError) + }.to raise_error(ArgumentError) end describe "<=>" do @@ -1096,9 +1096,9 @@ describe Chef::Provider::Package::Yum::RPMPackage do ].each do |smaller, larger| sm = Chef::Provider::Package::Yum::RPMPackage.new(smaller, "0:0.0.1-1", "x86_64", []) lg = Chef::Provider::Package::Yum::RPMPackage.new(larger, "0:0.0.1-1", "x86_64", []) - sm.should be < lg - lg.should be > sm - sm.should_not == lg + expect(sm).to be < lg + expect(lg).to be > sm + expect(sm).not_to eq(lg) end end @@ -1113,9 +1113,9 @@ describe Chef::Provider::Package::Yum::RPMPackage do ].each do |smaller, larger| sm = Chef::Provider::Package::Yum::RPMPackage.new("test-package", "0:0.0.1-1", smaller, []) lg = Chef::Provider::Package::Yum::RPMPackage.new("test-package", "0:0.0.1-1", larger, []) - sm.should be < lg - lg.should be > sm - sm.should_not == lg + expect(sm).to be < lg + expect(lg).to be > sm + expect(sm).not_to eq(lg) end end end @@ -1132,31 +1132,31 @@ describe Chef::Provider::Package::Yum::RPMDbPackage do describe "initialize" do it "should return a Chef::Provider::Package::Yum::RPMDbPackage object" do - @rpm_x.should be_kind_of(Chef::Provider::Package::Yum::RPMDbPackage) + expect(@rpm_x).to be_kind_of(Chef::Provider::Package::Yum::RPMDbPackage) end end describe "available" do it "should return true" do - @rpm_x.available.should be == true - @rpm_y.available.should be == true - @rpm_z.available.should be == false + expect(@rpm_x.available).to eq(true) + expect(@rpm_y.available).to eq(true) + expect(@rpm_z.available).to eq(false) end end describe "installed" do it "should return true" do - @rpm_x.installed.should be == false - @rpm_y.installed.should be == true - @rpm_z.installed.should be == true + expect(@rpm_x.installed).to eq(false) + expect(@rpm_y.installed).to eq(true) + expect(@rpm_z.installed).to eq(true) end end describe "repoid" do it "should return the source repository repoid" do - @rpm_x.repoid.should be == "base" - @rpm_y.repoid.should be == "extras" - @rpm_z.repoid.should be == "other" + expect(@rpm_x.repoid).to eq("base") + expect(@rpm_y.repoid).to eq("extras") + expect(@rpm_z.repoid).to eq("other") end end end @@ -1168,11 +1168,11 @@ describe Chef::Provider::Package::Yum::RPMDependency do end it "should expose name, version, flag available" do - @rpmdep.name.should == "testing" - @rpmdep.version.e.should == 1 - @rpmdep.version.v.should == "1.6.5" - @rpmdep.version.r.should == "9.36.el5" - @rpmdep.flag.should == :== + expect(@rpmdep.name).to eq("testing") + expect(@rpmdep.version.e).to eq(1) + expect(@rpmdep.version.v).to eq("1.6.5") + expect(@rpmdep.version.r).to eq("9.36.el5") + expect(@rpmdep.flag).to eq(:==) end end @@ -1182,67 +1182,67 @@ describe Chef::Provider::Package::Yum::RPMDependency do end it "should expose name, version, flag available" do - @rpmdep.name.should == "testing" - @rpmdep.version.e.should == 1 - @rpmdep.version.v.should == "1.6.5" - @rpmdep.version.r.should == "9.36.el5" - @rpmdep.flag.should == :== + expect(@rpmdep.name).to eq("testing") + expect(@rpmdep.version.e).to eq(1) + expect(@rpmdep.version.v).to eq("1.6.5") + expect(@rpmdep.version.r).to eq("9.36.el5") + expect(@rpmdep.flag).to eq(:==) end end it "should raise an error unless passed 3 or 5 args" do - lambda { + expect { Chef::Provider::Package::Yum::RPMDependency.new() - }.should raise_error(ArgumentError) - lambda { + }.to raise_error(ArgumentError) + expect { Chef::Provider::Package::Yum::RPMDependency.new("testing") - }.should raise_error(ArgumentError) - lambda { + }.to raise_error(ArgumentError) + expect { Chef::Provider::Package::Yum::RPMDependency.new("testing", "1:1.6.5-9.36.el5") - }.should raise_error(ArgumentError) - lambda { + }.to raise_error(ArgumentError) + expect { Chef::Provider::Package::Yum::RPMDependency.new("testing", "1:1.6.5-9.36.el5", :==) - }.should_not raise_error - lambda { + }.not_to raise_error + expect { Chef::Provider::Package::Yum::RPMDependency.new("testing", "1:1.6.5-9.36.el5", :==, "extra") - }.should raise_error(ArgumentError) - lambda { + }.to raise_error(ArgumentError) + expect { Chef::Provider::Package::Yum::RPMDependency.new("testing", "1", "1.6.5", "9.36.el5", :==) - }.should_not raise_error - lambda { + }.not_to raise_error + expect { Chef::Provider::Package::Yum::RPMDependency.new("testing", "1", "1.6.5", "9.36.el5", :==, "extra") - }.should raise_error(ArgumentError) + }.to raise_error(ArgumentError) end describe "parse" do it "should parse a name, flag, version string into a valid RPMDependency object" do @rpmdep = Chef::Provider::Package::Yum::RPMDependency.parse("testing >= 1:1.6.5-9.36.el5") - @rpmdep.name.should == "testing" - @rpmdep.version.e.should == 1 - @rpmdep.version.v.should == "1.6.5" - @rpmdep.version.r.should == "9.36.el5" - @rpmdep.flag.should == :>= + expect(@rpmdep.name).to eq("testing") + expect(@rpmdep.version.e).to eq(1) + expect(@rpmdep.version.v).to eq("1.6.5") + expect(@rpmdep.version.r).to eq("9.36.el5") + expect(@rpmdep.flag).to eq(:>=) end it "should parse a name into a valid RPMDependency object" do @rpmdep = Chef::Provider::Package::Yum::RPMDependency.parse("testing") - @rpmdep.name.should == "testing" - @rpmdep.version.e.should == nil - @rpmdep.version.v.should == nil - @rpmdep.version.r.should == nil - @rpmdep.flag.should == :== + expect(@rpmdep.name).to eq("testing") + expect(@rpmdep.version.e).to eq(nil) + expect(@rpmdep.version.v).to eq(nil) + expect(@rpmdep.version.r).to eq(nil) + expect(@rpmdep.flag).to eq(:==) end it "should parse an invalid string into the name of a RPMDependency object" do @rpmdep = Chef::Provider::Package::Yum::RPMDependency.parse("testing blah >") - @rpmdep.name.should == "testing blah >" - @rpmdep.version.e.should == nil - @rpmdep.version.v.should == nil - @rpmdep.version.r.should == nil - @rpmdep.flag.should == :== + expect(@rpmdep.name).to eq("testing blah >") + expect(@rpmdep.version.e).to eq(nil) + expect(@rpmdep.version.v).to eq(nil) + expect(@rpmdep.version.r).to eq(nil) + expect(@rpmdep.flag).to eq(:==) end it "should parse various valid flags" do @@ -1255,7 +1255,7 @@ describe Chef::Provider::Package::Yum::RPMDependency do [ "<", :< ] ].each do |before, after| @rpmdep = Chef::Provider::Package::Yum::RPMDependency.parse("testing #{before} 1:1.1-1") - @rpmdep.flag.should == after + expect(@rpmdep.flag).to eq(after) end end @@ -1269,8 +1269,8 @@ describe Chef::Provider::Package::Yum::RPMDependency do [ "~", :== ] ].each do |before, after| @rpmdep = Chef::Provider::Package::Yum::RPMDependency.parse("testing #{before} 1:1.1-1") - @rpmdep.name.should == "testing #{before} 1:1.1-1" - @rpmdep.flag.should == after + expect(@rpmdep.name).to eq("testing #{before} 1:1.1-1") + expect(@rpmdep.flag).to eq(after) end end end @@ -1279,12 +1279,12 @@ describe Chef::Provider::Package::Yum::RPMDependency do it "should raise an error unless a RPMDependency is passed" do @rpmprovide = Chef::Provider::Package::Yum::RPMDependency.new("testing", "1:1.6.5-9.36.el5", :==) @rpmrequire = Chef::Provider::Package::Yum::RPMDependency.new("testing", "1:1.6.5-9.36.el5", :>=) - lambda { + expect { @rpmprovide.satisfy?("hi") - }.should raise_error(ArgumentError) - lambda { + }.to raise_error(ArgumentError) + expect { @rpmprovide.satisfy?(@rpmrequire) - }.should_not raise_error + }.not_to raise_error end it "should validate dependency satisfaction logic for standard examples" do @@ -1326,8 +1326,8 @@ describe Chef::Provider::Package::Yum::RPMDependency do @rpmprovide = Chef::Provider::Package::Yum::RPMDependency.parse(prov) @rpmrequire = Chef::Provider::Package::Yum::RPMDependency.parse(req) - @rpmprovide.satisfy?(@rpmrequire).should == result - @rpmrequire.satisfy?(@rpmprovide).should == result + expect(@rpmprovide.satisfy?(@rpmrequire)).to eq(result) + expect(@rpmrequire.satisfy?(@rpmprovide)).to eq(result) end end end @@ -1358,89 +1358,89 @@ describe Chef::Provider::Package::Yum::RPMDb do describe "initialize" do it "should return a Chef::Provider::Package::Yum::RPMDb object" do - @rpmdb.should be_kind_of(Chef::Provider::Package::Yum::RPMDb) + expect(@rpmdb).to be_kind_of(Chef::Provider::Package::Yum::RPMDb) end end describe "push" do it "should accept an RPMDbPackage object through pushing" do - lambda { @rpmdb.push(@rpm_w) }.should_not raise_error + expect { @rpmdb.push(@rpm_w) }.not_to raise_error end it "should accept multiple RPMDbPackage object through pushing" do - lambda { @rpmdb.push(@rpm_w, @rpm_x, @rpm_y, @rpm_z) }.should_not raise_error + expect { @rpmdb.push(@rpm_w, @rpm_x, @rpm_y, @rpm_z) }.not_to raise_error end it "should only accept an RPMDbPackage object" do - lambda { @rpmdb.push("string") }.should raise_error + expect { @rpmdb.push("string") }.to raise_error end it "should add the package to the package db" do @rpmdb.push(@rpm_w) - @rpmdb["test-package-b"].should_not be == nil + expect(@rpmdb["test-package-b"]).not_to eq(nil) end it "should add conditionally add the package to the available list" do - @rpmdb.available_size.should be == 0 + expect(@rpmdb.available_size).to eq(0) @rpmdb.push(@rpm_v, @rpm_w) - @rpmdb.available_size.should be == 1 + expect(@rpmdb.available_size).to eq(1) end it "should add conditionally add the package to the installed list" do - @rpmdb.installed_size.should be == 0 + expect(@rpmdb.installed_size).to eq(0) @rpmdb.push(@rpm_w, @rpm_x) - @rpmdb.installed_size.should be == 1 + expect(@rpmdb.installed_size).to eq(1) end it "should have a total of 2 packages in the RPMDb" do - @rpmdb.size.should be == 0 + expect(@rpmdb.size).to eq(0) @rpmdb.push(@rpm_w, @rpm_x, @rpm_y, @rpm_z) - @rpmdb.size.should be == 2 + expect(@rpmdb.size).to eq(2) end it "should keep the Array unique when a duplicate is pushed" do @rpmdb.push(@rpm_z, @rpm_z_mirror) - @rpmdb["test-package-c"].size.should be == 1 + expect(@rpmdb["test-package-c"].size).to eq(1) end it "should register the package provides in the provides index" do @rpmdb.push(@rpm_v, @rpm_w, @rpm_z) - @rpmdb.lookup_provides("test-package-a")[0].should be == @rpm_v - @rpmdb.lookup_provides("config(test)")[0].should be == @rpm_z - @rpmdb.lookup_provides("libz.so.1()(64bit)")[0].should be == @rpm_v - @rpmdb.lookup_provides("libz.so.1()(64bit)")[1].should be == @rpm_z + expect(@rpmdb.lookup_provides("test-package-a")[0]).to eq(@rpm_v) + expect(@rpmdb.lookup_provides("config(test)")[0]).to eq(@rpm_z) + expect(@rpmdb.lookup_provides("libz.so.1()(64bit)")[0]).to eq(@rpm_v) + expect(@rpmdb.lookup_provides("libz.so.1()(64bit)")[1]).to eq(@rpm_z) end end describe "<<" do it "should accept an RPMPackage object through the << operator" do - lambda { @rpmdb << @rpm_w }.should_not raise_error + expect { @rpmdb << @rpm_w }.not_to raise_error end end describe "lookup" do it "should return an Array of RPMPackage objects by index" do @rpmdb << @rpm_w - @rpmdb.lookup("test-package-b").should be_kind_of(Array) + expect(@rpmdb.lookup("test-package-b")).to be_kind_of(Array) end end describe "[]" do it "should return an Array of RPMPackage objects though the [index] operator" do @rpmdb << @rpm_w - @rpmdb["test-package-b"].should be_kind_of(Array) + expect(@rpmdb["test-package-b"]).to be_kind_of(Array) end it "should return an Array of 3 RPMPackage objects" do @rpmdb.push(@rpm_w, @rpm_x, @rpm_y, @rpm_z) - @rpmdb["test-package-b"].size.should be == 3 + expect(@rpmdb["test-package-b"].size).to eq(3) end it "should return an Array of RPMPackage objects sorted from newest to oldest" do @rpmdb.push(@rpm_w, @rpm_x, @rpm_y, @rpm_z) - @rpmdb["test-package-b"][0].should be == @rpm_y - @rpmdb["test-package-b"][1].should be == @rpm_x - @rpmdb["test-package-b"][2].should be == @rpm_w + expect(@rpmdb["test-package-b"][0]).to eq(@rpm_y) + expect(@rpmdb["test-package-b"][1]).to eq(@rpm_x) + expect(@rpmdb["test-package-b"][2]).to eq(@rpm_w) end end @@ -1448,57 +1448,57 @@ describe Chef::Provider::Package::Yum::RPMDb do it "should return an Array of RPMPackage objects by index" do @rpmdb << @rpm_z x = @rpmdb.lookup_provides("config(test)") - x.should be_kind_of(Array) - x[0].should be == @rpm_z + expect(x).to be_kind_of(Array) + expect(x[0]).to eq(@rpm_z) end end describe "clear" do it "should clear the RPMDb" do - @rpmdb.should_receive(:clear_available).once - @rpmdb.should_receive(:clear_installed).once + expect(@rpmdb).to receive(:clear_available).once + expect(@rpmdb).to receive(:clear_installed).once @rpmdb.push(@rpm_w, @rpm_x, @rpm_y, @rpm_z) - @rpmdb.size.should_not be == 0 - @rpmdb.lookup_provides("config(test)").should be_kind_of(Array) + expect(@rpmdb.size).not_to eq(0) + expect(@rpmdb.lookup_provides("config(test)")).to be_kind_of(Array) @rpmdb.clear - @rpmdb.lookup_provides("config(test)").should be == nil - @rpmdb.size.should be == 0 + expect(@rpmdb.lookup_provides("config(test)")).to eq(nil) + expect(@rpmdb.size).to eq(0) end end describe "clear_available" do it "should clear the available list" do @rpmdb.push(@rpm_w, @rpm_x, @rpm_y, @rpm_z) - @rpmdb.available_size.should_not be == 0 + expect(@rpmdb.available_size).not_to eq(0) @rpmdb.clear_available - @rpmdb.available_size.should be == 0 + expect(@rpmdb.available_size).to eq(0) end end describe "available?" do it "should return true if a package is available" do - @rpmdb.available?(@rpm_w).should be == false + expect(@rpmdb.available?(@rpm_w)).to eq(false) @rpmdb.push(@rpm_v, @rpm_w) - @rpmdb.available?(@rpm_v).should be == false - @rpmdb.available?(@rpm_w).should be == true + expect(@rpmdb.available?(@rpm_v)).to eq(false) + expect(@rpmdb.available?(@rpm_w)).to eq(true) end end describe "clear_installed" do it "should clear the installed list" do @rpmdb.push(@rpm_w, @rpm_x, @rpm_y, @rpm_z) - @rpmdb.installed_size.should_not be == 0 + expect(@rpmdb.installed_size).not_to eq(0) @rpmdb.clear_installed - @rpmdb.installed_size.should be == 0 + expect(@rpmdb.installed_size).to eq(0) end end describe "installed?" do it "should return true if a package is installed" do - @rpmdb.installed?(@rpm_w).should be == false + expect(@rpmdb.installed?(@rpm_w)).to eq(false) @rpmdb.push(@rpm_w, @rpm_x) - @rpmdb.installed?(@rpm_w).should be == true - @rpmdb.installed?(@rpm_x).should be == false + expect(@rpmdb.installed?(@rpm_w)).to eq(true) + expect(@rpmdb.installed?(@rpm_x)).to eq(false) end end @@ -1506,12 +1506,12 @@ describe Chef::Provider::Package::Yum::RPMDb do it "should raise an error unless a RPMDependency is passed" do @rpmprovide = Chef::Provider::Package::Yum::RPMDependency.new("testing", "1:1.6.5-9.36.el5", :==) @rpmrequire = Chef::Provider::Package::Yum::RPMDependency.new("testing", "1:1.6.5-9.36.el5", :>=) - lambda { + expect { @rpmdb.whatprovides("hi") - }.should raise_error(ArgumentError) - lambda { + }.to raise_error(ArgumentError) + expect { @rpmdb.whatprovides(@rpmrequire) - }.should_not raise_error + }.not_to raise_error end it "should return an Array of packages statisfying a RPMDependency" do @@ -1519,14 +1519,14 @@ describe Chef::Provider::Package::Yum::RPMDb do @rpmrequire = Chef::Provider::Package::Yum::RPMDependency.parse("test-package-a >= 1.6.5") x = @rpmdb.whatprovides(@rpmrequire) - x.should be_kind_of(Array) - x[0].should be == @rpm_v + expect(x).to be_kind_of(Array) + expect(x[0]).to eq(@rpm_v) @rpmrequire = Chef::Provider::Package::Yum::RPMDependency.parse("libz.so.1()(64bit)") x = @rpmdb.whatprovides(@rpmrequire) - x.should be_kind_of(Array) - x[0].should be == @rpm_v - x[1].should be == @rpm_z + expect(x).to be_kind_of(Array) + expect(x[0]).to eq(@rpm_v) + expect(x[1]).to eq(@rpm_z) end end @@ -1592,18 +1592,18 @@ EOF Chef::Provider::Package::Yum::YumCache.reset_instance @yc = Chef::Provider::Package::Yum::YumCache.instance # load valid data - @yc.stub(:shell_out!).and_return(@status) + allow(@yc).to receive(:shell_out!).and_return(@status) end describe "initialize" do it "should return a Chef::Provider::Package::Yum::YumCache object" do - @yc.should be_kind_of(Chef::Provider::Package::Yum::YumCache) + expect(@yc).to be_kind_of(Chef::Provider::Package::Yum::YumCache) end it "should register reload for start of Chef::Client runs" do Chef::Provider::Package::Yum::YumCache.reset_instance - Chef::Client.should_receive(:when_run_starts) do |&b| - b.should_not be_nil + expect(Chef::Client).to receive(:when_run_starts) do |&b| + expect(b).not_to be_nil end @yc = Chef::Provider::Package::Yum::YumCache.instance end @@ -1611,7 +1611,7 @@ EOF describe "refresh" do it "should implicitly call yum-dump.py only once by default after being instantiated" do - @yc.should_receive(:shell_out!).once + expect(@yc).to receive(:shell_out!).once @yc.installed_version("zlib") @yc.reset @yc.installed_version("zlib") @@ -1619,226 +1619,226 @@ EOF it "should run yum-dump.py using the system python when next_refresh is for :all" do @yc.reload - @yc.should_receive(:shell_out!).with(%r{^/usr/bin/python .*/yum-dump.py --options --installed-provides --yum-lock-timeout 30$}, :timeout=>Chef::Config[:yum_timeout]) + expect(@yc).to receive(:shell_out!).with(%r{^/usr/bin/python .*/yum-dump.py --options --installed-provides --yum-lock-timeout 30$}, :timeout=>Chef::Config[:yum_timeout]) @yc.refresh end it "should run yum-dump.py with the installed flag when next_refresh is for :installed" do @yc.reload_installed - @yc.should_receive(:shell_out!).with(%r{^/usr/bin/python .*/yum-dump.py --installed --yum-lock-timeout 30$}, :timeout=>Chef::Config[:yum_timeout]) + expect(@yc).to receive(:shell_out!).with(%r{^/usr/bin/python .*/yum-dump.py --installed --yum-lock-timeout 30$}, :timeout=>Chef::Config[:yum_timeout]) @yc.refresh end it "should run yum-dump.py with the all-provides flag when next_refresh is for :provides" do @yc.reload_provides - @yc.should_receive(:shell_out!).with(%r{^/usr/bin/python .*/yum-dump.py --options --all-provides --yum-lock-timeout 30$}, :timeout=>Chef::Config[:yum_timeout]) + expect(@yc).to receive(:shell_out!).with(%r{^/usr/bin/python .*/yum-dump.py --options --all-provides --yum-lock-timeout 30$}, :timeout=>Chef::Config[:yum_timeout]) @yc.refresh end it "should pass extra_repo_control args to yum-dump.py" do @yc.enable_extra_repo_control("--enablerepo=foo --disablerepo=bar") - @yc.should_receive(:shell_out!).with(%r{^/usr/bin/python .*/yum-dump.py --options --installed-provides --enablerepo=foo --disablerepo=bar --yum-lock-timeout 30$}, :timeout=>Chef::Config[:yum_timeout]) + expect(@yc).to receive(:shell_out!).with(%r{^/usr/bin/python .*/yum-dump.py --options --installed-provides --enablerepo=foo --disablerepo=bar --yum-lock-timeout 30$}, :timeout=>Chef::Config[:yum_timeout]) @yc.refresh end it "should pass extra_repo_control args and configured yum lock timeout to yum-dump.py" do Chef::Config[:yum_lock_timeout] = 999 @yc.enable_extra_repo_control("--enablerepo=foo --disablerepo=bar") - @yc.should_receive(:shell_out!).with(%r{^/usr/bin/python .*/yum-dump.py --options --installed-provides --enablerepo=foo --disablerepo=bar --yum-lock-timeout 999$}, :timeout=>Chef::Config[:yum_timeout]) + expect(@yc).to receive(:shell_out!).with(%r{^/usr/bin/python .*/yum-dump.py --options --installed-provides --enablerepo=foo --disablerepo=bar --yum-lock-timeout 999$}, :timeout=>Chef::Config[:yum_timeout]) @yc.refresh end it "should warn about invalid data with too many separators" do @status = double("Status", :exitstatus => 0, :stdin => @stdin, :stdout => @stdout_bad_separators, :stderr => @stderr) - @yc.stub(:shell_out!).and_return(@status) - Chef::Log.should_receive(:warn).exactly(3).times.with(%r{Problem parsing}) + allow(@yc).to receive(:shell_out!).and_return(@status) + expect(Chef::Log).to receive(:warn).exactly(3).times.with(%r{Problem parsing}) @yc.refresh end it "should warn about invalid data with an incorrect type" do @status = double("Status", :exitstatus => 0, :stdin => @stdin, :stdout => @stdout_bad_type, :stderr => @stderr) - @yc.stub(:shell_out!).and_return(@status) - Chef::Log.should_receive(:warn).exactly(2).times.with(%r{Problem parsing}) + allow(@yc).to receive(:shell_out!).and_return(@status) + expect(Chef::Log).to receive(:warn).exactly(2).times.with(%r{Problem parsing}) @yc.refresh end it "should warn about no output from yum-dump.py" do @status = double("Status", :exitstatus => 0, :stdin => @stdin, :stdout => @stdout_no_output, :stderr => @stderr) - @yc.stub(:shell_out!).and_return(@status) - Chef::Log.should_receive(:warn).exactly(1).times.with(%r{no output from yum-dump.py}) + allow(@yc).to receive(:shell_out!).and_return(@status) + expect(Chef::Log).to receive(:warn).exactly(1).times.with(%r{no output from yum-dump.py}) @yc.refresh end it "should raise exception yum-dump.py exits with a non zero status" do @status = double("Status", :exitstatus => 1, :stdin => @stdin, :stdout => @stdout_no_output, :stderr => @stderr) - @yc.stub(:shell_out!).and_return(@status) - lambda { @yc.refresh}.should raise_error(Chef::Exceptions::Package, %r{CentOS-Base.repo, line: 12}) + allow(@yc).to receive(:shell_out!).and_return(@status) + expect { @yc.refresh}.to raise_error(Chef::Exceptions::Package, %r{CentOS-Base.repo, line: 12}) end it "should parse type 'i' into an installed state for a package" do - @yc.available_version("erlang-mochiweb").should be == nil - @yc.installed_version("erlang-mochiweb").should_not be == nil + expect(@yc.available_version("erlang-mochiweb")).to eq(nil) + expect(@yc.installed_version("erlang-mochiweb")).not_to eq(nil) end it "should parse type 'a' into an available state for a package" do - @yc.available_version("znc").should_not be == nil - @yc.installed_version("znc").should be == nil + expect(@yc.available_version("znc")).not_to eq(nil) + expect(@yc.installed_version("znc")).to eq(nil) end it "should parse type 'r' into an installed and available states for a package" do - @yc.available_version("zip").should_not be == nil - @yc.installed_version("zip").should_not be == nil + expect(@yc.available_version("zip")).not_to eq(nil) + expect(@yc.installed_version("zip")).not_to eq(nil) end it "should parse installonlypkgs from yum-dump.py options output" do - @yc.allow_multi_install.should be == %w{kernel kernel-bigmem kernel-enterprise} + expect(@yc.allow_multi_install).to eq(%w{kernel kernel-bigmem kernel-enterprise}) end end describe "installed_version" do it "should take one or two arguments" do - lambda { @yc.installed_version("zip") }.should_not raise_error - lambda { @yc.installed_version("zip", "i386") }.should_not raise_error - lambda { @yc.installed_version("zip", "i386", "extra") }.should raise_error(ArgumentError) + expect { @yc.installed_version("zip") }.not_to raise_error + expect { @yc.installed_version("zip", "i386") }.not_to raise_error + expect { @yc.installed_version("zip", "i386", "extra") }.to raise_error(ArgumentError) end it "should return version-release for matching package regardless of arch" do - @yc.installed_version("zip", "x86_64").should be == "2.31-2.el5" - @yc.installed_version("zip", nil).should be == "2.31-2.el5" + expect(@yc.installed_version("zip", "x86_64")).to eq("2.31-2.el5") + expect(@yc.installed_version("zip", nil)).to eq("2.31-2.el5") end it "should return version-release for matching package and arch" do - @yc.installed_version("zip", "x86_64").should be == "2.31-2.el5" - @yc.installed_version("zisofs-tools", "i386").should be == nil + expect(@yc.installed_version("zip", "x86_64")).to eq("2.31-2.el5") + expect(@yc.installed_version("zisofs-tools", "i386")).to eq(nil) end it "should return nil for an unmatched package" do - @yc.installed_version(nil, nil).should be == nil - @yc.installed_version("test1", nil).should be == nil - @yc.installed_version("test2", "x86_64").should be == nil + expect(@yc.installed_version(nil, nil)).to eq(nil) + expect(@yc.installed_version("test1", nil)).to eq(nil) + expect(@yc.installed_version("test2", "x86_64")).to eq(nil) end end describe "available_version" do it "should take one or two arguments" do - lambda { @yc.available_version("zisofs-tools") }.should_not raise_error - lambda { @yc.available_version("zisofs-tools", "i386") }.should_not raise_error - lambda { @yc.available_version("zisofs-tools", "i386", "extra") }.should raise_error(ArgumentError) + expect { @yc.available_version("zisofs-tools") }.not_to raise_error + expect { @yc.available_version("zisofs-tools", "i386") }.not_to raise_error + expect { @yc.available_version("zisofs-tools", "i386", "extra") }.to raise_error(ArgumentError) end it "should return version-release for matching package regardless of arch" do - @yc.available_version("zip", "x86_64").should be == "2.31-2.el5" - @yc.available_version("zip", nil).should be == "2.31-2.el5" + expect(@yc.available_version("zip", "x86_64")).to eq("2.31-2.el5") + expect(@yc.available_version("zip", nil)).to eq("2.31-2.el5") end it "should return version-release for matching package and arch" do - @yc.available_version("zip", "x86_64").should be == "2.31-2.el5" - @yc.available_version("zisofs-tools", "i386").should be == nil + expect(@yc.available_version("zip", "x86_64")).to eq("2.31-2.el5") + expect(@yc.available_version("zisofs-tools", "i386")).to eq(nil) end it "should return nil for an unmatched package" do - @yc.available_version(nil, nil).should be == nil - @yc.available_version("test1", nil).should be == nil - @yc.available_version("test2", "x86_64").should be == nil + expect(@yc.available_version(nil, nil)).to eq(nil) + expect(@yc.available_version("test1", nil)).to eq(nil) + expect(@yc.available_version("test2", "x86_64")).to eq(nil) end end describe "version_available?" do it "should take two or three arguments" do - lambda { @yc.version_available?("zisofs-tools") }.should raise_error(ArgumentError) - lambda { @yc.version_available?("zisofs-tools", "1.0.6-3.2.2") }.should_not raise_error - lambda { @yc.version_available?("zisofs-tools", "1.0.6-3.2.2", "x86_64") }.should_not raise_error + expect { @yc.version_available?("zisofs-tools") }.to raise_error(ArgumentError) + expect { @yc.version_available?("zisofs-tools", "1.0.6-3.2.2") }.not_to raise_error + expect { @yc.version_available?("zisofs-tools", "1.0.6-3.2.2", "x86_64") }.not_to raise_error end it "should return true if our package-version-arch is available" do - @yc.version_available?("zisofs-tools", "1.0.6-3.2.2", "x86_64").should be == true + expect(@yc.version_available?("zisofs-tools", "1.0.6-3.2.2", "x86_64")).to eq(true) end it "should return true if our package-version, no arch, is available" do - @yc.version_available?("zisofs-tools", "1.0.6-3.2.2", nil).should be == true - @yc.version_available?("zisofs-tools", "1.0.6-3.2.2").should be == true + expect(@yc.version_available?("zisofs-tools", "1.0.6-3.2.2", nil)).to eq(true) + expect(@yc.version_available?("zisofs-tools", "1.0.6-3.2.2")).to eq(true) end it "should return false if our package-version-arch isn't available" do - @yc.version_available?("zisofs-tools", "1.0.6-3.2.2", "pretend").should be == false - @yc.version_available?("zisofs-tools", "pretend", "x86_64").should be == false - @yc.version_available?("pretend", "1.0.6-3.2.2", "x86_64").should be == false + expect(@yc.version_available?("zisofs-tools", "1.0.6-3.2.2", "pretend")).to eq(false) + expect(@yc.version_available?("zisofs-tools", "pretend", "x86_64")).to eq(false) + expect(@yc.version_available?("pretend", "1.0.6-3.2.2", "x86_64")).to eq(false) end it "should return false if our package-version, no arch, isn't available" do - @yc.version_available?("zisofs-tools", "pretend", nil).should be == false - @yc.version_available?("zisofs-tools", "pretend").should be == false - @yc.version_available?("pretend", "1.0.6-3.2.2").should be == false + expect(@yc.version_available?("zisofs-tools", "pretend", nil)).to eq(false) + expect(@yc.version_available?("zisofs-tools", "pretend")).to eq(false) + expect(@yc.version_available?("pretend", "1.0.6-3.2.2")).to eq(false) end end describe "package_repository" do it "should take two or three arguments" do - lambda { @yc.package_repository("zisofs-tools") }.should raise_error(ArgumentError) - lambda { @yc.package_repository("zisofs-tools", "1.0.6-3.2.2") }.should_not raise_error - lambda { @yc.package_repository("zisofs-tools", "1.0.6-3.2.2", "x86_64") }.should_not raise_error + expect { @yc.package_repository("zisofs-tools") }.to raise_error(ArgumentError) + expect { @yc.package_repository("zisofs-tools", "1.0.6-3.2.2") }.not_to raise_error + expect { @yc.package_repository("zisofs-tools", "1.0.6-3.2.2", "x86_64") }.not_to raise_error end it "should return repoid for package-version-arch" do - @yc.package_repository("zlib-devel", "1.2.3-3", "i386").should be == "extras" - @yc.package_repository("zlib-devel", "1.2.3-3", "x86_64").should be == "base" + expect(@yc.package_repository("zlib-devel", "1.2.3-3", "i386")).to eq("extras") + expect(@yc.package_repository("zlib-devel", "1.2.3-3", "x86_64")).to eq("base") end it "should return repoid for package-version, no arch" do - @yc.package_repository("zisofs-tools", "1.0.6-3.2.2", nil).should be == "extras" - @yc.package_repository("zisofs-tools", "1.0.6-3.2.2").should be == "extras" + expect(@yc.package_repository("zisofs-tools", "1.0.6-3.2.2", nil)).to eq("extras") + expect(@yc.package_repository("zisofs-tools", "1.0.6-3.2.2")).to eq("extras") end it "should return nil when no match for package-version-arch" do - @yc.package_repository("zisofs-tools", "1.0.6-3.2.2", "pretend").should be == nil - @yc.package_repository("zisofs-tools", "pretend", "x86_64").should be == nil - @yc.package_repository("pretend", "1.0.6-3.2.2", "x86_64").should be == nil + expect(@yc.package_repository("zisofs-tools", "1.0.6-3.2.2", "pretend")).to eq(nil) + expect(@yc.package_repository("zisofs-tools", "pretend", "x86_64")).to eq(nil) + expect(@yc.package_repository("pretend", "1.0.6-3.2.2", "x86_64")).to eq(nil) end it "should return nil when no match for package-version, no arch" do - @yc.package_repository("zisofs-tools", "pretend", nil).should be == nil - @yc.package_repository("zisofs-tools", "pretend").should be == nil - @yc.package_repository("pretend", "1.0.6-3.2.2").should be == nil + expect(@yc.package_repository("zisofs-tools", "pretend", nil)).to eq(nil) + expect(@yc.package_repository("zisofs-tools", "pretend")).to eq(nil) + expect(@yc.package_repository("pretend", "1.0.6-3.2.2")).to eq(nil) end end describe "reset" do it "should empty the installed and available packages RPMDb" do - @yc.available_version("zip", "x86_64").should be == "2.31-2.el5" - @yc.installed_version("zip", "x86_64").should be == "2.31-2.el5" + expect(@yc.available_version("zip", "x86_64")).to eq("2.31-2.el5") + expect(@yc.installed_version("zip", "x86_64")).to eq("2.31-2.el5") @yc.reset - @yc.available_version("zip", "x86_64").should be == nil - @yc.installed_version("zip", "x86_64").should be == nil + expect(@yc.available_version("zip", "x86_64")).to eq(nil) + expect(@yc.installed_version("zip", "x86_64")).to eq(nil) end end describe "package_available?" do it "should return true a package name is available" do - @yc.package_available?("zisofs-tools").should be == true - @yc.package_available?("moo").should be == false - @yc.package_available?(nil).should be == false + expect(@yc.package_available?("zisofs-tools")).to eq(true) + expect(@yc.package_available?("moo")).to eq(false) + expect(@yc.package_available?(nil)).to eq(false) end it "should return true a package name + arch is available" do - @yc.package_available?("zlib-devel.i386").should be == true - @yc.package_available?("zisofs-tools.x86_64").should be == true - @yc.package_available?("znc-test.beta1.x86_64").should be == true - @yc.package_available?("znc-test.beta1").should be == true - @yc.package_available?("znc-test.test.beta1").should be == true - @yc.package_available?("moo.i386").should be == false - @yc.package_available?("zisofs-tools.beta").should be == false - @yc.package_available?("znc-test.test").should be == false + expect(@yc.package_available?("zlib-devel.i386")).to eq(true) + expect(@yc.package_available?("zisofs-tools.x86_64")).to eq(true) + expect(@yc.package_available?("znc-test.beta1.x86_64")).to eq(true) + expect(@yc.package_available?("znc-test.beta1")).to eq(true) + expect(@yc.package_available?("znc-test.test.beta1")).to eq(true) + expect(@yc.package_available?("moo.i386")).to eq(false) + expect(@yc.package_available?("zisofs-tools.beta")).to eq(false) + expect(@yc.package_available?("znc-test.test")).to eq(false) end end describe "enable_extra_repo_control" do it "should set @extra_repo_control to arg" do @yc.enable_extra_repo_control("--enablerepo=test") - @yc.extra_repo_control.should be == "--enablerepo=test" + expect(@yc.extra_repo_control).to eq("--enablerepo=test") end it "should call reload once when set to flag cache for update" do - @yc.should_receive(:reload).once + expect(@yc).to receive(:reload).once @yc.enable_extra_repo_control("--enablerepo=test") @yc.enable_extra_repo_control("--enablerepo=test") end @@ -1848,13 +1848,13 @@ EOF it "should set @extra_repo_control to nil" do @yc.enable_extra_repo_control("--enablerepo=test") @yc.disable_extra_repo_control - @yc.extra_repo_control.should be == nil + expect(@yc.extra_repo_control).to eq(nil) end it "should call reload once when cleared to flag cache for update" do - @yc.should_receive(:reload).once + expect(@yc).to receive(:reload).once @yc.enable_extra_repo_control("--enablerepo=test") - @yc.should_receive(:reload).once + expect(@yc).to receive(:reload).once @yc.disable_extra_repo_control @yc.disable_extra_repo_control end diff --git a/spec/unit/provider/package/zypper_spec.rb b/spec/unit/provider/package/zypper_spec.rb index 87f02d7794..17d99640e6 100644 --- a/spec/unit/provider/package/zypper_spec.rb +++ b/spec/unit/provider/package/zypper_spec.rb @@ -30,84 +30,84 @@ describe Chef::Provider::Package::Zypper do @status = double("Status", :exitstatus => 0) @provider = Chef::Provider::Package::Zypper.new(@new_resource, @run_context) - Chef::Resource::Package.stub(:new).and_return(@current_resource) - @provider.stub(:popen4).and_return(@status) + allow(Chef::Resource::Package).to receive(:new).and_return(@current_resource) + allow(@provider).to receive(:popen4).and_return(@status) @stderr = StringIO.new @stdout = StringIO.new @pid = double("PID") - @provider.stub(:`).and_return("2.0") + allow(@provider).to receive(:`).and_return("2.0") end describe "when loading the current package state" do it "should create a current resource with the name of the new_resource" do - Chef::Resource::Package.should_receive(:new).and_return(@current_resource) + expect(Chef::Resource::Package).to receive(:new).and_return(@current_resource) @provider.load_current_resource end it "should set the current resources package name to the new resources package name" do - @current_resource.should_receive(:package_name).with(@new_resource.package_name) + expect(@current_resource).to receive(:package_name).with(@new_resource.package_name) @provider.load_current_resource end it "should run zypper info with the package name" do - @provider.should_receive(:popen4).with("zypper --non-interactive info #{@new_resource.package_name}").and_return(@status) + expect(@provider).to receive(:popen4).with("zypper --non-interactive info #{@new_resource.package_name}").and_return(@status) @provider.load_current_resource end it "should set the installed version to nil on the current resource if zypper info installed version is (none)" do - @provider.stub(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) - @current_resource.should_receive(:version).with(nil).and_return(true) + allow(@provider).to receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + expect(@current_resource).to receive(:version).with(nil).and_return(true) @provider.load_current_resource end it "should set the installed version if zypper info has one" do @stdout = StringIO.new("Version: 1.0\nInstalled: Yes\n") - @provider.stub(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) - @current_resource.should_receive(:version).with("1.0").and_return(true) + allow(@provider).to receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + expect(@current_resource).to receive(:version).with("1.0").and_return(true) @provider.load_current_resource end it "should set the candidate version if zypper info has one" do @stdout = StringIO.new("Version: 1.0\nInstalled: No\nStatus: out-of-date (version 0.9 installed)") - @provider.stub(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + allow(@provider).to receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) @provider.load_current_resource - @provider.candidate_version.should eql("1.0") + expect(@provider.candidate_version).to eql("1.0") end it "should raise an exception if zypper info fails" do - @status.should_receive(:exitstatus).and_return(1) - lambda { @provider.load_current_resource }.should raise_error(Chef::Exceptions::Package) + expect(@status).to receive(:exitstatus).and_return(1) + expect { @provider.load_current_resource }.to raise_error(Chef::Exceptions::Package) end it "should not raise an exception if zypper info succeeds" do - @status.should_receive(:exitstatus).and_return(0) - lambda { @provider.load_current_resource }.should_not raise_error + expect(@status).to receive(:exitstatus).and_return(0) + expect { @provider.load_current_resource }.not_to raise_error end it "should return the current resouce" do - @provider.load_current_resource.should eql(@current_resource) + expect(@provider.load_current_resource).to eql(@current_resource) end end describe "install_package" do it "should run zypper install with the package name and version" do - Chef::Config.stub(:[]).with(:zypper_check_gpg).and_return(true) - @provider.should_receive(:shell_out!).with( + allow(Chef::Config).to receive(:[]).with(:zypper_check_gpg).and_return(true) + expect(@provider).to receive(:shell_out!).with( "zypper --non-interactive install --auto-agree-with-licenses emacs=1.0") @provider.install_package("emacs", "1.0") end it "should run zypper install without gpg checks" do - Chef::Config.stub(:[]).with(:zypper_check_gpg).and_return(false) - @provider.should_receive(:shell_out!).with( + allow(Chef::Config).to receive(:[]).with(:zypper_check_gpg).and_return(false) + expect(@provider).to receive(:shell_out!).with( "zypper --non-interactive --no-gpg-checks install "+ "--auto-agree-with-licenses emacs=1.0") @provider.install_package("emacs", "1.0") end it "should warn about gpg checks on zypper install" do - Chef::Log.should_receive(:warn).with( + expect(Chef::Log).to receive(:warn).with( /All packages will be installed without gpg signature checks/) - @provider.should_receive(:shell_out!).with( + expect(@provider).to receive(:shell_out!).with( "zypper --non-interactive --no-gpg-checks install "+ "--auto-agree-with-licenses emacs=1.0") @provider.install_package("emacs", "1.0") @@ -116,28 +116,28 @@ describe Chef::Provider::Package::Zypper do describe "upgrade_package" do it "should run zypper update with the package name and version" do - Chef::Config.stub(:[]).with(:zypper_check_gpg).and_return(true) - @provider.should_receive(:shell_out!).with( + allow(Chef::Config).to receive(:[]).with(:zypper_check_gpg).and_return(true) + expect(@provider).to receive(:shell_out!).with( "zypper --non-interactive install --auto-agree-with-licenses emacs=1.0") @provider.upgrade_package("emacs", "1.0") end it "should run zypper update without gpg checks" do - Chef::Config.stub(:[]).with(:zypper_check_gpg).and_return(false) - @provider.should_receive(:shell_out!).with( + allow(Chef::Config).to receive(:[]).with(:zypper_check_gpg).and_return(false) + expect(@provider).to receive(:shell_out!).with( "zypper --non-interactive --no-gpg-checks install "+ "--auto-agree-with-licenses emacs=1.0") @provider.upgrade_package("emacs", "1.0") end it "should warn about gpg checks on zypper upgrade" do - Chef::Log.should_receive(:warn).with( + expect(Chef::Log).to receive(:warn).with( /All packages will be installed without gpg signature checks/) - @provider.should_receive(:shell_out!).with( + expect(@provider).to receive(:shell_out!).with( "zypper --non-interactive --no-gpg-checks install "+ "--auto-agree-with-licenses emacs=1.0") @provider.upgrade_package("emacs", "1.0") end it "should run zypper upgrade without gpg checks" do - @provider.should_receive(:shell_out!).with( + expect(@provider).to receive(:shell_out!).with( "zypper --non-interactive --no-gpg-checks install "+ "--auto-agree-with-licenses emacs=1.0") @@ -149,8 +149,8 @@ describe Chef::Provider::Package::Zypper do context "when package version is not explicitly specified" do it "should run zypper remove with the package name" do - Chef::Config.stub(:[]).with(:zypper_check_gpg).and_return(true) - @provider.should_receive(:shell_out!).with( + allow(Chef::Config).to receive(:[]).with(:zypper_check_gpg).and_return(true) + expect(@provider).to receive(:shell_out!).with( "zypper --non-interactive remove emacs") @provider.remove_package("emacs", nil) end @@ -158,21 +158,21 @@ describe Chef::Provider::Package::Zypper do context "when package version is explicitly specified" do it "should run zypper remove with the package name" do - Chef::Config.stub(:[]).with(:zypper_check_gpg).and_return(true) - @provider.should_receive(:shell_out!).with( + allow(Chef::Config).to receive(:[]).with(:zypper_check_gpg).and_return(true) + expect(@provider).to receive(:shell_out!).with( "zypper --non-interactive remove emacs=1.0") @provider.remove_package("emacs", "1.0") end it "should run zypper remove without gpg checks" do - Chef::Config.stub(:[]).with(:zypper_check_gpg).and_return(false) - @provider.should_receive(:shell_out!).with( + allow(Chef::Config).to receive(:[]).with(:zypper_check_gpg).and_return(false) + expect(@provider).to receive(:shell_out!).with( "zypper --non-interactive --no-gpg-checks remove emacs=1.0") @provider.remove_package("emacs", "1.0") end it "should warn about gpg checks on zypper remove" do - Chef::Log.should_receive(:warn).with( + expect(Chef::Log).to receive(:warn).with( /All packages will be installed without gpg signature checks/) - @provider.should_receive(:shell_out!).with( + expect(@provider).to receive(:shell_out!).with( "zypper --non-interactive --no-gpg-checks remove emacs=1.0") @provider.remove_package("emacs", "1.0") @@ -182,20 +182,20 @@ describe Chef::Provider::Package::Zypper do describe "purge_package" do it "should run remove_package with the name and version" do - @provider.should_receive(:shell_out!).with( + expect(@provider).to receive(:shell_out!).with( "zypper --non-interactive --no-gpg-checks remove --clean-deps emacs=1.0") @provider.purge_package("emacs", "1.0") end it "should run zypper purge without gpg checks" do - Chef::Config.stub(:[]).with(:zypper_check_gpg).and_return(false) - @provider.should_receive(:shell_out!).with( + allow(Chef::Config).to receive(:[]).with(:zypper_check_gpg).and_return(false) + expect(@provider).to receive(:shell_out!).with( "zypper --non-interactive --no-gpg-checks remove --clean-deps emacs=1.0") @provider.purge_package("emacs", "1.0") end it "should warn about gpg checks on zypper purge" do - Chef::Log.should_receive(:warn).with( + expect(Chef::Log).to receive(:warn).with( /All packages will be installed without gpg signature checks/) - @provider.should_receive(:shell_out!).with( + expect(@provider).to receive(:shell_out!).with( "zypper --non-interactive --no-gpg-checks remove --clean-deps emacs=1.0") @provider.purge_package("emacs", "1.0") end @@ -203,12 +203,12 @@ describe Chef::Provider::Package::Zypper do describe "on an older zypper" do before(:each) do - @provider.stub(:`).and_return("0.11.6") + allow(@provider).to receive(:`).and_return("0.11.6") end describe "install_package" do it "should run zypper install with the package name and version" do - @provider.should_receive(:shell_out!).with( + expect(@provider).to receive(:shell_out!).with( "zypper --no-gpg-checks install --auto-agree-with-licenses -y emacs") @provider.install_package("emacs", "1.0") end @@ -216,7 +216,7 @@ describe Chef::Provider::Package::Zypper do describe "upgrade_package" do it "should run zypper update with the package name and version" do - @provider.should_receive(:shell_out!).with( + expect(@provider).to receive(:shell_out!).with( "zypper --no-gpg-checks install --auto-agree-with-licenses -y emacs") @provider.upgrade_package("emacs", "1.0") end @@ -224,7 +224,7 @@ describe Chef::Provider::Package::Zypper do describe "remove_package" do it "should run zypper remove with the package name" do - @provider.should_receive(:shell_out!).with( + expect(@provider).to receive(:shell_out!).with( "zypper --no-gpg-checks remove -y emacs") @provider.remove_package("emacs", "1.0") end |