# -*- ruby -*-
require 'rubygems'
require 'hoe'
require './lib/spec'
require './lib/spec/rake/spectask'
Hoe.new('rspec', Spec::VERSION::STRING) do |p|
p.summary = Spec::VERSION::DESCRIPTION
p.rubyforge_name = 'rspec'
p.developer('RSpec Development Team', 'dev@rspec.info')
end
['audit','test','test_deps','default'].each do |task|
Rake.application.instance_variable_get('@tasks').delete(task)
end
task :default => ['spec']
# vim: syntax=Ruby
# $:.unshift('lib')
# require 'rubygems'
# require 'rake/gempackagetask'
# require 'rake/contrib/rubyforgepublisher'
# require 'rake/clean'
# require 'rake/rdoctask'
# require 'rake/testtask'
# require 'spec/version'
# dir = File.dirname(__FILE__)
#
# # Some of the tasks are in separate files since they are also part of the website documentation
# load File.dirname(__FILE__) + '/rake_tasks/examples.rake'
# load File.dirname(__FILE__) + '/rake_tasks/examples_with_rcov.rake'
# load File.dirname(__FILE__) + '/rake_tasks/failing_examples_with_html.rake'
# load File.dirname(__FILE__) + '/rake_tasks/verify_rcov.rake'
#
# PKG_NAME = "rspec"
# PKG_VERSION = Spec::VERSION::STRING
# PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
# PKG_FILES = FileList[
# '[A-Z]*',
# 'lib/**/*.rb',
# 'spec/**/*',
# 'examples/**/*',
# 'failing_examples/**/*',
# 'plugins/**/*',
# 'stories/**/*',
# 'rake_tasks/**/*'
# ]
#
# task :default => [:verify_rcov]
# task :verify_rcov => [:spec, :stories]
#
desc "Run all specs"
Spec::Rake::SpecTask.new do |t|
t.spec_files = FileList['spec/**/*_spec.rb']
t.spec_opts = ['--options', 'spec/spec.opts']
unless ENV['NO_RCOV']
t.rcov = true
t.rcov_dir = '../doc/output/coverage'
t.rcov_opts = ['--exclude', 'lib/spec.rb,lib/spec/runner.rb,spec\/spec,bin\/spec,examples,\/var\/lib\/gems,\/Library\/Ruby,\.autotest']
end
end
#
# desc "Run all stories"
# task :stories do
# html = 'story_server/prototype/rspec_stories.html'
# ruby "stories/all.rb --colour --format plain --format html:#{html}"
# unless IO.read(html) =~ /<span class="param">/m
# raise 'highlighted parameters are broken in story HTML'
# end
# end
#
# desc "Run all specs and store html output in doc/output/report.html"
# Spec::Rake::SpecTask.new('spec_html') do |t|
# t.spec_files = FileList['spec/**/*_spec.rb']
# t.spec_opts = ['--format html:../../../../doc/output/report.html', '--format progress','--backtrace']
# end
#
# desc "Run all failing examples"
# Spec::Rake::SpecTask.new('failing_examples') do |t|
# t.spec_files = FileList['failing_examples/**/*_spec.rb']
# end
#
# desc 'Generate RDoc'
# rd = Rake::RDocTask.new do |rdoc|
# rdoc.rdoc_dir = '../doc/output/rdoc'
# rdoc.options << '--title' << 'RSpec' << '--line-numbers' << '--inline-source' << '--main' << 'README'
# rdoc.rdoc_files.include('README', 'CHANGES', 'MIT-LICENSE', 'lib/**/*.rb')
# end
#
# spec = Gem::Specification.new do |s|
# s.name = PKG_NAME
# s.version = PKG_VERSION
# s.summary = Spec::VERSION::DESCRIPTION
# s.description = <<-EOF
# RSpec is a behaviour driven development (BDD) framework for Ruby. RSpec was
# created in response to Dave Astels' article _A New Look at Test Driven Development_
# which can be read at: http://daveastels.com/index.php?p=5 RSpec is intended to
# provide the features discussed in Dave's article.
# EOF
#
# s.files = PKG_FILES.to_a
# s.require_path = 'lib'
#
# s.has_rdoc = true
# s.rdoc_options = rd.options
# s.extra_rdoc_files = rd.rdoc_files.reject { |fn| fn =~ /\.rb$|^EXAMPLES.rd$/ }.to_a
#
# s.bindir = 'bin'
# s.executables = ['spec', 'spec_translator', 'autospec']
# s.default_executable = 'spec'
# s.author = "RSpec Development Team"
# s.email = "rspec-devel@rubyforge.org"
# s.homepage = "http://rspec.rubyforge.org"
# s.platform = Gem::Platform::RUBY
# s.rubyforge_project = "rspec"
# end
#
# Rake::GemPackageTask.new(spec) do |pkg|
# pkg.need_zip = true
# pkg.need_tar = true
# end
#
# def egrep(pattern)
# Dir['**/*.rb'].each do |fn|
# count = 0
# open(fn) do |f|
# while line = f.gets
# count += 1
# if line =~ pattern
# puts "#{fn}:#{count}:#{line}"
# end
# end
# end
# end
# end
#
# desc "Look for TODO and FIXME tags in the code"
# task :todo do
# egrep /(FIXME|TODO|TBD)/
# end
#
# task :release => [:verify_committed, :verify_user, :spec, :publish_packages, :tag, :publish_news]
#
# desc "Verifies that there is no uncommitted code"
# task :verify_committed do
# IO.popen('git status') do |io|
# io.each_line do |line|
# raise "\n!!! Do a git commit first !!!\n\n" if line =~ /^#\s*modified:/
# end
# end
# end
#
# desc "Creates a tag in svn"
# task :tag do
# # from = `svn info #{File.dirname(__FILE__)}`.match(/URL: (.*)\/rspec/n)[1]
# # to = from.gsub(/trunk/, "tags/#{Spec::VERSION::TAG}")
# # current = from.gsub(/trunk/, "tags/CURRENT")
# #
# # puts "Creating tag in SVN"
# # tag_cmd = "svn cp #{from} #{to} -m \"Tag release #{Spec::VERSION::FULL_VERSION}\""
# # `#{tag_cmd}` ; raise "ERROR: #{tag_cmd}" unless $? == 0
# #
# # puts "Removing CURRENT"
# # remove_current_cmd = "svn rm #{current} -m \"Remove tags/CURRENT\""
# # `#{remove_current_cmd}` ; raise "ERROR: #{remove_current_cmd}" unless $? == 0
# #
# # puts "Re-Creating CURRENT"
# # create_current_cmd = "svn cp #{to} #{current} -m \"Copy #{Spec::VERSION::TAG} to tags/CURRENT\""
# # `#{create_current_cmd}` ; "ERROR: #{create_current_cmd}" unless $? == 0
# end
#
# task :verify_user do
# raise "RUBYFORGE_USER environment variable not set!" unless ENV['RUBYFORGE_USER']
# end
#
# desc "Upload Website to RubyForge"
# task :publish_website => [:verify_user, :website] do
# unless Spec::VERSION::RELEASE_CANDIDATE
# publisher = Rake::SshDirPublisher.new(
# "rspec-website@rubyforge.org",
# "/var/www/gforge-projects/#{PKG_NAME}",
# "../doc/output"
# )
# publisher.upload
# else
# puts "** Not publishing packages to RubyForge - this is a prerelease"
# end
# end
#
# desc "Upload Website archive to RubyForge"
# task :archive_website => [:verify_user, :website] do
# publisher = Rake::SshDirPublisher.new(
# "rspec-website@rubyforge.org",
# "/var/www/gforge-projects/#{PKG_NAME}/#{Spec::VERSION::TAG}",
# "../doc/output"
# )
# publisher.upload
# end
#
# desc "Package the Rails plugin"
# task :package_rspec_on_rails do
# mkdir 'pkg' rescue nil
# rm_rf "pkg/rspec-rails-#{PKG_VERSION}" rescue nil
# `git clone ../rspec-rails pkg/rspec-rails-#{PKG_VERSION}`
# rm_rf "pkg/rspec-rails-#{PKG_VERSION}/.git"
# Dir.chdir 'pkg' do
# `tar cvzf rspec-rails-#{PKG_VERSION}.tgz rspec-rails-#{PKG_VERSION}`
# end
# end
# task :pkg => :package_rspec_on_rails
#
# desc "Package the RSpec.tmbundle"
# task :package_tmbundle do
# mkdir 'pkg' rescue nil
# rm_rf "pkg/RSpec-#{PKG_VERSION}.tmbundle" rescue nil
# `git clone ../../../../RSpec.tmbundle pkg/RSpec-#{PKG_VERSION}.tmbundle`
# rm_rf "pkg/RSpec-#{PKG_VERSION}.tmbundle/.git"
# Dir.chdir 'pkg' do
# `tar cvzf RSpec-#{PKG_VERSION}.tmbundle.tgz RSpec-#{PKG_VERSION}.tmbundle`
# end
# end
# task :pkg => :package_tmbundle
#
# desc "Publish gem+tgz+zip on RubyForge. You must make sure lib/version.rb is aligned with the CHANGELOG file"
# task :publish_packages => [:verify_user, :package, :pkg] do
# release_files = FileList[
# "pkg/#{PKG_FILE_NAME}.gem",
# "pkg/#{PKG_FILE_NAME}.tgz",
# "pkg/rspec-rails-#{PKG_VERSION}.tgz",
# "pkg/#{PKG_FILE_NAME}.zip",
# "pkg/RSpec-#{PKG_VERSION}.tmbundle.tgz"
# ]
# unless Spec::VERSION::RELEASE_CANDIDATE
# require 'meta_project'
# require 'rake/contrib/xforge'
#
# Rake::XForge::Release.new(MetaProject::Project::XForge::RubyForge.new(PKG_NAME)) do |xf|
# # Never hardcode user name and password in the Rakefile!
# xf.user_name = ENV['RUBYFORGE_USER']
# xf.files = release_files.to_a
# xf.release_name = "RSpec #{PKG_VERSION}"
# end
# else
# puts "SINCE THIS IS A PRERELEASE, FILES ARE UPLOADED WITH SSH, NOT TO THE RUBYFORGE FILE SECTION"
# puts "YOU MUST TYPE THE PASSWORD #{release_files.length} TIMES..."
#
# host = "rspec-website@rubyforge.org"
# remote_dir = "/var/www/gforge-projects/#{PKG_NAME}"
#
# publisher = Rake::SshFilePublisher.new(
# host,
# remote_dir,
# File.dirname(__FILE__),
# *release_files
# )
# publisher.upload
#
# puts "UPLADED THE FOLLOWING FILES:"
# release_files.each do |file|
# name = file.match(/pkg\/(.*)/)[1]
# puts "* http://rspec.rubyforge.org/#{name}"
# end
#
# puts "They are not linked to anywhere, so don't forget to tell people!"
# end
# end
#
# desc "Publish news on RubyForge"
# task :publish_news => [:verify_user] do
# unless Spec::VERSION::RELEASE_CANDIDATE
# require 'meta_project'
# require 'rake/contrib/xforge'
# Rake::XForge::NewsPublisher.new(MetaProject::Project::XForge::RubyForge.new(PKG_NAME)) do |news|
# # Never hardcode user name and password in the Rakefile!
# news.user_name = ENV['RUBYFORGE_USER']
# end
# else
# puts "** Not publishing news to RubyForge - this is a prerelease"
# end
# end