summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAgis Anastasopoulos <agis.anast@gmail.com>2015-10-18 14:04:20 +0300
committerAgis Anastasopoulos <agis.anast@gmail.com>2015-10-20 18:13:05 +0300
commit25b53401c7912c4b64e3e08832d539ce6ffc38e3 (patch)
treea4fbdd4016cb8b9166170929abd17247dcb58c3d
parent72926f024db0b4f6e1ccfb2ac511928858e9f3f2 (diff)
downloadbundler-25b53401c7912c4b64e3e08832d539ce6ffc38e3.tar.gz
Set X-Gemfile-Source when fetching dependencies
-rw-r--r--lib/bundler/fetcher.rb1
-rw-r--r--spec/bundler/fetcher_spec.rb32
2 files changed, 32 insertions, 1 deletions
diff --git a/lib/bundler/fetcher.rb b/lib/bundler/fetcher.rb
index c283dcef7b..868f415198 100644
--- a/lib/bundler/fetcher.rb
+++ b/lib/bundler/fetcher.rb
@@ -229,6 +229,7 @@ module Bundler
con.read_timeout = Fetcher.api_timeout
con.override_headers["User-Agent"] = user_agent
+ con.override_headers["X-Gemfile-Source"] = @remote.original_uri.to_s if @remote.original_uri
con
end
end
diff --git a/spec/bundler/fetcher_spec.rb b/spec/bundler/fetcher_spec.rb
index 65bf1017e0..e21601555d 100644
--- a/spec/bundler/fetcher_spec.rb
+++ b/spec/bundler/fetcher_spec.rb
@@ -2,7 +2,10 @@ require "spec_helper"
require "bundler/fetcher"
describe Bundler::Fetcher do
- subject(:fetcher) { Bundler::Fetcher.new(double("remote", :uri => URI("https://example.com"))) }
+ let(:uri) { URI("https://example.com") }
+ let(:remote) { double("remote", :uri => uri, :original_uri => nil) }
+
+ subject(:fetcher) { Bundler::Fetcher.new(remote) }
before do
allow(Bundler).to receive(:root) { Pathname.new("root") }
@@ -32,6 +35,33 @@ describe Bundler::Fetcher do
end
end
end
+
+ context "when a rubygems source mirror is set" do
+ let(:orig_uri) { URI("http://zombo.com") }
+ let(:remote_with_mirror) do
+ double("remote", :uri => uri, :original_uri => orig_uri, :anonymized_uri => uri)
+ end
+
+ let(:fetcher) { Bundler::Fetcher.new(remote_with_mirror) }
+
+ it "sets the 'X-Gemfile-Source' header containing the original source" do
+ expect(
+ fetcher.send(:connection).override_headers["X-Gemfile-Source"]
+ ).to eq("http://zombo.com")
+ end
+ end
+
+ context "when there is no rubygems source mirror set" do
+ let(:remote_no_mirror) do
+ double("remote", :uri => uri, :original_uri => nil, :anonymized_uri => uri)
+ end
+
+ let(:fetcher) { Bundler::Fetcher.new(remote_no_mirror) }
+
+ it "does not set the 'X-Gemfile-Source' header" do
+ expect(fetcher.send(:connection).override_headers["X-Gemfile-Source"]).to be_nil
+ end
+ end
end
describe "#user_agent" do