Skip to content

Commit

Permalink
Merge pull request #8169 from nicolasdespres/robust_git_repository_check
Browse files Browse the repository at this point in the history
Rake test:uncommitted finds git directory in ancestors.
  • Loading branch information
rafaelfranca committed Nov 13, 2012
2 parents 8f6ce1a + f945178 commit 3c5c93b
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 1 deletion.
2 changes: 2 additions & 0 deletions railties/CHANGELOG.md
@@ -1,5 +1,7 @@
## Rails 4.0.0 (unreleased) ##

* Rake test:uncommitted finds git directory in ancestors *Nicolas Despres*

* Add dummy app Rake tasks when --skip-test-unit and --dummy-path is passed to the plugin generator.
Fix #8121

Expand Down
2 changes: 1 addition & 1 deletion railties/lib/rails/test_unit/testing.rake
Expand Up @@ -88,7 +88,7 @@ namespace :test do
def t.file_list
if File.directory?(".svn")
changed_since_checkin = silence_stderr { `svn status` }.split.map { |path| path.chomp[7 .. -1] }
elsif File.directory?(".git")
elsif system "git rev-parse --git-dir 2>&1 >/dev/null"
changed_since_checkin = silence_stderr { `git ls-files --modified --others --exclude-standard` }.split.map { |path| path.chomp }
else
abort "Not a Subversion or Git checkout."
Expand Down
29 changes: 29 additions & 0 deletions railties/test/application/rake_test.rb
Expand Up @@ -106,6 +106,35 @@ def test_rake_test_error_output
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
Expand Down

0 comments on commit 3c5c93b

Please sign in to comment.