Added check for svn availability

This commit is contained in:
mansimarkaur 2017-07-27 04:40:27 +05:30
parent cf96d8d970
commit 53be6bb4bd
3 changed files with 28 additions and 22 deletions

View File

@ -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

View File

@ -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

View File

@ -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)