Skip to content

Commit aabf71f

Browse files
hsbtclaude
andcommitted
Reject override :all, version: in Bundler::Dsl
Version requirements are per-gem and have no meaning relative to the `:all` target. Raise ArgumentError at the DSL entry point and store nothing when this combination is given, even if other valid fields are mixed in the same call. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 7d73d9e commit aabf71f

2 files changed

Lines changed: 23 additions & 0 deletions

File tree

bundler/lib/bundler/dsl.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,10 @@ def github(repo, options = {})
186186
end
187187

188188
def override(target, **operations)
189+
if target == :all && operations.key?(:version)
190+
raise ArgumentError, "`override :all, version:` is not allowed; version requirements are per-gem"
191+
end
192+
189193
operations.each do |field, operation|
190194
@overrides << Override.new(target, field, operation)
191195
end

spec/bundler/dsl_spec.rb

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,5 +397,24 @@
397397
it "is empty by default" do
398398
expect(subject.overrides).to eq([])
399399
end
400+
401+
it "raises ArgumentError when target is :all and version: is given" do
402+
expect do
403+
subject.override(:all, version: ">= 8.0")
404+
end.to raise_error(ArgumentError, /`override :all, version:` is not allowed/)
405+
end
406+
407+
it "rejects :all + version: even when other fields are also given" do
408+
expect do
409+
subject.override(:all, required_ruby_version: :ignore_upper, version: ">= 8.0")
410+
end.to raise_error(ArgumentError, /`override :all, version:` is not allowed/)
411+
end
412+
413+
it "does not record any override when :all + version: is rejected" do
414+
expect do
415+
subject.override(:all, version: ">= 8.0")
416+
end.to raise_error(ArgumentError)
417+
expect(subject.overrides).to eq([])
418+
end
400419
end
401420
end

0 commit comments

Comments
 (0)