Skip to content

Commit

Permalink
ensure validation_deferred
Browse files Browse the repository at this point in the history
  • Loading branch information
dpep committed Oct 30, 2022
1 parent 8657465 commit b65c1c3
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 1 deletion.
3 changes: 2 additions & 1 deletion lib/addressable/uri.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2408,7 +2408,8 @@ def defer_validation
yield
@validation_deferred = false
validate
return nil
ensure
@validation_deferred = false
end

protected
Expand Down
22 changes: 22 additions & 0 deletions spec/addressable/uri_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6743,3 +6743,25 @@ def to_str
).to eq(main)
end
end

describe Addressable::URI, "when deferring validation" do
subject(:deferred) { uri.instance_variable_get(:@validation_deferred) }

let(:uri) { Addressable::URI.parse("http://example.com") }

it "defers validation within the block" do
uri.defer_validation do
expect(deferred).to be true
end
end

it "always resets deferal afterward" do
expect { uri.defer_validation { raise "boom" } }.to raise_error("boom")
expect(deferred).to be false
end

it "returns nil" do
res = uri.defer_validation {}
expect(res).to be nil
end
end

0 comments on commit b65c1c3

Please sign in to comment.