diff --git a/test/Rakefile b/test/Rakefile index d39da95aa..e1fae7925 100644 --- a/test/Rakefile +++ b/test/Rakefile @@ -1,82 +1,82 @@ require 'rake/testtask' require 'find' include Find include FileTest $exclusions = %W(lib data) $test_library_paths = %W(lib ../lib) filemap = Hash.new { |hash, key| hash[key] = [] } allfiles = [] # First collect the entire file list. find(".") do |f| # Get rid of the leading ./ f = f.sub(/^\.\//, '') file = File.basename(f) dir = File.dirname(f) # Prune . directories and excluded dirs if (file =~ /^\./ and f != ".") or $exclusions.include?(File.basename(file)) prune next end next if f == "." next if dir == "." # If we're a ruby script, then add it to the list of files for that dir if file =~ /\.rb/ allfiles << f # Add it to all of the parent dirs, not just our own parts = File.split(dir) if parts[0] == "." parts.shift end parts.each_with_index { |part, i| path = File.join(parts[0..i]) filemap[path] << f } end end desc "Run the full test suite" -task :test do |t| +Rake::TestTask.new :test do |t| t.libs << $test_library_paths # Add every file as a test file to run t.test_files = allfiles t.verbose = true end task :default => :test # Now create a task for every directory filemap.each do |dir, files| ns = dir.gsub "/", ":" # First create a separate task for each file in the namespace. namespace ns do files.each do |file| Rake::TestTask.new File.basename(file, '.rb').to_sym do |t| t.libs << $test_library_paths + ['..'] t.test_files = [ file ] t.verbose = true end end end # Then create a task that matches the directory itself. Rake::TestTask.new dir do |t| t.libs << $test_library_paths t.test_files = files.sort t.verbose = true end # And alias it with a slash on the end - Rake::TestTask.new(dir + "/" => dir) + task(dir + "/" => dir) end # $Id$