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