60 lines
1.4 KiB
Ruby
60 lines
1.4 KiB
Ruby
|
require 'spec_helper'
|
||
|
|
||
|
describe Bundler::Retry do
|
||
|
it "return successful result if no errors" do
|
||
|
attempts = 0
|
||
|
result = Bundler::Retry.new(nil, nil, 3).attempt do
|
||
|
attempts += 1
|
||
|
:success
|
||
|
end
|
||
|
expect(result).to eq(:success)
|
||
|
expect(attempts).to eq(1)
|
||
|
end
|
||
|
|
||
|
it "defaults to retrying twice" do
|
||
|
attempts = 0
|
||
|
expect {
|
||
|
Bundler::Retry.new(nil).attempt do
|
||
|
attempts += 1
|
||
|
raise "nope"
|
||
|
end
|
||
|
}.to raise_error("nope")
|
||
|
expect(attempts).to eq(3)
|
||
|
end
|
||
|
|
||
|
it "returns the first valid result" do
|
||
|
jobs = [Proc.new{ raise "foo" }, Proc.new{ :bar }, Proc.new{ raise "foo" }]
|
||
|
attempts = 0
|
||
|
result = Bundler::Retry.new(nil, nil, 3).attempt do
|
||
|
attempts += 1
|
||
|
jobs.shift.call
|
||
|
end
|
||
|
expect(result).to eq(:bar)
|
||
|
expect(attempts).to eq(2)
|
||
|
end
|
||
|
|
||
|
it "raises the last error" do
|
||
|
errors = [StandardError, StandardError, StandardError, Bundler::GemfileNotFound]
|
||
|
attempts = 0
|
||
|
expect {
|
||
|
Bundler::Retry.new(nil, nil, 3).attempt do
|
||
|
attempts += 1
|
||
|
raise errors.shift
|
||
|
end
|
||
|
}.to raise_error(Bundler::GemfileNotFound)
|
||
|
expect(attempts).to eq(4)
|
||
|
end
|
||
|
|
||
|
it "raises exceptions" do
|
||
|
error = Bundler::GemfileNotFound
|
||
|
attempts = 0
|
||
|
expect {
|
||
|
Bundler::Retry.new(nil, error).attempt do
|
||
|
attempts += 1
|
||
|
raise error
|
||
|
end
|
||
|
}.to raise_error(error)
|
||
|
expect(attempts).to eq(1)
|
||
|
end
|
||
|
end
|