Added check for svn availability
This commit is contained in:
parent
cf96d8d970
commit
53be6bb4bd
@ -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
|
||||
|
||||
@ -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
|
||||
before(:each) do
|
||||
if described_class.instance_variable_defined?(:@svn)
|
||||
described_class.send(:remove_instance_variable, :@svn)
|
||||
end
|
||||
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
|
||||
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 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
|
||||
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 }
|
||||
|
||||
expect(described_class.svn_remote_exists(HOMEBREW_CACHE/"install")).to be_truthy
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user