public
Rubygem
Description: Makes tests easy on the fingers and the eyes
Homepage: http://www.thoughtbot.com/projects/shoulda
Clone URL: git://github.com/thoughtbot/shoulda.git
shoulda / tasks / list_tests.rake
100644 41 lines (36 sloc) 1.248 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
namespace :test do
  desc "List the names of the test methods in a specification like format"
  task :list do
 
    require 'test/unit'
    require 'rubygems'
    require 'active_support'
 
    # bug in test unit. Set to true to stop from running.
    Test::Unit.run = true
 
    test_files = Dir.glob(File.join('test', '**', '*_test.rb'))
    test_files.each do |file|
      load file
      klass = File.basename(file, '.rb').classify.constantize
      
      puts
      puts "#{klass.name.gsub(/Test$/, '')}"
      test_methods = klass.instance_methods.grep(/^test/).map {|s| s.gsub(/^test: /, '')}.sort
      test_methods.each {|m| puts " - #{m}" }
      # puts "#{klass.name.gsub(/Test$/, '')}"
      # test_methods = klass.instance_methods.grep(/^test/).sort
      #
      # method_hash = test_methods.inject({}) do |h, name|
      # header = name.gsub(/^test: (.*)should.*$/, '\1')
      # test = name.gsub(/^test:.*should (.*)$/, '\1')
      # h[header] ||= []
      # h[header] << test
      # h
      # end
      #
      # method_hash.keys.sort.each do |header|
      # puts " #{header.chomp} should"
      # method_hash[header].each do |test|
      # puts " - #{test}"
      # end
      # end
    end
  end
end