aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormansimarkaur2017-07-27 04:40:27 +0530
committermansimarkaur2017-08-29 16:16:17 +0530
commit53be6bb4bd69eaf8cc8e5c3c1ac9ecd1ddb1582c (patch)
tree9ba00047b88144b58da4701b29b15f6bd21ef10a
parentcf96d8d9700d0869d52add879f25179509b3773c (diff)
downloadbrew-53be6bb4bd69eaf8cc8e5c3c1ac9ecd1ddb1582c.tar.bz2
Added check for svn availability
-rw-r--r--Library/Homebrew/dev-cmd/audit.rb4
-rw-r--r--Library/Homebrew/test/utils/svn_spec.rb43
-rw-r--r--Library/Homebrew/utils/svn.rb3
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)