spec/acceptance/app_spec.rb in prj-0.1.0 vs spec/acceptance/app_spec.rb in prj-1.0.0
- old
+ new
@@ -1,30 +1,31 @@
require 'spec_helper'
-require 'fakefs/spec_helpers'
+require 'tmpdir'
require 'fileutils'
require 'prj'
require 'stringio'
require 'yaml'
describe "Prj::App" do
- include FakeFS::SpecHelpers
-
let(:output) { StringIO.new }
- let(:root) { "/Projects" }
let(:subdirectories) do
[
"foo/.git/",
+ "foo/baz/.git/",
"bar/",
"baz/qux/crisp/.git/",
"baz/craps/poops/.git/",
"any/thing/here/"
].map { |d| File.join(root, d) }
end
- before(:each) do
- FileUtils.mkdir_p(root)
- subdirectories.each { |d| FileUtils.mkdir_p(d) }
+ around(:each) do |example|
+ Dir.mktmpdir("Projects") do |root|
+ @root = root
+ subdirectories.each { |d| FileUtils.mkdir_p(d) }
+ example.run
+ end
end
context "within projcts root" do
it "prints matching directory and returns 0" do
with_config("projects_root" => root) do
@@ -34,36 +35,56 @@
end
it "prints projects root and returns 0 if directory not found" do
with_config("projects_root" => root) do
Prj::App.new(output, ["nothingtofind"]).run.should == 0
- output.string.chomp.should == root + "/"
+ output.string.chomp.should == root
end
end
it "allows case-insensitive search if option specified in config" do
with_config("projects_root" => root, "case_sensitive" => false) do
Prj::App.new(output, ["Fo"]).run.should == 0
output.string.chomp.should == File.join(root, "foo")
end
end
+
+ it "does not search nested repos by default" do
+ with_config("projects_root" => root) do
+ Prj::App.new(output, ["fob"]).run.should == 0
+ output.string.chomp.should_not == File.join(root, "foo/baz")
+ end
+ end
+
+ it "can search nested repos if 'search_nested_repositories' option is true" do
+ with_config("projects_root" => root, "search_nested_repositories" => true) do
+ Prj::App.new(output, ["fob"]).run.should == 0
+ output.string.chomp.should == File.join(root, "foo/baz")
+ end
+ end
end
it "uses ~/.prj.yml as config file" do
Prj::App.config_path.should == File.expand_path("~/.prj.yml")
end
it "defaults to ~/Projects as default projects root" do
- Prj::App.new(output, ["asdf"]).config.fetch("projects_root").should == File.expand_path("~/Projects")
+ with_config do
+ Prj::App.new(output, ["asdf"]).config.fetch("projects_root").should == File.expand_path("~/Projects")
+ end
end
def with_config(config = {})
tmp = Prj::App.config_path
- config_path = ".prj.yml"
+ config_path = File.join(Dir.tmpdir, ".prj.yml")
File.open(config_path, "w") { |f| f.write YAML.dump(config) }
Prj::App.config_path = config_path
yield
ensure
Prj::App.config_path = tmp
+ end
+
+ def root
+ @root
end
end