Rakefile in facets-2.6.0 vs Rakefile in facets-2.7.0
- old
+ new
@@ -1,4 +1,247 @@
-Dir['task/**/*.rake'].each do |lib|
- load(lib)
+#!/usr/bin/env ruby
+
+require 'fileutils'
+
+#
+# CORE TEST COVERAGE
+# ----------------------------------------------------------------------------
+
+desc "show core unit test coverage"
+
+task 'coverage' do
+ core_scripts = []
+ cd 'lib/core/facets' do
+ core_scripts = Dir['**/*'].reject{ |s| File.directory?(s) }
+ end
+
+ core_tests = []
+ cd 'test/core' do
+ core_tests = Dir['**/*']
+ end
+
+ core_tests = core_tests.collect do |t|
+ dir, fname = *File.split(t)
+ File.join(dir, fname.sub(/^test_/,''))
+ end
+
+ diff = core_scripts - core_tests
+
+ # remove core collectives
+ diff = diff - %w{
+ array.rb binding.rb cattr.rb class.rb comparable.rb dir.rb
+ enumerable.rb exception.rb hash.rb file.rb filetest.rb float.rb
+ integer.rb kernel.rb matchdata.rb module.rb nilclass.rb
+ numeric.rb proc.rb range.rb regexp.rb string.rb symbol.rb
+ time.rb unboundmethod.rb
+ }
+
+ puts diff.sort.join("\n")
+ puts
+ puts "#{diff.size} files uncovered."
+
end
+
+#
+# GENERATE RDOCS
+# ----------------------------------------------------------------------------
+
+desc "generate rdocs"
+
+task "rdoc" do
+ TEMPLATE = ENV['RDOC_TEMPLATE'] || 'html'
+ APIOUT = "doc/rdoc"
+
+ FileUtils.rm_r(APIOUT)
+
+ system "rdoc -a -S -t'Facets Core API' -T #{TEMPLATE} -m README --op '#{APIOUT}/core' README lib/facets/core"
+ #system "rdoc -a -S -t'Facets Lore API' -T #{TEMPLATE} -m README --op '#{APIOUT}/lore' README lib/facets/lore"
+ system "rdoc -a -S -t'Facets More API' -T #{TEMPLATE} -m README --op '#{APIOUT}/more' README lib/facets/more"
+end
+
+#
+# RUN TESTS
+# ----------------------------------------------------------------------------
+
+task 'test' do
+ prepare_tests_all
+end
+
+desc "run all unit tests"
+task 'test:all' do
+ prepare_tests_all
+end
+
+desc "run core unit tests"
+task 'test:core' do
+ prepare_tests_core
+end
+
+#desc "run lore unit tests"
+#task 'test:lore' do
+# prepare_tests_lore
+#end
+
+desc "run more unit tests"
+task 'test:more' do
+ prepare_tests_more
+end
+
+desc "run all unit tests with ActiveSupport loaded"
+task 'test:all:activesupport' => [:include_activesupport, 'test:all']
+
+desc "run core unit tests with ActiveSupport loaded"
+task 'test:core:activesupport' => [:include_activesupport, 'test:core']
+
+#desc "run lore unit tests with ActiveSupport loaded"
+#task 'test:lore:activesupport' => [:include_activesupport, 'test:lore']
+
+desc "run more unit tests with ActiveSupport loaded"
+task 'test:more:activesupport' => [:include_activesupport, 'test:more']
+
+task 'include_activesupport' do
+ require 'activesupport'
+end
+
+def add_loadpath(*paths)
+ live = ENV['live']
+
+ unless live
+ # $LOAD_PATH.unshift(File.expand_path('lib/core'))
+ # $LOAD_PATH.unshift(File.expand_path('lib/lore'))
+ # $LOAD_PATH.unshift(File.expand_path('lib/more'))
+ paths.each do |path|
+ $LOAD_PATH.unshift(File.expand_path(path))
+ end
+ end
+
+ puts "RUBY VERSION: #{RUBY_VERSION}"
+ puts "LOAD PATH:\n" + $LOAD_PATH.join("\n")
+end
+
+def get_tests(which="{c,l,m}ore")
+ if find = ARGV[1..-1].select{|e| e !~ /(^[-]|[=])/ }[0]
+ unless FileTest.file?(find)
+ #find = File.join(find, '**', 'test_*.rb')
+ find = ['test/test_*.rb']
+ find << File.join(find, which, '**', 'test_*.rb')
+ end
+ else
+ #find = 'test/**/test_*.rb'
+ find = ['test/test_*.rb']
+ find << "test/#{which}/**/test_*.rb"
+ end
+
+ Dir.glob(find)
+end
+
+def run_tests(files)
+ files.each do |file|
+ next if File.directory?(file)
+ begin
+ puts "Loading: #{file}" if $DEBUG
+ load(file)
+ rescue LoadError
+ puts "Error loading: #{file}"
+ end
+ end
+end
+
+def prepare_tests_all
+ add_loadpath('lib/core','lib/lore','lib/more')
+ files = get_tests
+ run_tests(files)
+end
+
+def prepare_tests_core
+ add_loadpath('lib/core')
+ files = get_tests('core')
+ run_tests(files)
+end
+
+def prepare_tests_lore
+ add_loadpath('lib/lore')
+ files = get_tests('lore')
+ run_tests(files)
+end
+
+def prepare_tests_more
+ add_loadpath('lib/more')
+ files = get_tests('more')
+ run_tests(files)
+end
+
+#def run_tests
+# live = ENV['live']
+#
+# unless live
+# $LOAD_PATH.unshift(File.expand_path('lib/core'))
+# $LOAD_PATH.unshift(File.expand_path('lib/lore'))
+# $LOAD_PATH.unshift(File.expand_path('lib/more'))
+# end
+#
+# puts "RUBY VERSION: #{RUBY_VERSION}"
+# puts "LOAD PATH:\n" + $LOAD_PATH.join("\n")
+#
+# if find = ARGV[1..-1].select{|e| e !~ /(^[-]|[=])/ }[0]
+# unless FileTest.file?(find)
+# find = File.join(find, '**', 'test_*.rb')
+# end
+# else
+# find = 'test/**/test_*.rb'
+# end
+#
+# files = Dir.glob(find)
+#
+# files.each do |file|
+# next if File.directory?(file)
+# begin
+# puts "Loading: #{file}" if $DEBUG
+# load(file)
+# rescue LoadError
+# puts "Error loading: #{file}"
+# end
+# end
+#end
+
+#
+# SETUP/INSTALL
+# ----------------------------------------------------------------------------
+
+def load_setup
+ begin
+ require 'setup'
+ $setup_installed = true
+ rescue LoadError
+ $setup_installed = false
+ puts "NOTP"
+ end
+end
+
+private :load_setup
+
+desc "install to ruby site location"
+task :install do
+ load_setup
+
+ if $setup_installed
+ sh "setup.rb all"
+ else
+ puts "Requires stand-alone Setup.rb."
+ puts "See http://setup.rubyforge.org"
+ puts "or 'gem install setup'."
+ end
+end
+
+desc "uninstall from ruby site location"
+task :uninstall do
+ load_setup
+
+ if $setup_installed
+ sh "setup.rb uninstall"
+ else
+ puts "Requires stand-alone Setup.rb."
+ puts "See http://setup.rubyforge.org"
+ puts "or 'gem install setup'."
+ end
+end