require 'rubygems' require 'rake/gempackagetask' require 'rake/testtask' require 'rake/rdoctask' task :default => :test desc "Run All Tests" Rake::TestTask.new :test do |test| test.test_files = ["test/**/*.rb"] test.verbose = false end desc "Generate Documentation" Rake::RDocTask.new do |rdoc| rdoc.main = "README.rdoc" rdoc.rdoc_dir = "doc" rdoc.rdoc_files.include("README.rdoc", "CHANGELOG", "LICENSE.txt", "lib/*.rb") rdoc.title = "FakeWeb API Documentation" rdoc.options << '--line-numbers' << '--inline-source' rdoc.options << '--charset' << 'utf-8' end desc %{Update ".manifest" with the latest list of project filenames. Respect\ .gitignore by excluding everything that git ignores. Update `files` and\ `test_files` arrays in "*.gemspec" file if it's present.} task :manifest do list = Dir['**/*'].sort spec_file = Dir['*.gemspec'].first list -= [spec_file] if spec_file File.read('.gitignore').each_line do |glob| glob = glob.chomp.sub(/^\//, '') list -= Dir[glob] list -= Dir["#{glob}/**/*"] if File.directory?(glob) and !File.symlink?(glob) puts "excluding #{glob}" end if spec_file spec = File.read spec_file spec.gsub!(/^(\s* s.(test_)?files \s* = \s* )( \[ [^\]]* \] | %w\( [^)]* \) )/mx) do assignment = $1 bunch = $2 ? list.grep(/^test\//) : list '%s%%w(%s)' % [assignment, bunch.join(' ')] end File.open(spec_file, 'w') {|f| f << spec } end File.open('.manifest', 'w') {|f| f << list.join("\n") } end if RUBY_PLATFORM =~ /java/ puts "rcov support disabled (running under JRuby)." elsif RUBY_VERSION =~ /^1\.9/ puts "rcov support disabled (running under Ruby 1.9)" else require 'rcov/rcovtask' Rcov::RcovTask.new do |t| t.test_files = FileList['test/**/test*.rb'] t.rcov_opts << "--sort coverage" t.rcov_opts << "--exclude gems" t.rcov_opts << "--no-validator-links" end end spec = eval(File.read(File.join(File.dirname(__FILE__), "fakeweb.gemspec"))) Rake::GemPackageTask.new(spec) do |pkg| pkg.need_tar_gz = true pkg.need_zip = true end