Code refactoring 4.0

This commit is contained in:
Maxim Belkin 2018-02-20 21:33:38 +00:00
parent c6dac68d8b
commit 14d7a7a08c
5 changed files with 71 additions and 23 deletions

View File

@ -1,2 +1,3 @@
require "dependency_collector"
require "extend/os/mac/dependency_collector" if OS.mac?
require "extend/os/linux/dependency_collector" if OS.linux?

View File

@ -0,0 +1,5 @@
class DependencyCollector
def xz_dep_if_needed(tags)
Dependency.new("xz", tags) unless which("xz")
end
end

View File

@ -1,23 +0,0 @@
require "dependency_collector"
describe DependencyCollector do
alias_matcher :be_a_build_requirement, :be_build
after(:each) do
described_class.clear_cache
end
describe "#add" do
it "creates a resource dependency from a '.zip' URL" do
resource = Resource.new
resource.url("http://example.com/foo.zip")
expect(subject.add(resource)).to eq(Dependency.new("zip", [:build]))
end
it "creates a resource dependency from a '.bz2' URL" do
resource = Resource.new
resource.url("http://example.com/foo.tar.bz2")
expect(subject.add(resource)).to eq(Dependency.new("bzip2", [:build]))
end
end
end

View File

@ -0,0 +1,53 @@
require "dependency_collector"
describe DependencyCollector do
alias_matcher :be_a_build_requirement, :be_build
after(:each) do
described_class.clear_cache
end
describe "#add" do
resource = Resource.new
context "when xz, zip, and bzip2 are not available" do
it "creates a resource dependency from a '.xz' URL" do
resource.url("http://example.com/foo.xz")
allow_any_instance_of(Object).to receive(:which).with("xz")
expect(subject.add(resource)).to eq(Dependency.new("xz", [:build]))
end
it "creates a resource dependency from a '.zip' URL" do
resource.url("http://example.com/foo.zip")
allow_any_instance_of(Object).to receive(:which).with("zip")
expect(subject.add(resource)).to eq(Dependency.new("zip", [:build]))
end
it "creates a resource dependency from a '.bz2' URL" do
resource.url("http://example.com/foo.tar.bz2")
allow_any_instance_of(Object).to receive(:which).with("bzip2")
expect(subject.add(resource)).to eq(Dependency.new("bzip2", [:build]))
end
end
context "when xz, zip, and bzip2 are available" do
it "does not create a resource dependency from a '.xz' URL" do
resource.url("http://example.com/foo.xz")
allow_any_instance_of(Object).to receive(:which).with("xz").and_return(Pathname.new("foo"))
expect(subject.add(resource)).to be nil
end
it "does not create a resource dependency from a '.zip' URL" do
resource.url("http://example.com/foo.zip")
allow_any_instance_of(Object).to receive(:which).with("zip").and_return(Pathname.new("foo"))
expect(subject.add(resource)).to be nil
end
it "does not create a resource dependency from a '.bz2' URL" do
resource.url("http://example.com/foo.tar.bz2")
allow_any_instance_of(Object).to receive(:which).with("bzip2").and_return(Pathname.new("foo"))
expect(subject.add(resource)).to be nil
end
end
end
end

View File

@ -36,6 +36,18 @@ describe DependencyCollector do
expect(subject.add(resource)).to be nil
end
specify "Resource dependency from a '.zip' URL" do
resource = Resource.new
resource.url("http://example.com/foo.zip")
expect(subject.add(resource)).to be nil
end
specify "Resource dependency from a '.bz2' URL" do
resource = Resource.new
resource.url("http://example.com/foo.tar.bz2")
expect(subject.add(resource)).to be nil
end
specify "Resource dependency from a '.git' URL" do
resource = Resource.new
resource.url("git://example.com/foo/bar.git")