From 7825e8363d4b2ccad8e2d3f5eeba9e26f6656911 Mon Sep 17 00:00:00 2001 From: hsbt Date: Fri, 22 Dec 2017 23:08:05 +0000 Subject: Postponing the Bundler merge. I faced a big issue about Bundler with ruby core. I have no time to resolve it issue before 2.5 final release. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61416 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- spec/bundler/bundler/mirror_spec.rb | 329 ------------------------------------ 1 file changed, 329 deletions(-) delete mode 100644 spec/bundler/bundler/mirror_spec.rb (limited to 'spec/bundler/bundler/mirror_spec.rb') diff --git a/spec/bundler/bundler/mirror_spec.rb b/spec/bundler/bundler/mirror_spec.rb deleted file mode 100644 index 0a8b9f8926..0000000000 --- a/spec/bundler/bundler/mirror_spec.rb +++ /dev/null @@ -1,329 +0,0 @@ -# frozen_string_literal: true - -require "bundler/mirror" - -RSpec.describe Bundler::Settings::Mirror do - let(:mirror) { Bundler::Settings::Mirror.new } - - it "returns zero when fallback_timeout is not set" do - expect(mirror.fallback_timeout).to eq(0) - end - - it "takes a number as a fallback_timeout" do - mirror.fallback_timeout = 1 - expect(mirror.fallback_timeout).to eq(1) - end - - it "takes truthy as a default fallback timeout" do - mirror.fallback_timeout = true - expect(mirror.fallback_timeout).to eq(0.1) - end - - it "takes falsey as a zero fallback timeout" do - mirror.fallback_timeout = false - expect(mirror.fallback_timeout).to eq(0) - end - - it "takes a string with 'true' as a default fallback timeout" do - mirror.fallback_timeout = "true" - expect(mirror.fallback_timeout).to eq(0.1) - end - - it "takes a string with 'false' as a zero fallback timeout" do - mirror.fallback_timeout = "false" - expect(mirror.fallback_timeout).to eq(0) - end - - it "takes a string for the uri but returns an uri object" do - mirror.uri = "http://localhost:9292" - expect(mirror.uri).to eq(URI("http://localhost:9292")) - end - - it "takes an uri object for the uri" do - mirror.uri = URI("http://localhost:9293") - expect(mirror.uri).to eq(URI("http://localhost:9293")) - end - - context "without a uri" do - it "invalidates the mirror" do - mirror.validate! - expect(mirror.valid?).to be_falsey - end - end - - context "with an uri" do - before { mirror.uri = "http://localhost:9292" } - - context "without a fallback timeout" do - it "is not valid by default" do - expect(mirror.valid?).to be_falsey - end - - context "when probed" do - let(:probe) { double } - - context "with a replying mirror" do - before do - allow(probe).to receive(:replies?).and_return(true) - mirror.validate!(probe) - end - - it "is valid" do - expect(mirror.valid?).to be_truthy - end - end - - context "with a non replying mirror" do - before do - allow(probe).to receive(:replies?).and_return(false) - mirror.validate!(probe) - end - - it "is still valid" do - expect(mirror.valid?).to be_truthy - end - end - end - end - - context "with a fallback timeout" do - before { mirror.fallback_timeout = 1 } - - it "is not valid by default" do - expect(mirror.valid?).to be_falsey - end - - context "when probed" do - let(:probe) { double } - - context "with a replying mirror" do - before do - allow(probe).to receive(:replies?).and_return(true) - mirror.validate!(probe) - end - - it "is valid" do - expect(mirror.valid?).to be_truthy - end - - it "is validated only once" do - allow(probe).to receive(:replies?).and_raise("Only once!") - mirror.validate!(probe) - expect(mirror.valid?).to be_truthy - end - end - - context "with a non replying mirror" do - before do - allow(probe).to receive(:replies?).and_return(false) - mirror.validate!(probe) - end - - it "is not valid" do - expect(mirror.valid?).to be_falsey - end - - it "is validated only once" do - allow(probe).to receive(:replies?).and_raise("Only once!") - mirror.validate!(probe) - expect(mirror.valid?).to be_falsey - end - end - end - end - - describe "#==" do - it "returns true if uri and fallback timeout are the same" do - uri = "https://ruby.taobao.org" - mirror = Bundler::Settings::Mirror.new(uri, 1) - another_mirror = Bundler::Settings::Mirror.new(uri, 1) - - expect(mirror == another_mirror).to be true - end - end - end -end - -RSpec.describe Bundler::Settings::Mirrors do - let(:localhost_uri) { URI("http://localhost:9292") } - - context "with a just created mirror" do - let(:mirrors) do - probe = double - allow(probe).to receive(:replies?).and_return(true) - Bundler::Settings::Mirrors.new(probe) - end - - it "returns a mirror that contains the source uri for an unknown uri" do - mirror = mirrors.for("http://rubygems.org/") - expect(mirror).to eq(Bundler::Settings::Mirror.new("http://rubygems.org/")) - end - - it "parses a mirror key and returns a mirror for the parsed uri" do - mirrors.parse("mirror.http://rubygems.org/", localhost_uri) - expect(mirrors.for("http://rubygems.org/").uri).to eq(localhost_uri) - end - - it "parses a relative mirror key and returns a mirror for the parsed http uri" do - mirrors.parse("mirror.rubygems.org", localhost_uri) - expect(mirrors.for("http://rubygems.org/").uri).to eq(localhost_uri) - end - - it "parses a relative mirror key and returns a mirror for the parsed https uri" do - mirrors.parse("mirror.rubygems.org", localhost_uri) - expect(mirrors.for("https://rubygems.org/").uri).to eq(localhost_uri) - end - - context "with a uri parsed already" do - before { mirrors.parse("mirror.http://rubygems.org/", localhost_uri) } - - it "takes a mirror fallback_timeout and assigns the timeout" do - mirrors.parse("mirror.http://rubygems.org.fallback_timeout", "2") - expect(mirrors.for("http://rubygems.org/").fallback_timeout).to eq(2) - end - - it "parses a 'true' fallback timeout and sets the default timeout" do - mirrors.parse("mirror.http://rubygems.org.fallback_timeout", "true") - expect(mirrors.for("http://rubygems.org/").fallback_timeout).to eq(0.1) - end - - it "parses a 'false' fallback timeout and sets it to zero" do - mirrors.parse("mirror.http://rubygems.org.fallback_timeout", "false") - expect(mirrors.for("http://rubygems.org/").fallback_timeout).to eq(0) - end - end - end - - context "with a mirror prober that replies on time" do - let(:mirrors) do - probe = double - allow(probe).to receive(:replies?).and_return(true) - Bundler::Settings::Mirrors.new(probe) - end - - context "with a default fallback_timeout for rubygems.org" do - before do - mirrors.parse("mirror.http://rubygems.org/", localhost_uri) - mirrors.parse("mirror.http://rubygems.org.fallback_timeout", "true") - end - - it "returns localhost" do - expect(mirrors.for("http://rubygems.org").uri).to eq(localhost_uri) - end - end - - context "with a mirror for all" do - before do - mirrors.parse("mirror.all", localhost_uri) - end - - context "without a fallback timeout" do - it "returns localhost uri for rubygems" do - expect(mirrors.for("http://rubygems.org").uri).to eq(localhost_uri) - end - - it "returns localhost for any other url" do - expect(mirrors.for("http://whatever.com/").uri).to eq(localhost_uri) - end - end - context "with a fallback timeout" do - before { mirrors.parse("mirror.all.fallback_timeout", "1") } - - it "returns localhost uri for rubygems" do - expect(mirrors.for("http://rubygems.org").uri).to eq(localhost_uri) - end - - it "returns localhost for any other url" do - expect(mirrors.for("http://whatever.com/").uri).to eq(localhost_uri) - end - end - end - end - - context "with a mirror prober that does not reply on time" do - let(:mirrors) do - probe = double - allow(probe).to receive(:replies?).and_return(false) - Bundler::Settings::Mirrors.new(probe) - end - - context "with a localhost mirror for all" do - before { mirrors.parse("mirror.all", localhost_uri) } - - context "without a fallback timeout" do - it "returns localhost" do - expect(mirrors.for("http://whatever.com").uri).to eq(localhost_uri) - end - end - - context "with a fallback timeout" do - before { mirrors.parse("mirror.all.fallback_timeout", "true") } - - it "returns the source uri, not localhost" do - expect(mirrors.for("http://whatever.com").uri).to eq(URI("http://whatever.com/")) - end - end - end - - context "with localhost as a mirror for rubygems.org" do - before { mirrors.parse("mirror.http://rubygems.org/", localhost_uri) } - - context "without a fallback timeout" do - it "returns the uri that is not mirrored" do - expect(mirrors.for("http://whatever.com").uri).to eq(URI("http://whatever.com/")) - end - - it "returns localhost for rubygems.org" do - expect(mirrors.for("http://rubygems.org/").uri).to eq(localhost_uri) - end - end - - context "with a fallback timeout" do - before { mirrors.parse("mirror.http://rubygems.org/.fallback_timeout", "true") } - - it "returns the uri that is not mirrored" do - expect(mirrors.for("http://whatever.com").uri).to eq(URI("http://whatever.com/")) - end - - it "returns rubygems.org for rubygems.org" do - expect(mirrors.for("http://rubygems.org/").uri).to eq(URI("http://rubygems.org/")) - end - end - end - end -end - -RSpec.describe Bundler::Settings::TCPSocketProbe do - let(:probe) { Bundler::Settings::TCPSocketProbe.new } - - context "with a listening TCP Server" do - def with_server_and_mirror - server = TCPServer.new("127.0.0.1", 0) - mirror = Bundler::Settings::Mirror.new("http://localhost:#{server.addr[1]}", 1) - yield server, mirror - server.close unless server.closed? - end - - it "probes the server correctly" do - with_server_and_mirror do |server, mirror| - expect(server.closed?).to be_falsey - expect(probe.replies?(mirror)).to be_truthy - end - end - - it "probes falsey when the server is down" do - with_server_and_mirror do |server, mirror| - server.close - expect(probe.replies?(mirror)).to be_falsey - end - end - end - - context "with an invalid mirror" do - let(:mirror) { Bundler::Settings::Mirror.new("http://127.0.0.127:9292", true) } - - it "fails with a timeout when there is nothing to tcp handshake" do - expect(probe.replies?(mirror)).to be_falsey - end - end -end -- cgit v1.2.3