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