spec/lib/packaging/config_spec.rb in packaging-0.108.2 vs spec/lib/packaging/config_spec.rb in packaging-0.109.0

- old
+ new

@@ -1,219 +1,219 @@ # -*- ruby -*- require 'spec_helper' require 'yaml' -describe "Pkg::Config" do +CONFIGURATION_KEYS = %i[ + apt_archive_path + apt_archive_repo_command + apt_host + apt_releases + apt_repo_path + apt_repo_url + apt_repo_name + apt_repo_command + author + benchmark + build_date + build_defaults + build_dmg + build_doc + build_gem + build_ips + build_msi + build_pe + build_tar + builder_data_file + bundle_platforms + certificate_pem + cows + db_table + deb_build_host + deb_build_mirrors + debversion + debug + default_cow + default_mock + description + dmg_path + downloads_archive_path + email + files + final_mocks + freight_archive_path + freight_conf + gem_default_executables + gem_dependencies + gem_description + gem_devel_dependencies + gem_development_dependencies + gem_excludes + gem_executables + gem_files + gem_forge_project + gem_host + gem_license + gem_name + gem_path + gem_platform_dependencies + gem_rdoc_options + gem_require_path + gem_required_ruby_version + gem_required_rubygems_version + gem_runtime_dependencies + gem_summary + gem_test_files + gemversion + gpg_key + gpg_name + homepage + ips_build_host + ips_host + ips_inter_cert + ips_package_host + ips_path + ips_repo + ips_store + jenkins_build_host + jenkins_packaging_job + jenkins_repo_path + metrics + metrics_url + msi_name + name + nonfinal_apt_repo_command + nonfinal_apt_repo_path + nonfinal_apt_repo_staging_path + nonfinal_dmg_path + nonfinal_gem_path + nonfinal_ips_path + nonfinal_msi_path + nonfinal_p5p_path + nonfinal_repo_name + nonfinal_repo_link_target + nonfinal_svr4_path + nonfinal_swix_path + nonfinal_yum_repo_path + notify + project + origversion + osx_build_host + packager + packaging_repo + packaging_root + packaging_url + pbuild_conf + pe_name + pe_version + pg_major_version + pre_tar_task + pre_tasks + privatekey_pem + random_mockroot + rc_mocks + release + rpm_build_host + rpmrelease + rpmversion + ref + repo_name + short_ref + sign_tar + signing_server + summary + svr4_host + svr4_path + swix_path + tar_excludes + tar_host + tarball_path + team + templates + update_version_file + version + version_file + version_strategy + yum_archive_path + yum_host + yum_repo_path + yum_repo_name + yum_repo_command +] - Build_Params = [:apt_archive_path, - :apt_archive_repo_command, - :apt_host, - :apt_releases, - :apt_repo_path, - :apt_repo_url, - :apt_repo_name, - :apt_repo_command, - :author, - :benchmark, - :build_date, - :build_defaults, - :build_dmg, - :build_doc, - :build_gem, - :build_ips, - :build_msi, - :build_pe, - :build_tar, - :builder_data_file, - :bundle_platforms, - :certificate_pem, - :cows, - :db_table, - :deb_build_host, - :deb_build_mirrors, - :debversion, - :debug, - :default_cow, - :default_mock, - :description, - :dmg_path, - :downloads_archive_path, - :email, - :files, - :final_mocks, - :freight_archive_path, - :freight_conf, - :gem_default_executables, - :gem_dependencies, - :gem_description, - :gem_devel_dependencies, - :gem_development_dependencies, - :gem_excludes, - :gem_executables, - :gem_files, - :gem_forge_project, - :gem_host, - :gem_license, - :gem_name, - :gem_path, - :gem_platform_dependencies, - :gem_rdoc_options, - :gem_require_path, - :gem_required_ruby_version, - :gem_required_rubygems_version, - :gem_runtime_dependencies, - :gem_summary, - :gem_test_files, - :gemversion, - :gpg_key, - :gpg_name, - :homepage, - :ips_build_host, - :ips_host, - :ips_inter_cert, - :ips_package_host, - :ips_path, - :ips_repo, - :ips_store, - :jenkins_build_host, - :jenkins_packaging_job, - :jenkins_repo_path, - :metrics, - :metrics_url, - :msi_name, - :name, - :nonfinal_apt_repo_command, - :nonfinal_apt_repo_path, - :nonfinal_apt_repo_staging_path, - :nonfinal_dmg_path, - :nonfinal_gem_path, - :nonfinal_ips_path, - :nonfinal_msi_path, - :nonfinal_p5p_path, - :nonfinal_repo_name, - :nonfinal_repo_link_target, - :nonfinal_svr4_path, - :nonfinal_swix_path, - :nonfinal_yum_repo_path, - :notify, - :project, - :origversion, - :osx_build_host, - :packager, - :packaging_repo, - :packaging_root, - :packaging_url, - :pbuild_conf, - :pe_name, - :pe_version, - :pg_major_version, - :pre_tar_task, - :pre_tasks, - :privatekey_pem, - :random_mockroot, - :rc_mocks, - :release, - :rpm_build_host, - :rpmrelease, - :rpmversion, - :ref, - :repo_name, - :short_ref, - :sign_tar, - :signing_server, - :summary, - :svr4_host, - :svr4_path, - :swix_path, - :tar_excludes, - :tar_host, - :tarball_path, - :team, - :templates, - :update_version_file, - :version, - :version_file, - :version_strategy, - :yum_archive_path, - :yum_host, - :yum_repo_path, - :yum_repo_name, - :yum_repo_command, - ] - - describe "#new" do - Build_Params.each do |param| - it "should have r/w accessors for #{param}" do - Pkg::Config.should respond_to(param) - Pkg::Config.should respond_to("#{param.to_s}=") +describe 'Pkg::Config' do + describe '#new' do + CONFIGURATION_KEYS.each do |configuration_key| + it "should have r/w accessors for #{configuration_key}" do + expect(Pkg::Config).to respond_to(configuration_key) + expect(Pkg::Config).to respond_to("#{configuration_key.to_s}=") end end end - describe "#config_from_hash" do - good_params = { :yum_host => 'foo', :pe_name => 'bar' } + describe '#config_from_hash' do + good_params = { yum_host: 'foo', pe_name: 'bar' } context "given a valid params hash #{good_params}" do - it "should set instance variable values for each param" do + it 'should set instance variable values for each param' do good_params.each do |param, value| - Pkg::Config.should_receive(:instance_variable_set).with("@#{param}", value) + expect(Pkg::Config).to receive(:instance_variable_set).with("@#{param}", value) end Pkg::Config.config_from_hash(good_params) end end - bad_params = { :foo => 'bar' } + bad_params = { foo: 'bar' } context "given an invalid params hash #{bad_params}" do bad_params.each do |param, value| it "should print a warning that param '#{param}' is not valid" do - Pkg::Config.should_receive(:warn).with(/No build data parameter found for '#{param}'/) + expect(Pkg::Config).to receive(:warn).with(/No build data parameter found for '#{param}'/) Pkg::Config.config_from_hash(bad_params) end it "should not try to set instance variable @:#{param}" do - Pkg::Config.should_not_receive(:instance_variable_set).with("@#{param}", value) + expect(Pkg::Config).to_not receive(:instance_variable_set).with("@#{param}", value) Pkg::Config.config_from_hash(bad_params) end end end - mixed_params = { :sign_tar => true, :baz => 'qux' } - context "given a hash with both valid and invalid params" do - it "should set the valid param" do - Pkg::Config.should_receive(:instance_variable_set).with("@sign_tar", true) + mixed_params = { sign_tar: true, baz: 'qux' } + context 'given a hash with both valid and invalid params' do + it 'should set the valid param' do + expect(Pkg::Config).to receive(:instance_variable_set).with("@sign_tar", true) Pkg::Config.config_from_hash(mixed_params) end - it "should issue a warning that the invalid param is not valid" do - Pkg::Config.should_receive(:warn).with(/No build data parameter found for 'baz'/) + it 'should issue a warning that the invalid param is not valid' do + expect(Pkg::Config).to receive(:warn).with(/No build data parameter found for 'baz'/) Pkg::Config.config_from_hash(mixed_params) end - it "should not try to set instance variable @:baz" do - Pkg::Config.should_not_receive(:instance_variable_set).with("@baz", "qux") + it 'should not try to set instance variable @:baz' do + expect(Pkg::Config).to_not receive(:instance_variable_set).with('@baz', 'qux') Pkg::Config.config_from_hash(mixed_params) end end end - describe "#params" do - it "should return a hash containing keys for all build parameters" do + describe '#params' do + it 'should return a hash containing keys for all build parameters' do params = Pkg::Config.config - Build_Params.each { |param| params.has_key?(param).should == true } + CONFIGURATION_KEYS.each { |param| expect(params.key?(param)).to be true } end end - describe "#platform_data" do - platform_tags = [ - 'osx-10.15-x86_64', - 'osx-11-x86_64', - 'ubuntu-18.04-amd64', - 'el-6-x86_64', - 'el-7-ppc64le', - 'sles-12-x86_64', + describe '#platform_data' do + platform_tags = %w[ + osx-10.15-x86_64 + osx-11-x86_64 + ubuntu-18.04-amd64 + el-6-x86_64 + el-7-ppc64le + sles-12-x86_64 ] - artifacts = \ + artifacts = "./artifacts/apple/10.15/PC1/x86_64/puppet-agent-5.3.2.658.gc79ef9a-1.osx10.15.dmg\n" \ "./artifacts/apple/11/PC1/x86_64/puppet-agent-5.3.2.658.gc79ef9a-1.osx11.dmg\n" \ "./artifacts/deb/bionic/PC1/puppet-agent_5.3.2-1bionic_amd64.deb\n" \ "./artifacts/el/6/PC1/x86_64/puppet-agent-5.3.2.658.gc79ef9a-1.el6.x86_64.rpm\n" \ "./artifacts/el/7/PC1/ppc64le/puppet-agent-5.3.2-1.el7.ppc64le.rpm\n" \ @@ -255,319 +255,340 @@ allow(Pkg::Config).to receive(:project).and_return(project) allow(Pkg::Config).to receive(:ref).and_return(ref) allow(Pkg::Util::Net).to receive(:check_host_ssh).and_return([]) end - it "should return a hash mapping platform tags to paths" do + it 'should return a hash mapping platform tags to paths' do allow(Pkg::Util::Net).to receive(:remote_execute).and_return(artifacts, nil) expect(Pkg::Config.platform_data.keys).to eql(platform_tags) end - it "should return nil if project isn't set" do + it 'should return nil if project isn\'t set' do allow(Pkg::Config).to receive(:project).and_return(nil) expect(Pkg::Config.platform_data).to be_nil end - it "should return nil if ref isn't set" do + it 'should return nil if ref isn\'t set' do allow(Pkg::Config).to receive(:ref).and_return(nil) expect(Pkg::Config.platform_data).to be_nil end - it "should return nil if can't connect to build server" do + it 'should return nil if can\'t connect to build server' do allow(Pkg::Util::Net).to receive(:check_host_ssh).and_return(['something']) expect(Pkg::Config.platform_data).to be_nil end - it "should not use 'f' in fedora platform tags" do + it 'should not use \'f\' in fedora platform tags' do allow(Pkg::Util::Net).to receive(:remote_execute).and_return(fedora_artifacts, nil) data = Pkg::Config.platform_data expect(data).to include('fedora-36-x86_64') expect(data).not_to include('fedora-f36-x86_64') end it "should collect packages whose extname differ from package_format" do allow(Pkg::Util::Net).to receive(:remote_execute).and_return(solaris_artifacts, nil) data = Pkg::Config.platform_data - expect(data).to include('solaris-10-i386' => {:artifact => './solaris/10/PC1/puppet-agent-5.3.2-1.i386.pkg.gz', :repo_config => nil}) - expect(data).to include('solaris-11-sparc' => {:artifact => './solaris/11/PC1/puppet-agent@5.3.2,5.11-1.sparc.p5p', :repo_config => nil}) + expect(data).to include( + 'solaris-10-i386' => { + artifact: './solaris/10/PC1/puppet-agent-5.3.2-1.i386.pkg.gz', + repo_config: nil + } + ) + expect(data).to include( + 'solaris-11-sparc' => { + artifact: './solaris/11/PC1/puppet-agent@5.3.2,5.11-1.sparc.p5p', + repo_config: nil + } + ) end - it "should collect versioned msis" do + it 'should collect versioned msis' do allow(Pkg::Util::Net).to receive(:remote_execute).and_return(windows_artifacts, nil) data = Pkg::Config.platform_data - expect(data['windows-2012-x86']).to include(:artifact => './windows/puppet-agent-5.3.2-x86.msi') - expect(data['windows-2012-x64']).to include(:artifact => './windows/puppet-agent-5.3.2-x64.msi') - expect(data['windowsfips-2012-x64']).to include(:artifact => './windowsfips/puppet-agent-5.3.2-x64.msi') + expect(data['windows-2012-x86']).to include(artifact: './windows/puppet-agent-5.3.2-x86.msi') + expect(data['windows-2012-x64']).to include(artifact: './windows/puppet-agent-5.3.2-x64.msi') + expect(data['windowsfips-2012-x64']).to include(artifact: './windowsfips/puppet-agent-5.3.2-x64.msi') end - it "should not collect debug packages" do + it 'should not collect debug packages' do allow(Pkg::Util::Net).to receive(:remote_execute).and_return(buster_artifacts, nil) data = Pkg::Config.platform_data - expect(data['debian-10-amd64']).to include(:artifact => './deb/buster/PC1/puppet-agent_5.3.2.658.gc79ef9a-1buster_amd64.deb') + expect(data['debian-10-amd64']).to include(artifact: './deb/buster/PC1/puppet-agent_5.3.2.658.gc79ef9a-1buster_amd64.deb') end - it "should collect packages that don't match the project name" do - allow(Pkg::Util::Net).to receive(:remote_execute).and_return(artifacts_not_matching_project, nil) + it 'should collect packages that don\'t match the project name' do + allow(Pkg::Util::Net).to receive(:remote_execute) + .and_return(artifacts_not_matching_project, nil) data = Pkg::Config.platform_data - expect(data['ubuntu-18.04-amd64']).to include(:artifact => './deb/bionic/pe-postgresql-contrib_2019.1.9.6.12-1bionic_amd64.deb') + expect(data['ubuntu-18.04-amd64']).to include(artifact: './deb/bionic/pe-postgresql-contrib_2019.1.9.6.12-1bionic_amd64.deb') expect(data['ubuntu-18.04-amd64'][:additional_artifacts].size).to eq(3) expect(data['ubuntu-18.04-amd64'][:additional_artifacts]).to include('./deb/bionic/pe-postgresql-devel_2019.1.9.6.12-1bionic_amd64.deb') expect(data['ubuntu-18.04-amd64'][:additional_artifacts]).to include('./deb/bionic/pe-postgresql-server_2019.1.9.6.12-1bionic_amd64.deb') expect(data['ubuntu-18.04-amd64'][:additional_artifacts]).to include('./deb/bionic/pe-postgresql_2019.1.9.6.12-1bionic_amd64.deb') end it "should use 'ppc' instead of 'power' in aix paths" do allow(Pkg::Util::Net).to receive(:remote_execute).and_return(aix_artifacts, nil) data = Pkg::Config.platform_data - expect(data['aix-7.1-power']).to include(:artifact => './aix/7.1/PC1/ppc/puppet-agent-5.3.2-1.aix7.1.ppc.rpm') + expect(data['aix-7.1-power']).to include(artifact: './aix/7.1/PC1/ppc/puppet-agent-5.3.2-1.aix7.1.ppc.rpm') end - it "should not record an aix repo config" do + it 'should not record an aix repo config' do allow(Pkg::Util::Net).to receive(:remote_execute).and_return(aix_artifacts, nil) data = Pkg::Config.platform_data expect(data['aix-7.1-power'][:repo_config]).to be_nil end end - describe "#config_to_yaml" do - it "should write a valid yaml file" do + describe '#config_to_yaml' do + it 'should write a valid yaml file' do file = double('file') - File.should_receive(:open).with(anything(), 'w').and_yield(file) - file.should_receive(:puts).with(instance_of(String)) - YAML.should_receive(:load_file).with(file) + expect(File).to receive(:open).with(anything, 'w').and_yield(file) + expect(file).to receive(:puts).with(instance_of(String)) + expect(YAML).to receive(:load_file).with(file) expect { YAML.load_file(file) }.to_not raise_error Pkg::Config.config_to_yaml end end - describe "#get_binding" do - it "should return the binding of the Pkg::Config object" do + describe '#get_binding' do + it 'should return the binding of the Pkg::Config object' do # test by eval'ing using the binding before and after setting a param orig = Pkg::Config.apt_host Pkg::Config.apt_host = "foo" - expect(eval("@apt_host", Pkg::Config.get_binding)).to eq("foo") + expect(eval('@apt_host', Pkg::Config.get_binding, __FILE__, __LINE__)).to eq("foo") Pkg::Config.apt_host = "bar" - expect(eval("@apt_host", Pkg::Config.get_binding)).to eq("bar") + expect(eval('@apt_host', Pkg::Config.get_binding, __FILE__, __LINE__)).to eq("bar") Pkg::Config.apt_host = orig end end - describe "#config_from_yaml" do - context "given a yaml file" do - it "should, use it to set params" do + describe '#config_from_yaml' do + context 'given a yaml file' do + it 'should, use it to set params' do # apt_host: is set to "foo" in the fixture orig = Pkg::Config.apt_host - Pkg::Config.apt_host = "bar" + Pkg::Config.apt_host = 'bar' Pkg::Config.config_from_yaml(File.join(FIXTURES, 'config', 'ext', 'build_defaults.yaml')) - expect(Pkg::Config.apt_host).to eq("foo") + expect(Pkg::Config.apt_host).to eq('foo') Pkg::Config.apt_host = orig end end end describe "#string_to_array" do - ary = %W(FOO BAR ARR RAY) - context "given a string with spaces in it" do - it "should return an array containing the contents of that string" do + sample_array = %w[FOO BAR ARR RAY] + context 'given a string with spaces in it' do + it 'should return an array containing the contents of that string' do space_str = "FOO BAR ARR RAY" - expect(Pkg::Config.string_to_array(space_str)).to eq(ary) + expect(Pkg::Config.string_to_array(space_str)).to eq(sample_array) end end - context "given a string with commas in it" do - it "should return an array containing the contents of that string" do - comma_str = "FOO,BAR,ARR,RAY" - expect(Pkg::Config.string_to_array(comma_str)).to eq(ary) + context 'given a string with commas in it' do + it 'should return an array containing the contents of that string' do + comma_str = 'FOO,BAR,ARR,RAY' + expect(Pkg::Config.string_to_array(comma_str)).to eq(sample_array) end end - context "given a string with semicolons in it" do - it "should return an array containing the contents of that string" do - semi_str = "FOO;BAR;ARR;RAY" - expect(Pkg::Config.string_to_array(semi_str)).to eq(ary) + context 'given a string with semicolons in it' do + it 'should return an array containing the contents of that string' do + semi_str = 'FOO;BAR;ARR;RAY' + expect(Pkg::Config.string_to_array(semi_str)).to eq(sample_array) end end - context "given a string with multiple delimiters in it" do + context 'given a string with multiple delimiters in it' do delimiters = [',', ' ', ';'] - mixed_str = "FOO, BAR, ARR, ; RAY" - mixed_arr = Pkg::Config.string_to_array(mixed_str) + sample_string = "FOO, BAR, ARR, ; RAY" + sample_array = Pkg::Config.string_to_array(sample_string) - it "should not return the delimiters as array items" do - expect(mixed_arr).to_not include(*delimiters) + it 'should not return the delimiters as array items' do + expect(sample_array).to_not include(*delimiters) end - it "should not contain empty strings" do - expect(mixed_arr).to_not include("\s") + it 'should not contain empty strings' do + expect(sample_array).to_not include("\s") end - it "should still return the expected array" do - expect(mixed_arr).to eq(ary) + it 'should still return the expected array' do + expect(sample_array).to eq(sample_array) end end end - describe "#cow_list" do + describe '#cow_list' do it "should return a list of the cows for a project" do - Pkg::Config.cows = "base-lucid-i386.cow base-lucid-amd64.cow base-precise-i386.cow base-precise-amd64.cow base-quantal-i386.cow base-quantal-amd64.cow base-saucy-i386.cow base-saucy-amd64.cow base-sid-i386.cow base-sid-amd64.cow base-squeeze-i386.cow base-squeeze-amd64.cow base-stable-i386.cow base-stable-amd64.cow base-testing-i386.cow base-testing-amd64.cow base-trusty-i386.cow base-trusty-amd64.cow base-unstable-i386.cow base-unstable-amd64.cow base-wheezy-i386.cow base-wheezy-amd64.cow" - Pkg::Config.cow_list.should eq "lucid precise quantal saucy sid squeeze stable testing trusty unstable wheezy" + Pkg::Config.cows = %w[ + base-lucid-i386.cow base-lucid-amd64.cow base-precise-i386.cow + base-precise-amd64.cow base-quantal-i386.cow base-quantal-amd64.cow base-saucy-i386.cow + base-saucy-amd64.cow base-sid-i386.cow base-sid-amd64.cow base-squeeze-i386.cow + base-squeeze-amd64.cow base-stable-i386.cow base-stable-amd64.cow base-testing-i386.cow + base-testing-amd64.cow base-trusty-i386.cow base-trusty-amd64.cow base-unstable-i386.cow + base-unstable-amd64.cow base-wheezy-i386.cow base-wheezy-amd64.cow + ].join(' ') + + expect(Pkg::Config.cow_list) + .to eq 'lucid precise quantal saucy sid squeeze stable testing trusty unstable wheezy' end end - describe "#config" do - context "given :format => :hash" do - it "should call Pkg::Config.config_to_hash" do + describe '#config' do + context 'given :format => :hash' do + it 'should call Pkg::Config.config_to_hash' do expect(Pkg::Config).to receive(:config_to_hash) - Pkg::Config.config(:target => nil, :format => :hash) + Pkg::Config.config(target: nil, format: :hash) end end - context "given :format => :yaml" do - it "should call Pkg::Config.config_to_yaml if given :format => :yaml" do + context 'given :format => :yaml' do + it 'should call Pkg::Config.config_to_yaml if given :format => :yaml' do expect(Pkg::Config).to receive(:config_to_yaml) - Pkg::Config.config(:target => nil, :format => :yaml) + Pkg::Config.config(target: nil, format: :yaml) end end end - describe "#issue_reassignments" do + describe '#issue_reassignments' do around do |example| - prev_tar_host = Pkg::Config.tar_host + original_tar_host = Pkg::Config.tar_host Pkg::Config.tar_host = nil example.run - Pkg::Config.tar_host = prev_tar_host + Pkg::Config.tar_host = original_tar_host end - it "should set tar_host to staging_server" do - Pkg::Config.config_from_hash({ :staging_server => 'foo' }) + it 'should set tar_host to staging_server' do + Pkg::Config.config_from_hash({ staging_server: 'foo' }) Pkg::Config.issue_reassignments - Pkg::Config.tar_host.should eq("foo") + expect(Pkg::Config.tar_host).to eq('foo') end end - describe "#config_to_hash" do - it "should return a hash object" do - hash = Pkg::Config.config_to_hash - hash.should be_a(Hash) + describe '#config_to_hash' do + it 'should return a hash object' do + expect(Pkg::Config.config_to_hash).to be_a(Hash) end - it "should return a hash with the current parameters" do - Pkg::Config.apt_host = "foo" - Pkg::Config.config_to_hash[:apt_host].should eq("foo") - Pkg::Config.apt_host = "bar" - Pkg::Config.config_to_hash[:apt_host].should eq("bar") + it 'should return a hash with the current parameters' do + Pkg::Config.apt_host = 'foo' + expect(Pkg::Config.config_to_hash[:apt_host]).to eq('foo') + Pkg::Config.apt_host = 'bar' + expect(Pkg::Config.config_to_hash[:apt_host]).to eq('bar') end end - describe "#load_default_configs" do + describe '#load_default_configs' do before(:each) do - @project_root = double('project_root') + @project_root = 'project_root' Pkg::Config.project_root = @project_root @test_project_data = File.join(Pkg::Config.project_root, 'ext', 'project_data.yaml') @test_build_defaults = File.join(Pkg::Config.project_root, 'ext', 'build_defaults.yaml') end around do |example| - orig = Pkg::Config.project_root + project_root_save = Pkg::Config.project_root example.run - Pkg::Config.project_root = orig + Pkg::Config.project_root = project_root_save end - context "given ext/build_defaults.yaml and ext/project_data.yaml are readable" do - it "should try to load build_defaults.yaml and project_data.yaml" do + context 'given ext/build_defaults.yaml and ext/project_data.yaml are readable' do + it 'should try to load build_defaults.yaml and project_data.yaml' do allow(File).to receive(:readable?).with(@test_project_data).and_return(true) allow(File).to receive(:readable?).with(@test_build_defaults).and_return(true) expect(Pkg::Config).to receive(:config_from_yaml).with(@test_project_data) expect(Pkg::Config).to receive(:config_from_yaml).with(@test_build_defaults) Pkg::Config.load_default_configs end end - context "given ext/build_defaults.yaml is readable but ext/project_data.yaml is not" do - it "should try to load build_defaults.yaml but not project_data.yaml" do + context 'given ext/build_defaults.yaml is readable but ext/project_data.yaml is not' do + it 'should try to load build_defaults.yaml but not project_data.yaml' do allow(File).to receive(:readable?).with(@test_project_data).and_return(false) allow(File).to receive(:readable?).with(@test_build_defaults).and_return(true) expect(Pkg::Config).to_not receive(:config_from_yaml).with(@test_project_data) expect(Pkg::Config).to receive(:config_from_yaml).with(@test_build_defaults) Pkg::Config.load_default_configs end end - context "given ext/build_defaults.yaml is not readable but ext/project_data.yaml is" do - it "should try to load build_defaults.yaml then unset project_root" do + context 'given ext/build_defaults.yaml is not readable but ext/project_data.yaml is' do + it 'should try to load build_defaults.yaml then unset project_root' do allow(File).to receive(:readable?).with(@test_project_data).and_return(true) allow(File).to receive(:readable?).with(@test_build_defaults).and_return(false) expect(Pkg::Config).to_not receive(:config_from_yaml).with(@test_build_defaults) Pkg::Config.load_default_configs expect(Pkg::Config.project_root).to be_nil end end - context "given ext/build_defaults.yaml and ext/project_data.yaml are not readable" do - it "should not try to load build_defaults.yaml and project_data.yaml" do + context 'given ext/build_defaults.yaml and ext/project_data.yaml are not readable' do + it 'should not try to load build_defaults.yaml and project_data.yaml' do Pkg::Config.project_root = 'foo' expect(Pkg::Config).to_not receive(:config_from_yaml) Pkg::Config.load_default_configs end - it "should set the project root to nil" do + it 'should set the project root to nil' do Pkg::Config.project_root = 'foo' Pkg::Config.load_default_configs expect(Pkg::Config.project_root).to be_nil end end end - describe "#load_versioning" do + describe '#load_versioning' do around do |example| - orig = Pkg::Config.project_root + project_root_save = Pkg::Config.project_root example.run - Pkg::Config.project_root = orig + Pkg::Config.project_root = project_root_save end # We let the actual version determination testing happen in the version # tests. Here we just test that we try when we should. - context "When project root is nil" do - it "should not try to load versioning" do + context 'When project root is nil' do + it 'should not try to load versioning' do Pkg::Config.project_root = nil expect(Pkg::Util::Version).to_not receive(:git_sha_or_tag) Pkg::Config.load_versioning end end end - describe "#load_envvars" do + describe '#load_envvars' do # We're going to pollute the environment with this test, so afterwards we # explicitly set everything to nil to prevent any hazardous effects on # the rest of the tests. after(:all) do - reset_env(Pkg::Params::ENV_VARS.map {|hash| hash[:envvar].to_s}) + reset_env(Pkg::Params::ENV_VARS.map { |hash| hash[:envvar].to_s }) end Pkg::Params::ENV_VARS.each do |v| case v[:type] when :bool it "should set boolean value on #{v[:var]} for :type == :bool" do - ENV[v[:envvar].to_s] = "FOO" - Pkg::Util.stub(:boolean_value) {"FOO"} + ENV[v[:envvar].to_s] = 'FOO' + allow(Pkg::Util).to receive(:boolean_value).and_return('FOO') allow(Pkg::Config).to receive(:instance_variable_set) - expect(Pkg::Util).to receive(:boolean_value).with("FOO") - expect(Pkg::Config).to receive(:instance_variable_set).with("@#{v[:var]}", "FOO") + expect(Pkg::Util).to receive(:boolean_value).with('FOO') + expect(Pkg::Config).to receive(:instance_variable_set).with("@#{v[:var]}", 'FOO') Pkg::Config.load_envvars end when :array it "should set Pkg::Config##{v[:var]} to an Array for :type == :array" do - ENV[v[:envvar].to_s] = "FOO BAR ARR RAY" - Pkg::Config.stub(:string_to_array) {%w(FOO BAR ARR RAY)} + ENV[v[:envvar].to_s] = 'FOO BAR ARR RAY' + allow(Pkg::Config).to receive(:string_to_array).and_return(%w[FOO BAR ARR RAY]) allow(Pkg::Config).to receive(:instance_variable_set) - expect(Pkg::Config).to receive(:string_to_array).with("FOO BAR ARR RAY") - expect(Pkg::Config).to receive(:instance_variable_set).with("@#{v[:var]}", %w(FOO BAR ARR RAY)) + expect(Pkg::Config).to receive(:string_to_array).with('FOO BAR ARR RAY') + expect(Pkg::Config) + .to receive(:instance_variable_set) + .with("@#{v[:var]}", %w[FOO BAR ARR RAY]) Pkg::Config.load_envvars end else it "should set Pkg::Config##{v[:var]} to ENV[#{v[:envvar].to_s}]" do ENV[v[:envvar].to_s] = "FOO" - Pkg::Util.stub(:boolean_value) {"FOO"} + allow(Pkg::Util).to receive(:boolean_value).and_return('FOO') allow(Pkg::Config).to receive(:instance_variable_set) expect(Pkg::Config).to receive(:instance_variable_set).with("@#{v[:var]}", "FOO") Pkg::Config.load_envvars end end