diff options
| author | mansimarkaur | 2017-07-27 04:40:27 +0530 |
|---|---|---|
| committer | mansimarkaur | 2017-08-29 16:16:17 +0530 |
| commit | 53be6bb4bd69eaf8cc8e5c3c1ac9ecd1ddb1582c (patch) | |
| tree | 9ba00047b88144b58da4701b29b15f6bd21ef10a | |
| parent | cf96d8d9700d0869d52add879f25179509b3773c (diff) | |
| download | brew-53be6bb4bd69eaf8cc8e5c3c1ac9ecd1ddb1582c.tar.bz2 | |
Added check for svn availability
| -rw-r--r-- | Library/Homebrew/dev-cmd/audit.rb | 4 | ||||
| -rw-r--r-- | Library/Homebrew/test/utils/svn_spec.rb | 43 | ||||
| -rw-r--r-- | Library/Homebrew/utils/svn.rb | 3 |
3 files changed, 28 insertions, 22 deletions
diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index 2c9336481..0e4500a12 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -1228,7 +1228,9 @@ class ResourceAuditor end elsif strategy <= SubversionDownloadStrategy next unless DevelopmentTools.subversion_handles_most_https_certificates? - unless Utils.svn_remote_exists url + if !Utils.svn_available? + problem "No valid version of svn found" + elsif Utils.svn_remote_exists url problem "The URL #{url} is not a valid svn URL" end end diff --git a/Library/Homebrew/test/utils/svn_spec.rb b/Library/Homebrew/test/utils/svn_spec.rb index 3ff9ac655..6f841cc92 100644 --- a/Library/Homebrew/test/utils/svn_spec.rb +++ b/Library/Homebrew/test/utils/svn_spec.rb @@ -2,37 +2,40 @@ require "utils/svn" describe Utils do describe "#self.svn_available?" do - it "returns true if svn --version command succeeds" do - allow_any_instance_of(Process::Status).to receive(:success?).and_return(true) - expect(described_class.svn_available?).to be_truthy - end - - it "returns false if svn --version command does not succeed" do - allow_any_instance_of(Process::Status).to receive(:success?).and_return(false) - expect(described_class.svn_available?).to be_falsey + before(:each) do + if described_class.instance_variable_defined?(:@svn) + described_class.send(:remove_instance_variable, :@svn) + end end - it "returns svn version if already set" do - described_class.instance_variable_set(:@svn, true) + it "returns svn version if svn available" do expect(described_class.svn_available?).to be_truthy end end describe "#self.svn_remote_exists" do - let(:url) { "https://dl.bintray.com/homebrew/mirror/" } - it "returns true when svn is not available" do - described_class.instance_variable_set(:@svn, false) - expect(described_class.svn_remote_exists(url)).to be_truthy + allow(Utils).to receive(:svn_available?).and_return(false) + expect(described_class.svn_remote_exists("blah")).to be_truthy end - it "returns false when remote does not exist" do - expect(described_class.svn_remote_exists(url)).to be_falsey - end + context "when svn is available" do + before do + allow(Utils).to receive(:svn_available?).and_return(true) + end + + it "returns false when remote does not exist" do + expect(described_class.svn_remote_exists(HOMEBREW_CACHE/"install")).to be_falsey + end + + it "returns true when remote exists", :needs_network do + remote = "http://github.com/Homebrew/install" + svn = HOMEBREW_SHIMS_PATH/"scm/svn" + + HOMEBREW_CACHE.cd { system svn, "checkout", remote } - it "returns true when remote exists" do - allow_any_instance_of(Process::Status).to receive(:success?).and_return(true) - expect(described_class.svn_remote_exists(url)).to be_truthy + expect(described_class.svn_remote_exists(HOMEBREW_CACHE/"install")).to be_truthy + end end end end diff --git a/Library/Homebrew/utils/svn.rb b/Library/Homebrew/utils/svn.rb index 7a99551b3..fb49ac2e9 100644 --- a/Library/Homebrew/utils/svn.rb +++ b/Library/Homebrew/utils/svn.rb @@ -1,6 +1,7 @@ module Utils def self.svn_available? - @svn ||= quiet_system HOMEBREW_SHIMS_PATH/"scm/svn", "--version" + return @svn if instance_variable_defined?(:@svn) + @svn = quiet_system HOMEBREW_SHIMS_PATH/"scm/svn", "--version" end def self.svn_remote_exists(url) |
