spec/koji_spec.rb in polisher-0.9.1 vs spec/koji_spec.rb in polisher-0.10.1

- old
+ new

@@ -63,27 +63,46 @@ @client = double(XMLRPC::Client) described_class.should_receive(:client).at_least(:once).and_return(@client) end it "uses xmlrpc client to retreive versions" do - expected = ['listTagged', described_class.koji_tag, nil, false, + expected = ['listTagged', described_class.koji_tag, nil, true, nil, false, "rubygem-rails"] @client.should_receive(:call).with(*expected).and_return([]) described_class.versions_for 'rails' end it "handles multiple koji tags" do described_class.should_receive(:koji_tags).and_return(['tag1', 'tag2']) - expected1 = ['listTagged', 'tag1', nil, false, + expected1 = ['listTagged', 'tag1', nil, true, nil, false, "rubygem-rails"] - expected2 = ['listTagged', 'tag2', nil, false, + expected2 = ['listTagged', 'tag2', nil, true, nil, false, "rubygem-rails"] @client.should_receive(:call).with(*expected1).and_return([]) @client.should_receive(:call).with(*expected2).and_return([]) described_class.versions_for 'rails' end + it "handles multiple koji prefixes" do + @prefix = ['rubygem-', 'ruby193-rubygem-'] + described_class.should_receive(:package_prefix).twice.and_return(['rubygem-', 'ruby193-rubygem-']) + described_class.should_receive(:koji_tags).and_return(['tag1', 'tag2']) + expected1 = ['listTagged', 'tag1', nil, true, + nil, false, "rubygem-rails"] + expected2 = ['listTagged', 'tag2', nil, true, + nil, false, "rubygem-rails"] + expected3 = ['listTagged', 'tag1', nil, true, + nil, false, "ruby193-rubygem-rails"] + expected4 = ['listTagged', 'tag2', nil, true, + nil, false, "ruby193-rubygem-rails"] + @client.should_receive(:call).with(*expected1).and_return([]) + @client.should_receive(:call).with(*expected2).and_return([]) + @client.should_receive(:call).with(*expected3).and_return([]) + @client.should_receive(:call).with(*expected4).and_return([]) + described_class.versions_for 'rails' + end + it "returns versions" do versions = [{'version' => '1.0.0'}] @client.should_receive(:call).and_return(versions) described_class.versions_for('rails').should == ['1.0.0'] end @@ -93,9 +112,47 @@ @client.should_receive(:call).and_return(versions) cb = proc {} cb.should_receive(:call).with(:koji, 'rails', ['1.0.0']) described_class.versions_for('rails', &cb) + end + end # describe versions_for + + describe "#build" do + it "runs build_cmd" do + result = AwesomeSpawn::CommandResult.new "", "", "", 0 + expected = "#{described_class.build_cmd} build #{described_class.build_tgt} srpm" + AwesomeSpawn.should_receive(:run).with(expected).and_return(result) + described_class.should_receive(:require_cmd!) + .with(described_class.build_cmd).and_return(true) + described_class.build :srpm => 'srpm' + end + + it "runs scratch build" do + described_class.should_receive(:require_cmd!) + .with(described_class.build_cmd).and_return(true) + result = AwesomeSpawn::CommandResult.new "", "", "", 0 + expected = "#{described_class.build_cmd} build --scratch f20 srpm" + AwesomeSpawn.should_receive(:run).with(expected).and_return(result) + described_class.build :target => 'f20', :srpm => 'srpm', :scratch => true + end + + it "parses & returns url from build output" do + described_class.should_receive(:require_cmd!).and_return(true) + result = AwesomeSpawn::CommandResult.new "", "output", "", 0 + AwesomeSpawn.should_receive(:run).and_return(result) + described_class.should_receive(:parse_url).with('output').and_return('url') + described_class.build.should == 'url' + end + + describe "non-zero build exit status" do + it "raises runtime error with build url" do + described_class.should_receive(:require_cmd!).and_return(true) + result = AwesomeSpawn::CommandResult.new "", "", "", 1 + AwesomeSpawn.should_receive(:run).and_return(result) + described_class.should_receive(:parse_url).and_return('url') + lambda { described_class.build }.should raise_error(RuntimeError, 'url') + end end end end # describe Koji end # module Polisher