aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails/test_unit/test_requirer.rb
diff options
context:
space:
mode:
authorKasper Timm Hansen <kaspth@gmail.com>2015-03-21 13:15:56 +0100
committerKasper Timm Hansen <kaspth@gmail.com>2015-06-04 20:57:08 +0200
commitb6fc8e25a10cc4abdd03018798b180270d6c5d7f (patch)
tree9bf63625f408ef27a477725a88013e9ca59718ef /railties/lib/rails/test_unit/test_requirer.rb
parentae5f2b4e79f3e41aad8280109d8bfc788a1a2733 (diff)
downloadrails-b6fc8e25a10cc4abdd03018798b180270d6c5d7f.tar.gz
rails-b6fc8e25a10cc4abdd03018798b180270d6c5d7f.tar.bz2
rails-b6fc8e25a10cc4abdd03018798b180270d6c5d7f.zip
Improve test runner's Minitest integration.
This also adds free mix and matching of directories, files and lines filters. Like so: bin/rails test models/post_test.rb test/integration models/person_test.rb:26 You can also mix in a traditional Minitest filter: bin/rails test test/integration -n /check_it_out/
Diffstat (limited to 'railties/lib/rails/test_unit/test_requirer.rb')
-rw-r--r--railties/lib/rails/test_unit/test_requirer.rb28
1 files changed, 28 insertions, 0 deletions
diff --git a/railties/lib/rails/test_unit/test_requirer.rb b/railties/lib/rails/test_unit/test_requirer.rb
new file mode 100644
index 0000000000..84c2256729
--- /dev/null
+++ b/railties/lib/rails/test_unit/test_requirer.rb
@@ -0,0 +1,28 @@
+require 'active_support/core_ext/object/blank'
+require 'rake/file_list'
+
+module Rails
+ class TestRequirer # :nodoc:
+ class << self
+ def require_files(patterns)
+ patterns = expand_patterns(patterns)
+
+ Rake::FileList[patterns.compact.presence || 'test/**/*_test.rb'].to_a.each do |file|
+ require File.expand_path(file)
+ end
+ end
+
+ private
+ def expand_patterns(patterns)
+ patterns.map do |arg|
+ arg = arg.gsub(/:(\d+)?$/, '')
+ if Dir.exist?(arg)
+ "#{arg}/**/*_test.rb"
+ elsif File.file?(arg)
+ arg
+ end
+ end
+ end
+ end
+ end
+end