buildr 1.3.5-x86-mswin32 → 1.4.0-x86-mswin32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (151) hide show
  1. data/CHANGELOG +153 -8
  2. data/README.rdoc +1 -1
  3. data/addon/buildr/antlr.rb +5 -5
  4. data/addon/buildr/drb.rb +18 -18
  5. data/addon/buildr/hibernate.rb +18 -14
  6. data/addon/buildr/javacc.rb +4 -4
  7. data/addon/buildr/jetty.rb +5 -5
  8. data/addon/buildr/nailgun.rb +23 -23
  9. data/addon/buildr/openjpa.rb +1 -1
  10. data/addon/buildr/org/apache/buildr/BuildrNail$Main.class +0 -0
  11. data/addon/buildr/org/apache/buildr/BuildrNail.class +0 -0
  12. data/addon/buildr/org/apache/buildr/JettyWrapper$1.class +0 -0
  13. data/addon/buildr/org/apache/buildr/JettyWrapper$BuildrHandler.class +0 -0
  14. data/addon/buildr/org/apache/buildr/JettyWrapper.class +0 -0
  15. data/addon/buildr/protobuf.rb +75 -0
  16. data/addon/buildr/xmlbeans.rb +5 -5
  17. data/buildr.buildfile +2 -2
  18. data/buildr.gemspec +8 -7
  19. data/doc/_layouts/default.html +2 -2
  20. data/doc/artifacts.textile +4 -4
  21. data/doc/building.textile +35 -3
  22. data/doc/contributing.textile +5 -0
  23. data/doc/download.textile +16 -5
  24. data/doc/extending.textile +38 -12
  25. data/doc/installing.textile +6 -5
  26. data/doc/languages.textile +182 -42
  27. data/doc/more_stuff.textile +2 -2
  28. data/doc/packaging.textile +14 -15
  29. data/doc/projects.textile +7 -2
  30. data/doc/quick_start.textile +4 -4
  31. data/doc/scripts/buildr-git.rb +63 -63
  32. data/doc/scripts/gitflow.rb +21 -21
  33. data/doc/settings_profiles.textile +9 -2
  34. data/doc/testing.textile +16 -5
  35. data/etc/KEYS +38 -0
  36. data/lib/buildr.rb +1 -1
  37. data/lib/buildr/core.rb +1 -0
  38. data/lib/buildr/core/application.rb +33 -27
  39. data/lib/buildr/core/build.rb +41 -28
  40. data/lib/buildr/core/cc.rb +172 -0
  41. data/lib/buildr/core/checks.rb +1 -1
  42. data/lib/buildr/core/common.rb +7 -6
  43. data/lib/buildr/core/compile.rb +7 -8
  44. data/lib/buildr/core/doc.rb +263 -0
  45. data/lib/buildr/core/environment.rb +6 -6
  46. data/lib/buildr/core/filter.rb +77 -35
  47. data/lib/buildr/core/generate.rb +7 -7
  48. data/lib/buildr/core/help.rb +1 -1
  49. data/lib/buildr/core/osx.rb +6 -6
  50. data/lib/buildr/core/progressbar.rb +4 -4
  51. data/lib/buildr/core/project.rb +144 -36
  52. data/lib/buildr/core/shell.rb +34 -34
  53. data/lib/buildr/core/test.rb +89 -20
  54. data/lib/buildr/core/transports.rb +8 -7
  55. data/lib/buildr/core/util.rb +77 -23
  56. data/lib/buildr/groovy/bdd.rb +5 -5
  57. data/lib/buildr/groovy/compiler.rb +19 -15
  58. data/lib/buildr/groovy/shell.rb +6 -6
  59. data/lib/buildr/ide/eclipse.rb +148 -75
  60. data/lib/buildr/ide/eclipse/java.rb +3 -3
  61. data/lib/buildr/ide/eclipse/plugin.rb +8 -5
  62. data/lib/buildr/ide/eclipse/scala.rb +4 -2
  63. data/lib/buildr/ide/idea.rb +2 -2
  64. data/lib/buildr/ide/idea7x.rb +23 -4
  65. data/lib/buildr/java.rb +1 -0
  66. data/lib/buildr/java/ant.rb +4 -4
  67. data/lib/buildr/java/bdd.rb +51 -54
  68. data/lib/buildr/java/cobertura.rb +57 -35
  69. data/lib/buildr/java/commands.rb +14 -5
  70. data/lib/buildr/java/compiler.rb +3 -217
  71. data/lib/buildr/java/deprecated.rb +4 -4
  72. data/lib/buildr/java/doc.rb +70 -0
  73. data/lib/buildr/java/emma.rb +22 -22
  74. data/lib/buildr/java/jruby.rb +4 -4
  75. data/lib/buildr/java/jtestr_runner.rb.erb +27 -25
  76. data/lib/buildr/java/org/apache/buildr/JavaTestFilter.class +0 -0
  77. data/lib/buildr/java/org/apache/buildr/JavaTestFilter.java +8 -3
  78. data/lib/buildr/java/packaging.rb +30 -29
  79. data/lib/buildr/java/pom.rb +4 -4
  80. data/lib/buildr/java/rjb.rb +6 -6
  81. data/lib/buildr/java/test_result.rb +61 -85
  82. data/lib/buildr/java/tests.rb +44 -27
  83. data/lib/buildr/java/version_requirement.rb +8 -8
  84. data/lib/buildr/packaging/archive.rb +55 -22
  85. data/lib/buildr/packaging/artifact.rb +75 -36
  86. data/lib/buildr/packaging/artifact_namespace.rb +90 -78
  87. data/lib/buildr/packaging/artifact_search.rb +5 -5
  88. data/lib/buildr/packaging/gems.rb +11 -7
  89. data/lib/buildr/packaging/package.rb +10 -7
  90. data/lib/buildr/packaging/tar.rb +14 -14
  91. data/lib/buildr/packaging/version_requirement.rb +30 -10
  92. data/lib/buildr/packaging/ziptask.rb +51 -13
  93. data/lib/buildr/scala.rb +1 -0
  94. data/lib/buildr/scala/bdd.rb +25 -20
  95. data/lib/buildr/scala/compiler.rb +87 -40
  96. data/lib/buildr/scala/doc.rb +106 -0
  97. data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.class +0 -0
  98. data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.java +57 -0
  99. data/lib/buildr/scala/shell.rb +14 -9
  100. data/lib/buildr/scala/tests.rb +33 -26
  101. data/lib/buildr/shell.rb +33 -33
  102. data/rakelib/all-in-one.rake +113 -0
  103. data/rakelib/checks.rake +1 -1
  104. data/rakelib/doc.rake +7 -0
  105. data/rakelib/package.rake +1 -1
  106. data/rakelib/release.rake +9 -6
  107. data/rakelib/rspec.rake +26 -7
  108. data/rakelib/setup.rake +15 -3
  109. data/rakelib/stage.rake +18 -11
  110. data/spec/addon/drb_spec.rb +25 -25
  111. data/spec/core/application_spec.rb +111 -21
  112. data/spec/core/build_spec.rb +16 -15
  113. data/spec/core/cc_spec.rb +174 -0
  114. data/spec/core/checks_spec.rb +34 -34
  115. data/spec/core/common_spec.rb +51 -5
  116. data/spec/core/compile_spec.rb +89 -14
  117. data/spec/core/extension_spec.rb +127 -19
  118. data/spec/core/generate_spec.rb +2 -2
  119. data/spec/core/project_spec.rb +10 -10
  120. data/spec/core/test_spec.rb +144 -35
  121. data/spec/core/transport_spec.rb +8 -8
  122. data/spec/core/util_spec.rb +63 -5
  123. data/spec/groovy/bdd_spec.rb +5 -5
  124. data/spec/groovy/compiler_spec.rb +29 -18
  125. data/spec/ide/eclipse_spec.rb +185 -9
  126. data/spec/ide/idea7x_spec.rb +22 -10
  127. data/spec/java/ant_spec.rb +9 -5
  128. data/spec/java/bdd_spec.rb +29 -37
  129. data/spec/java/cobertura_spec.rb +12 -12
  130. data/spec/java/commands_spec.rb +34 -0
  131. data/spec/java/compiler_spec.rb +53 -53
  132. data/spec/java/emma_spec.rb +11 -11
  133. data/spec/java/java_spec.rb +10 -10
  134. data/spec/java/packaging_spec.rb +67 -20
  135. data/spec/java/test_coverage_helper.rb +18 -18
  136. data/spec/java/tests_spec.rb +13 -9
  137. data/spec/packaging/archive_spec.rb +187 -20
  138. data/spec/packaging/artifact_namespace_spec.rb +172 -83
  139. data/spec/packaging/artifact_spec.rb +83 -18
  140. data/spec/packaging/packaging_spec.rb +41 -14
  141. data/spec/sandbox.rb +23 -12
  142. data/spec/scala/bdd_spec.rb +13 -8
  143. data/spec/scala/compiler_spec.rb +18 -13
  144. data/spec/scala/scala.rb +3 -3
  145. data/spec/scala/tests_spec.rb +46 -24
  146. data/spec/spec_helpers.rb +28 -10
  147. data/spec/version_requirement_spec.rb +25 -11
  148. metadata +149 -133
  149. data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner$.class +0 -0
  150. data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.scala +0 -35
  151. data/rakelib/stage.rake~ +0 -213
@@ -30,7 +30,10 @@ module Buildr
30
30
  eclipse = project.eclipse
31
31
 
32
32
  # smart defaults
33
- if eclipse.natures.empty? && ((File.exists? project.path_to("plugin.xml")) || (File.exists? project.path_to("OSGI-INF")))
33
+ if eclipse.natures.empty? && (
34
+ (File.exists? project.path_to("plugin.xml")) ||
35
+ (File.exists? project.path_to("OSGI-INF")) ||
36
+ (File.exists?(project.path_to("META-INF/MANIFEST.MF")) && File.read(project.path_to("META-INF/MANIFEST.MF")).match(/^Bundle-SymbolicName:/)))
34
37
  eclipse.natures = [NATURE, Buildr::Eclipse::Java::NATURE]
35
38
  eclipse.classpath_containers = [CONTAINER, Buildr::Eclipse::Java::CONTAINER] if eclipse.classpath_containers.empty?
36
39
  eclipse.builders = BUILDERS + [Buildr::Eclipse::Java::BUILDER] if eclipse.builders.empty?
@@ -49,12 +52,12 @@ module Buildr
49
52
  index = eclipse.classpath_containers.index(Buildr::Eclipse::Java::CONTAINER) || -1
50
53
  eclipse.classpath_containers = eclipse.classpath_containers.insert(index, CONTAINER)
51
54
  end
52
- unless (eclipse.builders.include?(BUILDER[0]) && eclipse.builders.include?(BUILDER[1]))
55
+ unless (eclipse.builders.include?(BUILDERS[0]) && eclipse.builders.include?(BUILDERS[1]))
53
56
  # plugin builder must be before java builder
54
57
  index = eclipse.classpath_containers.index(Buildr::Eclipse::Java::BUILDER) || -1
55
- eclipse.builders = eclipse.builders.insert(index, BUILDER[1]) unless eclipse.builders.include? BUILDER[1]
56
- index = eclipse.classpath_containers.index(BUILDER[1]) || -1
57
- eclipse.builders = eclipse.builders.insert(index, BUILDER[0]) unless eclipse.builders.include? BUILDER[0]
58
+ eclipse.builders = eclipse.builders.insert(index, BUILDERS[1]) unless eclipse.builders.include? BUILDERS[1]
59
+ index = eclipse.classpath_containers.index(BUILDERS[1]) || -1
60
+ eclipse.builders = eclipse.builders.insert(index, BUILDERS[0]) unless eclipse.builders.include? BUILDERS[0]
58
61
  end
59
62
  end
60
63
  end
@@ -26,14 +26,15 @@ module Buildr
26
26
  CONTAINER = 'ch.epfl.lamp.sdt.launching.SCALA_CONTAINER'
27
27
  BUILDER = 'ch.epfl.lamp.sdt.core.scalabuilder'
28
28
 
29
- after_define do |project|
29
+ after_define :eclipse => :eclipse_scala
30
+ after_define :eclipse_scala do |project|
30
31
  eclipse = project.eclipse
31
-
32
32
  # smart defaults
33
33
  if eclipse.natures.empty? && (project.compile.language == :scala || project.test.compile.language == :scala)
34
34
  eclipse.natures = [NATURE, Buildr::Eclipse::Java::NATURE]
35
35
  eclipse.classpath_containers = [CONTAINER, Buildr::Eclipse::Java::CONTAINER] if eclipse.classpath_containers.empty?
36
36
  eclipse.builders = BUILDER if eclipse.builders.empty?
37
+ eclipse.exclude_libs += Buildr::Scala::Scalac.dependencies
37
38
  end
38
39
 
39
40
  # :scala nature explicitly set
@@ -54,6 +55,7 @@ module Buildr
54
55
  eclipse.builders -= [Buildr::Eclipse::Java::BUILDER]
55
56
  eclipse.builders += [BUILDER]
56
57
  end
58
+ eclipse.exclude_libs += Buildr::Scala::Scalac.dependencies
57
59
  end
58
60
  end
59
61
 
@@ -30,11 +30,11 @@ module Buildr
30
30
  Project.local_task "idea"=>"artifacts"
31
31
  end
32
32
 
33
- before_define do |project|
33
+ before_define(:idea) do |project|
34
34
  project.recursive_task("idea")
35
35
  end
36
36
 
37
- after_define do |project|
37
+ after_define(:idea => :package) do |project|
38
38
  idea = project.task("idea")
39
39
  # We need paths relative to the top project's base directory.
40
40
  root_path = lambda { |p| f = lambda { |p| p.parent ? f[p.parent] : p.base_dir }; f[p] }[project]
@@ -37,13 +37,17 @@ module Buildr
37
37
  # Global task "idea" generates artifacts for all projects.
38
38
  desc "Generate Idea 7.x artifacts for all projects"
39
39
  Project.local_task "idea7x"=>"artifacts"
40
+
41
+ desc "Delete the generated Idea 7.x artifacts for all projects"
42
+ Project.local_task "idea7x:clean"
40
43
  end
41
44
 
42
- before_define do |project|
45
+ before_define(:idea7x) do |project|
43
46
  project.recursive_task("idea7x")
47
+ project.recursive_task("idea7x:clean")
44
48
  end
45
49
 
46
- after_define do |project|
50
+ after_define(:idea7x => :package) do |project|
47
51
  idea7x = project.task("idea7x")
48
52
 
49
53
  # We need paths relative to the top project's base directory.
@@ -90,7 +94,7 @@ module Buildr
90
94
  ext_libs = m2_libs.map { |path| "jar://#{path.to_s.sub(m2repo, "$M2_REPO$")}!/" }
91
95
  ext_libs << "#{MODULE_DIR_URL}/#{relative[project.test.resources.target.to_s]}" if project.test.resources.target
92
96
  ext_libs << "#{MODULE_DIR_URL}/#{relative[project.resources.target.to_s]}" if project.resources.target
93
-
97
+
94
98
  Buildr::Idea7x.generate_module_libs(xml, ext_libs)
95
99
  xml.orderEntryProperties
96
100
  end
@@ -99,11 +103,18 @@ module Buildr
99
103
  end
100
104
  end
101
105
 
106
+ # Add task to remove generated module
107
+ project.task("idea7x:clean") do
108
+ if File.exist?(task_name)
109
+ info "Removing #{task_name}"
110
+ rm_rf task_name
111
+ end
112
+ end
113
+
102
114
  # Root project aggregates all the subprojects.
103
115
  if project.parent == nil
104
116
  Buildr::Idea7x.generate_ipr(project, idea7x, Buildr.application.buildfile)
105
117
  end
106
-
107
118
  end # after_define
108
119
 
109
120
  class << self
@@ -200,6 +211,14 @@ module Buildr
200
211
  template_xml.write file
201
212
  end
202
213
  end
214
+
215
+ # Add task to remove generated project file
216
+ project.task("idea7x:clean") do
217
+ if File.exist?(task_name)
218
+ info "Removing #{task_name}"
219
+ rm_rf task_name
220
+ end
221
+ end
203
222
  end
204
223
 
205
224
  end
data/lib/buildr/java.rb CHANGED
@@ -20,4 +20,5 @@ require 'buildr/java/tests'
20
20
  require 'buildr/java/bdd'
21
21
  require 'buildr/java/packaging'
22
22
  require 'buildr/java/commands'
23
+ require 'buildr/java/doc'
23
24
  require 'buildr/java/deprecated'
@@ -25,8 +25,8 @@ module Buildr
25
25
  module Ant
26
26
 
27
27
  # Which version of Ant we're using by default.
28
- VERSION = '1.7.1'
29
-
28
+ VERSION = '1.8.0'
29
+
30
30
  class << self
31
31
  # Current version of Ant being used.
32
32
  def version
@@ -40,14 +40,14 @@ module Buildr
40
40
  @dependencies ||= ["org.apache.ant:ant:jar:#{version}", "org.apache.ant:ant-launcher:jar:#{version}",
41
41
  "org.apache.ant:ant-trax:jar:#{version}"]
42
42
  end
43
-
43
+
44
44
  private
45
45
  def const_missing(const)
46
46
  return super unless const == :REQUIRES # TODO: remove in 1.5
47
47
  Buildr.application.deprecated "Please use Ant.dependencies/.version instead of Ant::REQUIRES/VERSION"
48
48
  dependencies
49
49
  end
50
- end
50
+ end
51
51
 
52
52
 
53
53
  Java.classpath << lambda { Ant.dependencies }
@@ -31,7 +31,7 @@ module Buildr
31
31
  def initialize(task, options)
32
32
  self.bdd_dir = self.class.bdd_dir
33
33
  project = task.project
34
- project.task('test:compile').tap do |comp|
34
+ project.task('test:compile').tap do |comp|
35
35
  comp.send :associate_with, project, bdd_dir
36
36
  self.lang = comp.language || self.class.lang
37
37
  end
@@ -42,13 +42,13 @@ module Buildr
42
42
  end
43
43
  super
44
44
  end
45
-
45
+
46
46
  end
47
47
 
48
48
  module TestFramework::JRubyBased
49
49
  extend self
50
50
 
51
- VERSION = '1.3.1'
51
+ VERSION = '1.5.1'
52
52
 
53
53
  class << self
54
54
  def version
@@ -58,9 +58,12 @@ module Buildr
58
58
  def jruby_artifact
59
59
  "org.jruby:jruby-complete:jar:#{version}"
60
60
  end
61
-
61
+
62
62
  def dependencies
63
- [jruby_artifact]
63
+ unless @dependencies
64
+ @dependencies = [jruby_artifact]
65
+ end
66
+ @dependencies
64
67
  end
65
68
 
66
69
  def included(mod)
@@ -71,18 +74,20 @@ module Buildr
71
74
 
72
75
  module ClassMethods
73
76
  def dependencies
74
- deps = super
75
- unless RUBY_PLATFORM[/java/] && TestFramework::JRubyBased.jruby_installed?
76
- deps |= TestFramework::JRubyBased.dependencies
77
+ unless @dependencies
78
+ super
79
+ unless RUBY_PLATFORM[/java/] && TestFramework::JRubyBased.jruby_installed?
80
+ @dependencies |= TestFramework::JRubyBased.dependencies
81
+ end
77
82
  end
78
- deps
83
+ @dependencies
79
84
  end
80
85
  end
81
86
 
82
87
  def run(tests, dependencies)
83
88
  maybe_install_jruby
84
89
  dependencies |= [task.compile.target.to_s]
85
-
90
+
86
91
  spec_dir = task.project.path_to(:source, :spec, :ruby)
87
92
  report_dir = task.report_to.to_s
88
93
  rm_rf report_dir
@@ -91,7 +96,7 @@ module Buildr
91
96
 
92
97
  runner = runner_config
93
98
  runner.content = runner_content(binding)
94
-
99
+
95
100
  Buildr.write(runner.file, runner.content)
96
101
  rm_f runner.result
97
102
 
@@ -104,7 +109,7 @@ module Buildr
104
109
  cmd_options.update(:classpath => dependencies, :project => task.project)
105
110
  jruby runner.file, tests, cmd_options
106
111
  end
107
-
112
+
108
113
  result = YAML.load(File.read(runner.result))
109
114
  if Exception === result
110
115
  raise [result.message, result.backtrace].flatten.join("\n")
@@ -113,14 +118,14 @@ module Buildr
113
118
  end
114
119
 
115
120
  def jruby_home
116
- @jruby_home ||= RUBY_PLATFORM =~ /java/ ? Config::CONFIG['prefix'] :
121
+ @jruby_home ||= RUBY_PLATFORM =~ /java/ ? Config::CONFIG['prefix'] :
117
122
  ( ENV['JRUBY_HOME'] || File.expand_path('~/.jruby') )
118
123
  end
119
124
 
120
125
  def jruby_installed?
121
126
  !Dir.glob(File.join(jruby_home, 'lib', 'jruby*.jar')).empty?
122
127
  end
123
-
128
+
124
129
  protected
125
130
  def maybe_install_jruby
126
131
  unless jruby_installed?
@@ -129,15 +134,7 @@ module Buildr
129
134
  say msg
130
135
  say ''
131
136
  say "You need to install JRuby version #{jruby_artifact.version} using your system package manager."
132
- say 'Or you can just execute the following command: '
133
- say ''
134
- say " java -jar #{jruby_artifact} -S extract '#{jruby_home}'"
135
- say ''
136
- if agree('Do you want me to execute it for you? [y/N]', false)
137
- jruby_artifact.invoke
138
- Java::Commands.java('-jar', jruby_artifact.to_s, '-S', 'extract', jruby_home)
139
- end
140
-
137
+
141
138
  fail msg unless jruby_installed?
142
139
  end
143
140
  end
@@ -164,7 +161,7 @@ module Buildr
164
161
  yield config if block_given?
165
162
  Java.org.jruby.Ruby.newInstance config
166
163
  end
167
-
164
+
168
165
  def jruby_gem
169
166
  %{
170
167
  require 'jruby'
@@ -201,14 +198,10 @@ module Buildr
201
198
  runner.gems ||= {}
202
199
  runner.rspec ||= ['--format', 'progress', '--format', "html:#{runner.html_report}"]
203
200
  runner.format.each { |format| runner.rspec << '--format' << format } if runner.format
204
- runner.rspec.push '--format', "#{runner_formatter}:#{runner.result}"
201
+ runner.rspec.push '--format', "Buildr::TestFramework::TestResult::YamlFormatter:#{runner.result}"
205
202
  runner
206
203
  end
207
-
208
- def runner_formatter
209
- "Buildr::TestFramework::TestResult::YamlFormatter"
210
- end
211
-
204
+
212
205
  end
213
206
 
214
207
  # <a href="http://rspec.info">RSpec</a> is the defacto BDD framework for ruby.
@@ -222,7 +215,7 @@ module Buildr
222
215
  # * :requires -- A list of ruby files to require before running the specs
223
216
  # Mainly used if an rspec format needs to require some file.
224
217
  # * :format -- A list of valid Rspec --format option values. (defaults to 'progress')
225
- # * :output -- File path to output dump. @false@ to supress output
218
+ # * :output -- File path to output dump. @false@ to suppress output
226
219
  # * :fork -- Create a new JavaVM to run the tests on
227
220
  # * :properties -- Hash of properties passed to the test suite.
228
221
  # * :java_args -- Arguments passed to the JVM.
@@ -231,7 +224,7 @@ module Buildr
231
224
  @bdd_dir = :spec
232
225
 
233
226
  include TestFramework::JRubyBased
234
-
227
+
235
228
  TESTS_PATTERN = [ /_spec.rb$/ ]
236
229
  OPTIONS = [:properties, :java_args]
237
230
 
@@ -240,7 +233,7 @@ module Buildr
240
233
  end
241
234
 
242
235
  def tests(dependencies) #:nodoc:
243
- Dir[task.project.path_to(:source, bdd_dir, lang, '**/*_spec.rb')].select do |name|
236
+ Dir[task.project.path_to(:source, bdd_dir, lang, '**/*_spec.rb')].select do |name|
244
237
  selector = ENV['SPEC']
245
238
  selector.nil? || Regexp.new(selector) === name
246
239
  end
@@ -271,7 +264,7 @@ module Buildr
271
264
  argv.push *<%= tests.inspect %>
272
265
  parser.order!(argv)
273
266
  $rspec_options = parser.options
274
-
267
+
275
268
  Buildr::TestFramework::TestResult::Error.guard('<%= runner.result %>') do
276
269
  ::Spec::Runner::CommandLine.run($rspec_options)
277
270
  end
@@ -300,12 +293,12 @@ module Buildr
300
293
  # * :java_args -- Arguments passed to the JVM.
301
294
  class JtestR < TestFramework::JavaBDD
302
295
  @lang = :ruby
303
- @bdd_dir = :spec
296
+ @bdd_dir = :spec
304
297
 
305
298
  include TestFramework::JRubyBased
306
299
 
307
- VERSION = '0.3.1'
308
-
300
+ VERSION = '0.5'
301
+
309
302
  # pattern for rspec stories
310
303
  STORY_PATTERN = /_(steps|story)\.rb$/
311
304
  # pattern for test_unit files
@@ -322,10 +315,14 @@ module Buildr
322
315
  end
323
316
 
324
317
  def dependencies
325
- @dependencies ||= Array(super) + ["org.jtestr:jtestr:jar:#{version}"] +
326
- JUnit.dependencies + TestNG.dependencies
318
+ unless @dependencies
319
+ super
320
+ @dependencies |= ["org.jtestr:jtestr:jar:#{version}"] +
321
+ JUnit.dependencies + TestNG.dependencies
322
+ end
323
+ @dependencies
327
324
  end
328
-
325
+
329
326
  def applies_to?(project) #:nodoc:
330
327
  File.exist?(project.path_to(:source, bdd_dir, lang, 'jtestr_config.rb')) ||
331
328
  Dir[project.path_to(:source, bdd_dir, lang, '**/*.rb')].any? { |f| TESTS_PATTERN.any? { |r| r === f } } ||
@@ -372,7 +369,7 @@ module Buildr
372
369
 
373
370
  def runner_config
374
371
  runner = super
375
- # JtestR 0.3.1 comes with rspec 1.1.4 (and any other jtestr dependency) included,
372
+ # JtestR 0.3.1 comes with rspec 1.1.4 (and any other jtestr dependency) included,
376
373
  # so the rspec version used depends on the jtestr jar.
377
374
  runner.requires.unshift 'jtestr'
378
375
  runner
@@ -382,20 +379,16 @@ module Buildr
382
379
  runner_erb = File.join(File.dirname(__FILE__), 'jtestr_runner.rb.erb')
383
380
  Filter::Mapper.new(:erb, binding).transform(File.read(runner_erb), runner_erb)
384
381
  end
385
-
386
- def runner_formatter
387
- 'Buildr::TestFramework::TestResult::JtestRYamlFormatter'
388
- end
389
-
382
+
390
383
  end
391
384
 
392
-
385
+
393
386
  # JBehave is a Java BDD framework. To use in your project:
394
387
  # test.using :jbehave
395
- #
388
+ #
396
389
  # This framework will search in your project for:
397
390
  # src/spec/java/**/*Behaviour.java
398
- #
391
+ #
399
392
  # JMock libraries are included on runtime.
400
393
  #
401
394
  # Support the following options:
@@ -407,15 +400,19 @@ module Buildr
407
400
 
408
401
  VERSION = '1.0.1'
409
402
  TESTS_PATTERN = [ /Behaviou?r$/ ] #:nodoc:
410
-
403
+
411
404
  class << self
412
405
  def version
413
406
  Buildr.settings.build['jbehave'] || VERSION
414
407
  end
415
408
 
416
409
  def dependencies
417
- @dependencies ||= ["org.jbehave:jbehave:jar:#{version}", 'cglib:cglib-full:jar:2.0.2'] +
418
- JMock.dependencies + JUnit.dependencies
410
+ unless @dependencies
411
+ super
412
+ @dependencies |= ["org.jbehave:jbehave:jar:#{version}", 'cglib:cglib-full:jar:2.0.2'] +
413
+ JMock.dependencies + JUnit.dependencies
414
+ end
415
+ @dependencies
419
416
  end
420
417
 
421
418
  def applies_to?(project) #:nodoc:
@@ -436,7 +433,7 @@ module Buildr
436
433
  filter_classes(dependencies, :class_names => TESTS_PATTERN,
437
434
  :interfaces => %w{ org.jbehave.core.behaviour.Behaviours })
438
435
  end
439
-
436
+
440
437
  def run(tests, dependencies) #:nodoc:
441
438
  cmd_args = ['org.jbehave.core.BehaviourRunner']
442
439
  cmd_options = { :properties=>options[:properties], :java_args=>options[:java_args], :classpath=>dependencies }
@@ -449,7 +446,7 @@ module Buildr
449
446
  end
450
447
  end
451
448
  end
452
-
449
+
453
450
  end
454
451
 
455
452
  end
@@ -22,16 +22,16 @@ module Buildr
22
22
  # Provides the <code>cobertura:html</code>, <code>cobertura:xml</code> and <code>cobertura:check</code> tasks.
23
23
  # Require explicitly using <code>require "buildr/cobertura"</code>.
24
24
  #
25
- # You can generate cobertura reports for a single project
25
+ # You can generate cobertura reports for a single project
26
26
  # using the project name as prefix:
27
27
  #
28
28
  # project_name:cobertura:html
29
29
  #
30
- # You can also specify which classes to include/exclude from instrumentation by
31
- # passing a class name regexp to the <code>cobertura.include</code> or
32
- # <code>cobertura.exclude</code> methods.
33
- #
34
- # define 'someModule' do
30
+ # You can also specify which classes to include/exclude from instrumentation by
31
+ # passing a class name regexp to the <code>cobertura.include</code> or
32
+ # <code>cobertura.exclude</code> methods.
33
+ #
34
+ # define 'someModule' do
35
35
  # cobertura.include 'some.package.*'
36
36
  # cobertura.include /some.(foo|bar).*/
37
37
  # cobertura.exclude 'some.foo.util.SimpleUtil'
@@ -40,17 +40,29 @@ module Buildr
40
40
  #
41
41
  module Cobertura
42
42
 
43
- VERSION = '1.9'
43
+ VERSION = '1.9.4.1'
44
44
 
45
45
  class << self
46
-
47
46
  def version
48
47
  Buildr.settings.build['cobertura'] || VERSION
49
48
  end
49
+ end
50
+
51
+ REQUIRES = ArtifactNamespace.for(self).tap do |ns|
52
+ ns.cobertura! "net.sourceforge.cobertura:cobertura:jar:#{version}", '>=1.9'
53
+ ns.log4j! 'log4j:log4j:jar:1.2.9', ">=1.2.9"
54
+ ns.asm! 'asm:asm:jar:2.2.1', '>=2.2.1'
55
+ ns.asm_tree! 'asm:asm-tree:jar:2.2.1', '>=2.2.1'
56
+ ns.oro! 'oro:oro:jar:2.0.8', '>=2.0.8'
57
+ end
50
58
 
59
+ class << self
51
60
  def dependencies
52
- @dependencies ||= [ "net.sourceforge.cobertura:cobertura:jar:#{version}", "log4j:log4j:jar:1.2.9",
53
- "asm:asm:jar:2.2.1", "asm:asm-tree:jar:2.2.1", "oro:oro:jar:2.0.8"]
61
+ if (VersionRequirement.create('>=1.9.1').satisfied_by?(REQUIRES.cobertura.version))
62
+ [:asm, :asm_tree].each { |s| REQUIRES[s] = '3.0' unless REQUIRES[s].selected? }
63
+ end
64
+
65
+ REQUIRES.artifacts
54
66
  end
55
67
 
56
68
  def report_to(file = nil)
@@ -62,18 +74,18 @@ module Buildr
62
74
  end
63
75
 
64
76
  end
65
-
77
+
66
78
  class CoberturaConfig # :nodoc:
67
-
79
+
68
80
  def initialize(project)
69
81
  @project = project
70
82
  end
71
-
83
+
72
84
  attr_reader :project
73
85
  private :project
74
-
86
+
75
87
  attr_writer :data_file, :instrumented_dir, :report_dir
76
-
88
+
77
89
  def data_file
78
90
  @data_file ||= project.path_to(:reports, 'cobertura.ser')
79
91
  end
@@ -97,7 +109,7 @@ module Buildr
97
109
  includes.push(*classPatterns.map { |p| String === p ? Regexp.new(p) : p })
98
110
  self
99
111
  end
100
-
112
+
101
113
  def includes
102
114
  @includeClasses ||= []
103
115
  end
@@ -114,15 +126,23 @@ module Buildr
114
126
  @excludeClasses ||= []
115
127
  end
116
128
 
129
+ def ignore(*regexps)
130
+ ignores.push(*regexps)
131
+ end
132
+
133
+ def ignores
134
+ @ignores ||= []
135
+ end
136
+
117
137
  def sources
118
138
  project.compile.sources
119
139
  end
120
-
140
+
121
141
  def check
122
142
  @check ||= CoberturaCheck.new
123
143
  end
124
144
  end
125
-
145
+
126
146
  class CoberturaCheck
127
147
  attr_writer :branch_rate, :line_rate, :total_branch_rate, :total_line_rate, :package_line_rate, :package_branch_rate
128
148
  attr_reader :branch_rate, :line_rate, :total_branch_rate, :total_line_rate, :package_line_rate, :package_branch_rate
@@ -137,7 +157,7 @@ module Buildr
137
157
 
138
158
  after_define do |project|
139
159
  cobertura = project.cobertura
140
-
160
+
141
161
  namespace 'cobertura' do
142
162
  unless project.compile.target.nil?
143
163
  # Instrumented bytecode goes in a different directory. This task creates before running the test
@@ -151,10 +171,10 @@ module Buildr
151
171
  :classpath=>Buildr.artifacts(Cobertura.dependencies).each(&:invoke).map(&:to_s).join(File::PATH_SEPARATOR)
152
172
  ant.send "cobertura-instrument", :todir=>task.to_s, :datafile=>cobertura.data_file do
153
173
  includes, excludes = cobertura.includes, cobertura.excludes
154
-
174
+
155
175
  classes_dir = project.compile.target.to_s
156
- if includes.empty? && excludes.empty?
157
- ant.fileset :dir => classes_dir do
176
+ if includes.empty? && excludes.empty?
177
+ ant.fileset :dir => classes_dir do
158
178
  ant.include :name => "**/*.class"
159
179
  end
160
180
  else
@@ -166,29 +186,31 @@ module Buildr
166
186
  end
167
187
  end
168
188
  end
189
+
190
+ cobertura.ignores.each { |r| ant.ignore :regex => r }
169
191
  end
170
192
  end
171
193
  end
172
194
  touch task.to_s
173
195
  end
174
-
196
+
175
197
  task 'instrument' => instrumented
176
-
198
+
177
199
  # We now have two target directories with bytecode. It would make sense to remove compile.target
178
200
  # and add instrumented instead, but apparently Cobertura only creates some of the classes, so
179
201
  # we need both directories and instrumented must come first.
180
202
  project.test.dependencies.unshift cobertura.instrumented_dir
181
203
  project.test.with Cobertura.dependencies
182
204
  project.test.options[:properties]["net.sourceforge.cobertura.datafile"] = cobertura.data_file
183
-
205
+
184
206
  unless project.compile.sources.empty?
185
207
  [:xml, :html].each do |format|
186
- task format => ['instrument', 'test'] do
208
+ task format => ['instrument', 'test'] do
187
209
  info "Creating test coverage reports in #{cobertura.report_to(format)}"
188
210
  Buildr.ant "cobertura" do |ant|
189
211
  ant.taskdef :resource=>"tasks.properties",
190
212
  :classpath=>Buildr.artifacts(Cobertura.dependencies).each(&:invoke).map(&:to_s).join(File::PATH_SEPARATOR)
191
- ant.send "cobertura-report", :format=>format,
213
+ ant.send "cobertura-report", :format=>format,
192
214
  :destdir=>cobertura.report_to(format), :datafile=>cobertura.data_file do
193
215
  cobertura.sources.flatten.each do |src|
194
216
  ant.fileset(:dir=>src.to_s) if File.exist?(src.to_s)
@@ -202,9 +224,9 @@ module Buildr
202
224
  task :check => [:instrument, :test] do
203
225
  Buildr.ant "cobertura" do |ant|
204
226
  ant.taskdef :classpath=>Cobertura.requires.join(File::PATH_SEPARATOR), :resource=>"tasks.properties"
205
-
227
+
206
228
  params = { :datafile => Cobertura.data_file }
207
-
229
+
208
230
  # oh so ugly...
209
231
  params[:branchrate] = cobertura.check.branch_rate if cobertura.check.branch_rate
210
232
  params[:linerate] = cobertura.check.line_rate if cobertura.check.line_rate
@@ -212,21 +234,21 @@ module Buildr
212
234
  params[:totallinerate] = cobertura.check.total_line_rate if cobertura.check.total_line_rate
213
235
  params[:packagebranchrate] = cobertura.check.package_branch_rate if cobertura.check.package_branch_rate
214
236
  params[:packagelinerate] = cobertura.check.package_line_rate if cobertura.check.package_line_rate
215
-
237
+
216
238
  ant.send("cobertura-check", params) do
217
239
  end
218
240
  end
219
241
  end
220
-
242
+
221
243
  end
222
244
  end
223
245
 
224
246
  project.clean do
225
247
  rm_rf [cobertura.report_to, cobertura.data_file, cobertura.instrumented_dir]
226
248
  end
227
-
249
+
228
250
  end
229
-
251
+
230
252
  end
231
253
 
232
254
  class Buildr::Project
@@ -243,7 +265,7 @@ module Buildr
243
265
  task(instrument_task).invoke if Rake::Task.task_defined?(instrument_task)
244
266
  end
245
267
  end
246
-
268
+
247
269
  [:xml, :html].each do |format|
248
270
  report_target = report_to(format)
249
271
  desc "Run the test cases and produce code coverage reports in #{report_target}"
@@ -260,7 +282,7 @@ module Buildr
260
282
  end
261
283
  end
262
284
  end
263
-
285
+
264
286
  task "clean" do
265
287
  rm_rf [report_to, data_file]
266
288
  end