diff options
Diffstat (limited to 'spec/bundler/bundler/remote_specification_spec.rb')
-rw-r--r-- | spec/bundler/bundler/remote_specification_spec.rb | 187 |
1 files changed, 0 insertions, 187 deletions
diff --git a/spec/bundler/bundler/remote_specification_spec.rb b/spec/bundler/bundler/remote_specification_spec.rb deleted file mode 100644 index 8115e026d8..0000000000 --- a/spec/bundler/bundler/remote_specification_spec.rb +++ /dev/null @@ -1,187 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::RemoteSpecification do - let(:name) { "foo" } - let(:version) { Gem::Version.new("1.0.0") } - let(:platform) { Gem::Platform::RUBY } - let(:spec_fetcher) { double(:spec_fetcher) } - - subject { described_class.new(name, version, platform, spec_fetcher) } - - it "is Comparable" do - expect(described_class.ancestors).to include(Comparable) - end - - it "can match platforms" do - expect(described_class.ancestors).to include(Bundler::MatchPlatform) - end - - describe "#fetch_platform" do - let(:remote_spec) { double(:remote_spec, :platform => "jruby") } - - before { allow(spec_fetcher).to receive(:fetch_spec).and_return(remote_spec) } - - it "should return the spec platform" do - expect(subject.fetch_platform).to eq("jruby") - end - end - - describe "#full_name" do - context "when platform is ruby" do - it "should return the spec name and version" do - expect(subject.full_name).to eq("foo-1.0.0") - end - end - - context "when platform is nil" do - let(:platform) { nil } - - it "should return the spec name and version" do - expect(subject.full_name).to eq("foo-1.0.0") - end - end - - context "when platform is a non-ruby platform" do - let(:platform) { "jruby" } - - it "should return the spec name, version, and platform" do - expect(subject.full_name).to eq("foo-1.0.0-jruby") - end - end - end - - describe "#<=>" do - let(:other_name) { name } - let(:other_version) { version } - let(:other_platform) { platform } - let(:other_spec_fetcher) { spec_fetcher } - - shared_examples_for "a comparison" do - context "which exactly matches" do - it "returns 0" do - expect(subject <=> other).to eq(0) - end - end - - context "which is different by name" do - let(:other_name) { "a" } - it "returns 1" do - expect(subject <=> other).to eq(1) - end - end - - context "which has a lower version" do - let(:other_version) { Gem::Version.new("0.9.0") } - it "returns 1" do - expect(subject <=> other).to eq(1) - end - end - - context "which has a higher version" do - let(:other_version) { Gem::Version.new("1.1.0") } - it "returns -1" do - expect(subject <=> other).to eq(-1) - end - end - - context "which has a different platform" do - let(:other_platform) { Gem::Platform.new("x86-mswin32") } - it "returns -1" do - expect(subject <=> other).to eq(-1) - end - end - end - - context "comparing another Bundler::RemoteSpecification" do - let(:other) do - Bundler::RemoteSpecification.new(other_name, other_version, - other_platform, nil) - end - - it_should_behave_like "a comparison" - end - - context "comparing a Gem::Specification" do - let(:other) do - Gem::Specification.new(other_name, other_version).tap do |s| - s.platform = other_platform - end - end - - it_should_behave_like "a comparison" - end - - context "comparing a non sortable object" do - let(:other) { Object.new } - let(:remote_spec) { double(:remote_spec, :platform => "jruby") } - - before do - allow(spec_fetcher).to receive(:fetch_spec).and_return(remote_spec) - allow(remote_spec).to receive(:<=>).and_return(nil) - end - - it "should use default object comparison" do - expect(subject <=> other).to eq(nil) - end - end - end - - describe "#__swap__" do - let(:spec) { double(:spec, :dependencies => []) } - let(:new_spec) { double(:new_spec, :dependencies => [], :runtime_dependencies => []) } - - before { subject.instance_variable_set(:@_remote_specification, spec) } - - it "should replace remote specification with the passed spec" do - expect(subject.instance_variable_get(:@_remote_specification)).to be(spec) - subject.__swap__(new_spec) - expect(subject.instance_variable_get(:@_remote_specification)).to be(new_spec) - end - end - - describe "#sort_obj" do - context "when platform is ruby" do - it "should return a sorting delegate array with name, version, and -1" do - expect(subject.sort_obj).to match_array(["foo", version, -1]) - end - end - - context "when platform is not ruby" do - let(:platform) { "jruby" } - - it "should return a sorting delegate array with name, version, and 1" do - expect(subject.sort_obj).to match_array(["foo", version, 1]) - end - end - end - - describe "method missing" do - context "and is present in Gem::Specification" do - let(:remote_spec) { double(:remote_spec, :authors => "abcd") } - - before do - allow(subject).to receive(:_remote_specification).and_return(remote_spec) - expect(subject.methods.map(&:to_sym)).not_to include(:authors) - end - - it "should send through to Gem::Specification" do - expect(subject.authors).to eq("abcd") - end - end - end - - describe "respond to missing?" do - context "and is present in Gem::Specification" do - let(:remote_spec) { double(:remote_spec, :authors => "abcd") } - - before do - allow(subject).to receive(:_remote_specification).and_return(remote_spec) - expect(subject.methods.map(&:to_sym)).not_to include(:authors) - end - - it "should send through to Gem::Specification" do - expect(subject.respond_to?(:authors)).to be_truthy - end - end - end -end |