Changeset 1195

Show
Ignore:
Timestamp:
01/08/08 02:34:41 (11 months ago)
Author:
sethrasmuss..@gmail.com
Message:

support rake spec:* for files in nested spec dirs, other misc Rakefile cleanup

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Rakefile

    r1179 r1195  
    66require 'spec/rake/spectask' 
    77require 'fileutils' 
     8 
    89def __DIR__ 
    910  File.dirname(__FILE__) 
    1011end 
    1112 
    12 require __DIR__+'/tools/rakehelp' 
    13 require __DIR__+'/tools/annotation_extract' 
     13require __DIR__ + '/tools/rakehelp' 
     14require __DIR__ + '/tools/annotation_extract' 
     15 
    1416include FileUtils 
    1517 
    1618NAME = "merb" 
     19 
    1720require 'lib/merb/version' 
     21 
    1822CLEAN.include ['**/.*.sw?', '*.gem', '.config'] 
    19  
    2023 
    2124windows = (PLATFORM =~ /win32|cygwin/) 
     
    2326SUDO = windows ? "" : "sudo" 
    2427 
    25 setup_clean [ "pkg", "lib/*.bundle", "*.gem", "doc/rdoc", ".config", 'coverage', "cache", "log"] 
     28setup_clean ["pkg", "lib/*.bundle", "*.gem", "doc/rdoc", ".config", 'coverage', "cache", "log"] 
    2629 
    2730 
    28 desc "Packages up Merb." 
    29 task :default => [:package] 
     31desc 'Packages up Merb.' 
     32task :default => :package 
     33 
    3034task :merb => [:clean, :rdoc, :package] 
    3135 
    32 task :doc => [:rdoc] 
    33  
     36task :doc => :rdoc 
    3437 
    3538Rake::RDocTask.new do |rdoc| 
    36       files = ['README', 'LICENSE', 'CHANGELOG', 
    37                'lib/**/*.rb'] 
    38       rdoc.rdoc_files.add(files) 
    39       rdoc.main = 'README' 
    40       rdoc.title = 'Merb Docs' 
    41       rdoc.template = __DIR__ + '/tools/allison-2.0.2/lib/allison.rb' 
    42       rdoc.rdoc_dir = 'doc/rdoc' 
    43       rdoc.options << '--line-numbers' << '--inline-source' 
     39  files = ['README', 'LICENSE', 'CHANGELOG', 'lib/**/*.rb'] 
     40  rdoc.rdoc_files.add(files) 
     41  rdoc.main = 'README' 
     42  rdoc.title = 'Merb Docs' 
     43  rdoc.template = __DIR__ + '/tools/allison-2.0.2/lib/allison.rb' 
     44  rdoc.rdoc_dir = 'doc/rdoc' 
     45  rdoc.options << '--line-numbers' << '--inline-source' 
    4446end 
    4547 
     
    5052  s.has_rdoc = true 
    5153  s.extra_rdoc_files = %w( README LICENSE TODO ) 
    52   #s.rdoc_options += RDOC_OPTS +  
    53   #  ['--exclude', '^(app|uploads)'] 
     54  # s.rdoc_options += RDOC_OPTS + ['--exclude', '^(app|uploads)'] 
    5455  s.summary = 'Merb == Mongrel + Erb. Pocket rocket web framework.' 
    5556  s.description = s.summary 
     
    8889 
    8990desc 'Run :clean and uninstall the .gem' 
    90 task :uninstall => [:clean] do 
     91task :uninstall => :clean do 
    9192  sh %{#{SUDO} gem uninstall #{NAME}} 
    9293end 
     
    140141 
    141142STATS_DIRECTORIES = [ 
    142   %w(Code               lib/), 
    143   %w(Unit\ tests        specs), 
    144 ].collect { |name, dir| [ name, "./#{dir}" ] }.select { |name, dir| File.directory?(dir) } 
     143  ['Code', 'lib/'], 
     144  ['Unit tests', 'specs'] 
     145].collect { |name, dir| [ name, "./#{dir}" ] }. 
     146  select  { |name, dir| File.directory?(dir) } 
    145147 
    146148desc "Report code statistics (KLOCs, etc) from the application" 
     
    166168desc "Add new files to subversion" 
    167169task :svn_add do 
    168   system "svn status | grep '^\?' | sed -e 's/? *//' | sed -e 's/ /\ /g' | xargs svn add" 
     170  system "svn status | grep '^\?' | sed -e 's/? *//' | sed -e 's/ /\ /g' | xargs svn add" 
    169171end 
    170172 
    171173 
    172 # Run specific tests or test files 
     174# Run specific tests or test files. Searches nested spec directories as well. 
    173175#  
    174176# Based on a technique popularized by Geoffrey Grosenbach 
     
    177179  # spec:spec_file:spec_name 
    178180  if /spec:(.*)$/.match(t.name) 
    179     arguments = t.name.split(":") 
     181    arguments = t.name.split(':') 
     182     
    180183    file_name = arguments[1] 
    181184    spec_name = arguments[2..-1] 
    182185     
    183     if File.exist?(path = "spec/merb/#{file_name}_spec.rb") 
     186    spec_filename = "#{file_name}_spec.rb" 
     187    specs = Dir["spec/merb/**/#{spec_filename}"] 
     188     
     189    if path = specs.detect { |f| spec_filename == File.basename(f) } 
    184190      run_file_name = path 
    185191    end 
    186192     
    187     example = !spec_name.empty? ? " -e '#{spec_name}'" : "" 
     193    example = " -e '#{spec_name}'" unless spec_name.empty? 
    188194     
    189     sh "#{spec_cmd} #{run_file_name} --format specdoc --colour #{example}"  
     195    sh "#{spec_cmd} #{run_file_name} --format specdoc --colour #{example}" 
    190196  end 
    191197end