Author: lacton
Date: Sun Oct 19 08:48:24 2008
New Revision: 706037
URL: http://svn.apache.org/viewvc?rev=706037&view=rev
Log:
BUILDR-177 Moved cobertura and emma extensions to lib directory
Added:
incubator/buildr/trunk/lib/buildr/java/cobertura.rb
- copied unchanged from r706020,
incubator/buildr/trunk/addon/buildr/cobertura.rb
incubator/buildr/trunk/lib/buildr/java/emma.rb
- copied unchanged from r706020,
incubator/buildr/trunk/addon/buildr/emma.rb
incubator/buildr/trunk/spec/java/cobertura_spec.rb
- copied, changed from r706020,
incubator/buildr/trunk/spec/addon/cobertura_spec.rb
incubator/buildr/trunk/spec/java/emma_spec.rb
- copied, changed from r706020,
incubator/buildr/trunk/spec/addon/emma_spec.rb
incubator/buildr/trunk/spec/java/test_coverage_spec.rb
- copied unchanged from r706020,
incubator/buildr/trunk/spec/addon/test_coverage_spec.rb
Removed:
incubator/buildr/trunk/spec/addon/
Modified:
incubator/buildr/trunk/CHANGELOG
incubator/buildr/trunk/addon/buildr/cobertura.rb
incubator/buildr/trunk/addon/buildr/emma.rb
incubator/buildr/trunk/doc/pages/more_stuff.textile
incubator/buildr/trunk/rakelib/rspec.rake
incubator/buildr/trunk/spec/sandbox.rb
Modified: incubator/buildr/trunk/CHANGELOG
URL:
http://svn.apache.org/viewvc/incubator/buildr/trunk/CHANGELOG?rev=706037&r1=706036&r2=706037&view=diff
==============================================================================
--- incubator/buildr/trunk/CHANGELOG (original)
+++ incubator/buildr/trunk/CHANGELOG Sun Oct 19 08:48:24 2008
@@ -5,6 +5,7 @@
--rules, --no-search, --silent.
* Change: BUILDR-171 Eclipse task generates meta-data files for projects with
test source code but no main source code.
+* Change: BUILDR-177 Moved cobertura and emma extensions to lib directory.
* Fixed: BUILDR-172 Scala compiler not loaded by default.
* Fixed: Removed double complete/fail messages showing up on console.
Modified: incubator/buildr/trunk/addon/buildr/cobertura.rb
URL:
http://svn.apache.org/viewvc/incubator/buildr/trunk/addon/buildr/cobertura.rb?rev=706037&r1=706036&r2=706037&view=diff
==============================================================================
--- incubator/buildr/trunk/addon/buildr/cobertura.rb (original)
+++ incubator/buildr/trunk/addon/buildr/cobertura.rb Sun Oct 19 08:48:24 2008
@@ -14,223 +14,9 @@
# the License.
-require 'buildr/java'
-
-
-module Buildr
-
- # Provides the <code>cobertura:html</code> and <code>cobertura:xml</code>
tasks.
- # Require explicitly using <code>require "buildr/cobertura"</code>.
- #
- # You can generate cobertura reports for a single project
- # using the project name as prefix:
- #
- # project_name:cobertura:html
- #
- # You can also specify which classes to include/exclude from instrumentation
by
- # passing a class name regexp to the <code>cobertura.include</code> or
- # <code>cobertura.exclude</code> methods.
- #
- # define 'someModule' do
- # cobertura.include 'some.package.*'
- # cobertura.include /some.(foo|bar).*/
- # cobertura.exclude 'some.foo.util.SimpleUtil'
- # cobertura.exclude /*.Const(ants)?/i
- # end
- module Cobertura
-
- class << self
-
- REQUIRES = ["net.sourceforge.cobertura:cobertura:jar:1.9",
"log4j:log4j:jar:1.2.9",
- "asm:asm:jar:2.2.1", "asm:asm-tree:jar:2.2.1", "oro:oro:jar:2.0.8"]
unless const_defined?('REQUIRES')
-
- def requires()
- @requires ||= Buildr.artifacts(REQUIRES).each(&:invoke).map(&:to_s)
- end
-
- def report_to(file = nil)
- File.expand_path(File.join(*["reports/cobertura", file.to_s].compact))
- end
-
- def data_file()
- File.expand_path("reports/cobertura.ser")
- end
-
- end
-
- class CoberturaConfig # :nodoc:
-
- def initialize(project)
- @project = project
- end
-
- attr_reader :project
- private :project
-
- attr_writer :data_file, :instrumented_dir, :report_dir
-
- def data_file
- @data_file ||= project.path_to(:reports, 'cobertura.ser')
- end
-
- def instrumented_dir
- @instrumented_dir ||= project.path_to(:target, :instrumented, :classes)
- end
-
- def report_dir
- @report_dir ||= project.path_to(:reports, :cobertura)
- end
-
- def report_to(file = nil)
- File.expand_path(File.join(*[report_dir, file.to_s].compact))
- end
-
- # :call-seq:
- # project.cobertura.include(*classPatterns)
- #
- def include(*classPatterns)
- includes.push(*classPatterns.map { |p| String === p ? Regexp.new(p) :
p })
- self
- end
-
- def includes
- @includeClasses ||= []
- end
-
- # :call-seq:
- # project.cobertura.exclude(*classPatterns)
- #
- def exclude(*classPatterns)
- excludes.push(*classPatterns.map { |p| String === p ? Regexp.new(p) :
p })
- self
- end
-
- def excludes
- @excludeClasses ||= []
- end
-
- def sources
- project.compile.sources
- end
- end
-
- module CoberturaExtension # :nodoc:
- include Buildr::Extension
-
- def cobertura
- @cobertura_config ||= CoberturaConfig.new(self)
- end
-
- after_define do |project|
- cobertura = project.cobertura
-
- namespace 'cobertura' do
- unless project.compile.target.nil?
- # Instrumented bytecode goes in a different directory. This task
creates before running the test
- # cases and monitors for changes in the generate bytecode.
- instrumented = project.file(cobertura.instrumented_dir =>
project.compile.target) do |task|
- mkdir_p task.to_s, :verbose => false
- unless project.compile.sources.empty?
- info "Instrumenting classes with cobertura data file
#{cobertura.data_file}"
- Buildr.ant "cobertura" do |ant|
- ant.taskdef
:classpath=>Cobertura.requires.join(File::PATH_SEPARATOR),
:resource=>"tasks.properties"
- ant.send "cobertura-instrument", :todir=>task.to_s,
:datafile=>cobertura.data_file do
- includes, excludes = cobertura.includes, cobertura.excludes
-
- classes_dir = project.compile.target.to_s
- if includes.empty? && excludes.empty?
- ant.fileset :dir => classes_dir do
- ant.include :name => "**/*.class"
- end
- else
- includes = [//] if includes.empty?
- Dir.glob(File.join(classes_dir, "**/*.class")) do |cls|
- cls_name = cls.gsub(/#{classes_dir}\/?|\.class$/,
'').gsub('/', '.')
- if includes.any? { |p| p === cls_name } &&
!excludes.any? { |p| p === cls_name }
- ant.fileset :file => cls
- end
- end
- end
- end
- end
- end
- touch task.to_s, :verbose=>false
- end
-
- task 'instrument' => instrumented
-
- # We now have two target directories with bytecode. It would make
sense to remove compile.target
- # and add instrumented instead, but apparently Cobertura only
creates some of the classes, so
- # we need both directories and instrumented must come first.
- project.test.dependencies.unshift cobertura.instrumented_dir
- project.test.with Cobertura.requires
-
project.test.options[:properties]["net.sourceforge.cobertura.datafile"] =
cobertura.data_file
-
- [:xml, :html].each do |format|
- task format => ['instrument', 'test'] do
- info "Creating test coverage reports in
#{cobertura.report_to(format)}"
- Buildr.ant "cobertura" do |ant|
- ant.taskdef
:classpath=>Cobertura.requires.join(File::PATH_SEPARATOR),
:resource=>"tasks.properties"
- ant.send "cobertura-report", :format=>format,
- :destdir=>cobertura.report_to(format),
:datafile=>cobertura.data_file do
- cobertura.sources.flatten.each do |src|
- ant.fileset(:dir=>src.to_s) if File.exist?(src.to_s)
- end
- end
- end
- end
- end
- end
-
- end
-
- project.clean do
- rm_rf [cobertura.report_to, cobertura.data_file,
cobertura.instrumented_dir], :verbose=>false
- end
-
- end
-
- end
-
- class Buildr::Project
- include CoberturaExtension
- end
-
- namespace "cobertura" do
-
- task "instrument" do
- Buildr.projects.each do |project|
- project.cobertura.data_file = data_file
-
project.test.options[:properties]["net.sourceforge.cobertura.datafile"] =
data_file
- instrument_task ="#{project.name}:cobertura:instrument"
- task(instrument_task).invoke if
Rake::Task.task_defined?(instrument_task)
- end
- end
-
- [:xml, :html].each do |format|
- report_target = report_to(format)
- desc "Run the test cases and produce code coverage reports in
#{report_target}"
- task format => ["instrument", "test"] do
- info "Creating test coverage reports in #{report_target}"
- Buildr.ant "cobertura" do |ant|
- ant.taskdef :classpath=>requires.join(File::PATH_SEPARATOR),
:resource=>"tasks.properties"
- ant.send "cobertura-report", :destdir=>report_target,
:format=>format, :datafile=>data_file do
- Buildr.projects.map(&:cobertura).map(&:sources).flatten.each do
|src|
- ant.fileset :dir=>src.to_s if File.exist?(src.to_s)
- end
- end
- end
- end
- end
-
- task "clean" do
- rm_rf [report_to, data_file], :verbose=>false
- end
- end
-
- task "clean" do
- task("cobertura:clean").invoke if Dir.pwd ==
Rake.application.original_dir
- end
-
- end
+if Buildr::VERSION < '1.5'
+ Buildr.application.deprecated "'buildr/cobertura', use
'buildr/java/cobertura' instead"
+ require 'buildr/java/cobertura'
+else
+ raise "#{__FILE__} should be removed since its use is deprecated since
version 1.3.4"
end
Modified: incubator/buildr/trunk/addon/buildr/emma.rb
URL:
http://svn.apache.org/viewvc/incubator/buildr/trunk/addon/buildr/emma.rb?rev=706037&r1=706036&r2=706037&view=diff
==============================================================================
--- incubator/buildr/trunk/addon/buildr/emma.rb (original)
+++ incubator/buildr/trunk/addon/buildr/emma.rb Sun Oct 19 08:48:24 2008
@@ -14,225 +14,9 @@
# the License.
-require 'buildr/java'
-
-
-module Buildr
-
- # Provides the <code>emma:html</code> and <code>emma:xml</code> tasks.
- # Require explicitly using <code>require "buildr/emma"</code>.
- #
- # You can generate emma reports for a single project
- # using the project name as prefix:
- #
- # project_name:emma:html
- #
- # You can also specify which classes to include/exclude from instrumentation
by
- # passing a class name regexp to the <code>emma.include</code> or
- # <code>emma.exclude</code> methods.
- #
- # define 'someModule' do
- # emma.include 'some.package.*'
- # emma.exclude 'some.foo.util.SimpleUtil'
- # end
- module Emma
-
- class << self
-
- REQUIRES = ['emma:emma_ant:jar:2.0.5312', 'emma:emma:jar:2.0.5312']
unless const_defined?('REQUIRES')
-
- def requires()
- @requires ||= Buildr.artifacts(REQUIRES).each(&:invoke).map(&:to_s)
- end
-
- def report_to format=nil
- File.expand_path('reports/emma')
- end
-
- def data_file()
- File.join(report_to, 'coverage.es')
- end
-
- def ant
- Buildr.ant 'emma' do |ant|
- ant.taskdef :classpath=>requires.join(File::PATH_SEPARATOR),
:resource=>'emma_ant.properties'
- ant.emma :verbosity=>(Buildr.application.options.trace ? 'verbose'
: 'warning') do
- yield ant
- end
- end
- end
- end
-
- class EmmaConfig # :nodoc:
-
- def initialize(project)
- @project = project
- end
-
- attr_reader :project
- private :project
-
- attr_writer :metadata_file, :coverage_file, :instrumented_dir,
:report_dir
-
- def coverage_file
- @coverage_file ||= File.join(report_dir, 'coverage.ec')
- end
-
- def metadata_file
- @metadata_file ||= File.join(report_dir, 'coverage.em')
- end
-
- def instrumented_dir
- @instrumented_dir ||= project.path_to(:target, :instrumented, :classes)
- end
-
- def report_dir
- @report_dir ||= project.path_to(:reports, :emma)
- end
-
- def report_to format
- report_dir
- end
-
- # :call-seq:
- # project.emma.include(*classPatterns)
- #
- def include(*classPatterns)
- includes.push(*classPatterns)
- self
- end
-
- def includes
- @includeClasses ||= []
- end
-
- # :call-seq:
- # project.emma.exclude(*classPatterns)
- #
- def exclude(*classPatterns)
- excludes.push(*classPatterns)
- self
- end
-
- def excludes
- @excludeClasses ||= []
- end
-
- def sources
- project.compile.sources
- end
- end
-
- module EmmaExtension # :nodoc:
- include Buildr::Extension
-
- def emma
- @emma_config ||= EmmaConfig.new(self)
- end
-
- after_define do |project|
- emma = project.emma
-
- namespace 'emma' do
- unless project.compile.target.nil?
- # Instrumented bytecode goes in a different directory. This task
creates before running the test
- # cases and monitors for changes in the generate bytecode.
- instrumented = project.file(emma.instrumented_dir =>
project.compile.target) do |task|
- unless project.compile.sources.empty?
- info "Instrumenting classes with emma metadata file
#{emma.metadata_file}"
- Emma.ant do |ant|
- ant.instr :instrpath=>project.compile.target.to_s,
:destdir=>task.to_s, :metadatafile=>emma.metadata_file do
- ant.filter :includes=>emma.includes.join(', ') unless
emma.includes.empty?
- ant.filter :excludes=>emma.excludes.join(', ') unless
emma.excludes.empty?
- end
- end
- touch task.to_s, :verbose=>false
- end
- end
-
- task 'instrument' => instrumented
-
- # We now have two target directories with bytecode.
- project.test.dependencies.unshift emma.instrumented_dir
- project.test.with Emma.requires
- project.test.options[:properties]["emma.coverage.out.file"] =
emma.coverage_file
-
- [:xml, :html].each do |format|
- task format => ['instrument', 'test'] do
- missing_required_files = [emma.metadata_file,
emma.coverage_file].reject { |f| File.exist?(f) }
- if missing_required_files.empty?
- info "Creating test coverage reports in #{emma.report_dir}"
- mkdir_p emma.report_dir, :verbose=>false
- Emma.ant do |ant|
- ant.report do
- ant.infileset :file=>emma.metadata_file
- ant.infileset :file=>emma.coverage_file
- ant.send format,
:outfile=>File.join(emma.report_to(format),"coverage.#{format}")
- ant.sourcepath do
- emma.sources.flatten.each do |src|
- ant.dirset(:dir=>src.to_s) if File.exist?(src.to_s)
- end
- end
- end
- end
- else
- info "No test coverage report for #{project}. Missing:
#{missing_required_files.join(', ')}"
- end
- end
- end
- end
- end
-
- project.clean do
- rm_rf [emma.report_dir, emma.coverage_file, emma.metadata_file,
emma.instrumented_dir], :verbose=>false
- end
-
- end
-
- end
-
- class Buildr::Project
- include EmmaExtension
- end
-
- namespace "emma" do
-
- Project.local_task('instrument') { |name| "Instrumenting #{name}" }
-
- [:xml, :html].each do |format|
- desc "Run the test cases and produce code coverage reports in
#{format}"
- task format => ['instrument', 'test'] do
- info "Creating test coverage reports in #{format}"
- mkdir_p report_to(format), :verbose=>false
- Emma.ant do |ant|
- ant.merge :outfile=>data_file do
- Buildr.projects.each do |project|
- [project.emma.metadata_file, project.emma.coverage_file].each
do |data_file|
- ant.fileset :file=>data_file if File.exist?(data_file)
- end
- end
- end
- ant.report do
- ant.infileset :file=>data_file
- ant.send format, :outfile=>File.join(report_to(format),
"coverage.#{format}")
- ant.sourcepath do
-
Buildr.projects.map(&:emma).map(&:sources).flatten.map(&:to_s).each do |src|
- ant.dirset :dir=>src if File.exist?(src)
- end
- end
- end
- end
- end
- end
-
- task :clean do
- rm_rf [report_to, data_file], :verbose=>false
- end
- end
-
- task :clean do
- task('emma:clean').invoke if Dir.pwd == Rake.application.original_dir
- end
-
- end
+if Buildr::VERSION < '1.5'
+ Buildr.application.deprecated "'buildr/emma', use 'buildr/java/emma' instead"
+ require 'buildr/java/emma'
+else
+ raise "#{__FILE__} should be removed since its use is deprecated since
version 1.3.4"
end
Modified: incubator/buildr/trunk/doc/pages/more_stuff.textile
URL:
http://svn.apache.org/viewvc/incubator/buildr/trunk/doc/pages/more_stuff.textile?rev=706037&r1=706036&r2=706037&view=diff
==============================================================================
--- incubator/buildr/trunk/doc/pages/more_stuff.textile (original)
+++ incubator/buildr/trunk/doc/pages/more_stuff.textile Sun Oct 19 08:48:24 2008
@@ -213,8 +213,8 @@
We want Buildr to load fast, and not everyone cares for these tasks, so we
don't include them by default. If you want to use one of them, you need to
require it explicitly. The proper way to do it in Ruby:
{{{!ruby
-require 'buildr/cobertura'
-require 'buildr/emma'
+require 'buildr/java/cobertura'
+require 'buildr/java/emma'
require 'buildr/jdepend'
}}}
@@ -224,7 +224,7 @@
{{{!sh
$ buildr --require buildr/jdepend jdepend:swing
-$ buildr -rbuildr/cobertura cobertura:html
+$ buildr -rbuildr/java/cobertura cobertura:html
}}}
Modified: incubator/buildr/trunk/rakelib/rspec.rake
URL:
http://svn.apache.org/viewvc/incubator/buildr/trunk/rakelib/rspec.rake?rev=706037&r1=706036&r2=706037&view=diff
==============================================================================
--- incubator/buildr/trunk/rakelib/rspec.rake (original)
+++ incubator/buildr/trunk/rakelib/rspec.rake Sun Oct 19 08:48:24 2008
@@ -46,7 +46,7 @@
task.spec_opts << '--colour' if $stdout.isatty
task.rcov = true
task.rcov_dir = 'reports/coverage'
- task.rcov_opts << '--exclude / --include-file ^lib --include-file ^addon
--text-summary'
+ task.rcov_opts << '--exclude / --include-file ^lib --text-summary'
end
file 'reports/coverage'=>'coverage'
@@ -80,4 +80,4 @@
task 'stage:prepare'=>'spec'
-task 'stage:prepare'=>RUBY_PLATFORM =~ /java/ ? 'spec:ruby' : 'spec:jruby' #
Test the *other* platform
\ No newline at end of file
+task 'stage:prepare'=>RUBY_PLATFORM =~ /java/ ? 'spec:ruby' : 'spec:jruby' #
Test the *other* platform
Copied: incubator/buildr/trunk/spec/java/cobertura_spec.rb (from r706020,
incubator/buildr/trunk/spec/addon/cobertura_spec.rb)
URL:
http://svn.apache.org/viewvc/incubator/buildr/trunk/spec/java/cobertura_spec.rb?p2=incubator/buildr/trunk/spec/java/cobertura_spec.rb&p1=incubator/buildr/trunk/spec/addon/cobertura_spec.rb&r1=706020&r2=706037&rev=706037&view=diff
==============================================================================
--- incubator/buildr/trunk/spec/addon/cobertura_spec.rb (original)
+++ incubator/buildr/trunk/spec/java/cobertura_spec.rb Sun Oct 19 08:48:24 2008
@@ -15,7 +15,7 @@
require File.join(File.dirname(__FILE__), 'test_coverage_spec')
-Sandbox.require_addon 'buildr/cobertura'
+Sandbox.require_optional_extension 'buildr/java/cobertura'
Buildr::Cobertura::requires
@@ -23,7 +23,7 @@
describe Buildr::Cobertura do
before do
# Reloading the addon because the sandbox removes all its actions
- load File.expand_path('../addon/buildr/cobertura.rb')
+ load File.expand_path('../lib/buildr/java/cobertura.rb')
@tool_module = Buildr::Cobertura
end
Copied: incubator/buildr/trunk/spec/java/emma_spec.rb (from r706020,
incubator/buildr/trunk/spec/addon/emma_spec.rb)
URL:
http://svn.apache.org/viewvc/incubator/buildr/trunk/spec/java/emma_spec.rb?p2=incubator/buildr/trunk/spec/java/emma_spec.rb&p1=incubator/buildr/trunk/spec/addon/emma_spec.rb&r1=706020&r2=706037&rev=706037&view=diff
==============================================================================
--- incubator/buildr/trunk/spec/addon/emma_spec.rb (original)
+++ incubator/buildr/trunk/spec/java/emma_spec.rb Sun Oct 19 08:48:24 2008
@@ -15,7 +15,7 @@
require File.join(File.dirname(__FILE__), 'test_coverage_spec')
-Sandbox.require_addon 'buildr/emma'
+Sandbox.require_optional_extension 'buildr/java/emma'
Buildr::Emma::requires
@@ -24,7 +24,7 @@
describe Buildr::Emma do
before do
# Reloading the addon because the sandbox removes all its actions
- load File.expand_path('../addon/buildr/emma.rb')
+ load File.expand_path('../lib/buildr/java/emma.rb')
@tool_module = Buildr::Emma
end
Modified: incubator/buildr/trunk/spec/sandbox.rb
URL:
http://svn.apache.org/viewvc/incubator/buildr/trunk/spec/sandbox.rb?rev=706037&r1=706036&r2=706037&view=diff
==============================================================================
--- incubator/buildr/trunk/spec/sandbox.rb (original)
+++ incubator/buildr/trunk/spec/sandbox.rb Sun Oct 19 08:48:24 2008
@@ -43,13 +43,13 @@
spec.after(:each) { reset }
end
- # Require an addon without letting its callbacks pollute the Project class.
- def require_addon(addon_require_path)
- project_callbacks_without_addon = Project.class_eval { @callbacks }.dup
+ # Require an optional extension without letting its callbacks pollute the
Project class.
+ def require_optional_extension(extension_require_path)
+ project_callbacks_without_extension = Project.class_eval { @callbacks
}.dup
begin
- require addon_require_path
+ require extension_require_path
ensure
- Project.class_eval { @callbacks = project_callbacks_without_addon }
+ Project.class_eval { @callbacks = project_callbacks_without_extension }
end
end
end