diff --git a/lib/bundler/dep_proxy.rb b/lib/bundler/dep_proxy.rb index 7a9423b14aa..6c32179ac18 100644 --- a/lib/bundler/dep_proxy.rb +++ b/lib/bundler/dep_proxy.rb @@ -10,11 +10,11 @@ def initialize(dep, platform) end def hash - @hash ||= dep.hash + @hash ||= [dep, __platform].hash end def ==(other) - return if other.nil? + return false if other.class != self.class dep == other.dep && __platform == other.__platform end diff --git a/spec/bundler/dep_proxy_spec.rb b/spec/bundler/dep_proxy_spec.rb new file mode 100644 index 00000000000..0f8d6b1076a --- /dev/null +++ b/spec/bundler/dep_proxy_spec.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +RSpec.describe Bundler::DepProxy do + let(:dep) { Bundler::Dependency.new("rake", ">= 0") } + subject { described_class.new(dep, Gem::Platform::RUBY) } + let(:same) { subject } + let(:other) { subject.dup } + let(:different) { described_class.new(dep, Gem::Platform::JAVA) } + + describe "#eql?" do + it { expect(subject.eql?(same)).to be true } + it { expect(subject.eql?(other)).to be true } + it { expect(subject.eql?(different)).to be false } + it { expect(subject.eql?(nil)).to be false } + it { expect(subject.eql?("foobar")).to be false } + end + + describe "#hash" do + it { expect(subject.hash).to eq(same.hash) } + it { expect(subject.hash).to eq(other.hash) } + end +end