summaryrefslogtreecommitdiff
path: root/spec/bundler/bundler/dep_proxy_spec.rb
blob: 8d02a337250d3b396274e8ef364689a416a1c63f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# frozen_string_literal: true

RSpec.describe Bundler::DepProxy do
  let(:dep) { Bundler::Dependency.new("rake", ">= 0") }
  subject { described_class.get_proxy(dep, Gem::Platform::RUBY) }
  let(:same) { subject }
  let(:other) { described_class.get_proxy(dep, Gem::Platform::RUBY) }
  let(:different) { described_class.get_proxy(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 "must use factory methods" do
    it { expect { described_class.new(dep, Gem::Platform::RUBY) }.to raise_error NoMethodError }
    it { expect { subject.dup }.to raise_error NoMethodError }
    it { expect { subject.clone }.to raise_error NoMethodError }
  end

  describe "frozen" do
    if Gem.ruby_version >= Gem::Version.new("2.5.0")
      error = Object.const_get("FrozenError")
    else
      error = RuntimeError
    end
    it { expect { subject.instance_variable_set(:@__platform, {}) }.to raise_error error }
  end
end