Rakefile in sinatra-0.9.6 vs Rakefile in sinatra-1.0.a
- old
+ new
@@ -1,91 +1,41 @@
require 'rake/clean'
require 'rake/testtask'
require 'fileutils'
-task :default => [:test, :compat]
+task :default => :test
task :spec => :test
+def source_version
+ line = File.read('lib/sinatra/base.rb')[/^\s*VERSION = .*/]
+ line.match(/.*VERSION = '(.*)'/)[1]
+end
+
# SPECS ===============================================================
-task(:test) { puts "==> Running main test suite" }
-
Rake::TestTask.new(:test) do |t|
t.test_files = FileList['test/*_test.rb']
- t.ruby_opts = ['-rubygems'] if defined? Gem
+ t.ruby_opts = ['-rubygems -I.'] if defined? Gem
end
-desc "Run < 0.9.x compatibility specs"
-task :compat do
- begin
- require 'mocha'
- require 'test/spec'
- at_exit { exit 0 } # disable test-spec at_exit runner
-
- puts "==> Running compat test suite"
- Rake::TestTask.new(:compat) do |t|
- t.test_files = FileList['compat/*_test.rb']
- t.ruby_opts = ['-rubygems'] if defined? Gem
- end
- rescue LoadError
- warn 'Skipping compat tests. mocha and/or test-spec gems not installed.'
+# Rcov ================================================================
+namespace :test do
+ desc 'Mesures test coverage'
+ task :coverage do
+ rm_f "coverage"
+ rcov = "rcov --text-summary --test-unit-only -Ilib"
+ system("#{rcov} --no-html --no-color test/*_test.rb")
end
end
-# PACKAGING ============================================================
-
-# Load the gemspec using the same limitations as github
-def spec
- @spec ||= eval(File.read('sinatra.gemspec'))
-end
-
-def package(ext='')
- "pkg/sinatra-#{spec.version}" + ext
-end
-
-desc 'Build packages'
-task :package => %w[.gem .tar.gz].map {|e| package(e)}
-
-desc 'Build and install as local gem'
-task :install => package('.gem') do
- sh "gem install #{package('.gem')}"
-end
-
-directory 'pkg/'
-CLOBBER.include('pkg')
-
-file package('.gem') => %w[pkg/ sinatra.gemspec] + spec.files do |f|
- sh "gem build sinatra.gemspec"
- mv File.basename(f.name), f.name
-end
-
-file package('.tar.gz') => %w[pkg/] + spec.files do |f|
- sh <<-SH
- git archive \
- --prefix=sinatra-#{source_version}/ \
- --format=tar \
- HEAD | gzip > #{f.name}
- SH
-end
-
-# Rubyforge Release / Publish Tasks ==================================
-
-desc 'Publish gem and tarball to rubyforge'
-task 'release' => [package('.gem'), package('.tar.gz')] do |t|
- sh <<-end
- rubyforge add_release sinatra sinatra #{spec.version} #{package('.gem')} &&
- rubyforge add_file sinatra sinatra #{spec.version} #{package('.tar.gz')}
- end
-end
-
-# Website ============================================================
+# Website =============================================================
# Building docs requires HAML and the hanna gem:
# gem install mislav-hanna --source=http://gems.github.com
+desc 'Generate RDoc under doc/api'
task 'doc' => ['doc:api']
-desc 'Generate Hanna RDoc under doc/api'
task 'doc:api' => ['doc/api/index.html']
file 'doc/api/index.html' => FileList['lib/**/*.rb','README.rdoc'] do |f|
rb_files = f.prerequisites
sh((<<-end).gsub(/\s+/, ' '))
@@ -99,33 +49,65 @@
#{rb_files.join(' ')}
end
end
CLEAN.include 'doc/api'
-# Gemspec Helpers ====================================================
+# PACKAGING ============================================================
-def source_version
- line = File.read('lib/sinatra/base.rb')[/^\s*VERSION = .*/]
- line.match(/.*VERSION = '(.*)'/)[1]
-end
+if defined?(Gem)
+ # Load the gemspec using the same limitations as github
+ def spec
+ require 'rubygems' unless defined? Gem::Specification
+ @spec ||= eval(File.read('sinatra.gemspec'))
+ end
-task 'sinatra.gemspec' => FileList['{lib,test,compat}/**','Rakefile','CHANGES','*.rdoc'] do |f|
- # read spec file and split out manifest section
- spec = File.read(f.name)
- head, manifest, tail = spec.split(" # = MANIFEST =\n")
- # replace version and date
- head.sub!(/\.version = '.*'/, ".version = '#{source_version}'")
- head.sub!(/\.date = '.*'/, ".date = '#{Date.today.to_s}'")
- # determine file list from git ls-files
- files = `git ls-files`.
- split("\n").
- sort.
- reject{ |file| file =~ /^\./ }.
- reject { |file| file =~ /^doc/ }.
- map{ |file| " #{file}" }.
- join("\n")
- # piece file back together and write...
- manifest = " s.files = %w[\n#{files}\n ]\n"
- spec = [head,manifest,tail].join(" # = MANIFEST =\n")
- File.open(f.name, 'w') { |io| io.write(spec) }
- puts "updated #{f.name}"
+ def package(ext='')
+ "pkg/sinatra-#{spec.version}" + ext
+ end
+
+ desc 'Build packages'
+ task :package => %w[.gem .tar.gz].map {|e| package(e)}
+
+ desc 'Build and install as local gem'
+ task :install => package('.gem') do
+ sh "gem install #{package('.gem')}"
+ end
+
+ directory 'pkg/'
+ CLOBBER.include('pkg')
+
+ file package('.gem') => %w[pkg/ sinatra.gemspec] + spec.files do |f|
+ sh "gem build sinatra.gemspec"
+ mv File.basename(f.name), f.name
+ end
+
+ file package('.tar.gz') => %w[pkg/] + spec.files do |f|
+ sh <<-SH
+ git archive \
+ --prefix=sinatra-#{source_version}/ \
+ --format=tar \
+ HEAD | gzip > #{f.name}
+ SH
+ end
+
+ task 'sinatra.gemspec' => FileList['{lib,test,compat}/**','Rakefile','CHANGES','*.rdoc'] do |f|
+ # read spec file and split out manifest section
+ spec = File.read(f.name)
+ head, manifest, tail = spec.split(" # = MANIFEST =\n")
+ # replace version and date
+ head.sub!(/\.version = '.*'/, ".version = '#{source_version}'")
+ head.sub!(/\.date = '.*'/, ".date = '#{Date.today.to_s}'")
+ # determine file list from git ls-files
+ files = `git ls-files`.
+ split("\n").
+ sort.
+ reject{ |file| file =~ /^\./ }.
+ reject { |file| file =~ /^doc/ }.
+ map{ |file| " #{file}" }.
+ join("\n")
+ # piece file back together and write...
+ manifest = " s.files = %w[\n#{files}\n ]\n"
+ spec = [head,manifest,tail].join(" # = MANIFEST =\n")
+ File.open(f.name, 'w') { |io| io.write(spec) }
+ puts "updated #{f.name}"
+ end
end