From df822961eebd444b31bfad93c9b1b55d1d0ad6da Mon Sep 17 00:00:00 2001 From: Nicolas Despres Date: Sat, 10 Nov 2012 00:08:30 +0100 Subject: Rake test:uncommitted finds git directory in ancestors. Sometimes your git directory is an ancestor of your application root directory. For example: ./repo/.git/ ./repo/app/Rakefile In this case rake test:uncommitted will be unable to detect your SCM. This patch fixes this and add a test. --- railties/test/application/rake_test.rb | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'railties/test') diff --git a/railties/test/application/rake_test.rb b/railties/test/application/rake_test.rb index c5a68a5152..c6aea03d8c 100644 --- a/railties/test/application/rake_test.rb +++ b/railties/test/application/rake_test.rb @@ -106,6 +106,35 @@ module ApplicationTests end end + def test_rake_test_uncommitted_always_find_git_in_parent_dir + app_name = File.basename(app_path) + app_dir = File.dirname(app_path) + moved_app_name = app_name + '_moved' + moved_app_path = "#{app_path}/#{moved_app_name}" + + Dir.chdir(app_dir) do + # Go from "./app/" to "./app/app_moved" + FileUtils.mv(app_name, moved_app_name) + FileUtils.mkdir(app_name) + FileUtils.mv(moved_app_name, app_name) + # Initialize the git repository and start the test. + Dir.chdir(app_name) do + `git init` + Dir.chdir(moved_app_name){ `rake db:migrate` } + silence_stderr { Dir.chdir(moved_app_name) { `rake test:uncommitted` } } + assert_equal 0, $?.exitstatus + end + end + end + + def test_rake_test_uncommitted_fails_with_no_scm + Dir.chdir(app_path){ `rake db:migrate` } + Dir.chdir(app_path) do + silence_stderr { `rake test:uncommitted` } + assert_equal 1, $?.exitstatus + end + end + def test_rake_routes_calls_the_route_inspector app_file "config/routes.rb", <<-RUBY AppTemplate::Application.routes.draw do -- cgit v1.2.3