buildr 1.3.5 → 1.4.0

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/core/application.rb +33 -27
  37. data/lib/buildr/core/build.rb +41 -28
  38. data/lib/buildr/core/cc.rb +172 -0
  39. data/lib/buildr/core/checks.rb +1 -1
  40. data/lib/buildr/core/common.rb +7 -6
  41. data/lib/buildr/core/compile.rb +7 -8
  42. data/lib/buildr/core/doc.rb +263 -0
  43. data/lib/buildr/core/environment.rb +6 -6
  44. data/lib/buildr/core/filter.rb +77 -35
  45. data/lib/buildr/core/generate.rb +7 -7
  46. data/lib/buildr/core/help.rb +1 -1
  47. data/lib/buildr/core/osx.rb +6 -6
  48. data/lib/buildr/core/progressbar.rb +4 -4
  49. data/lib/buildr/core/project.rb +144 -36
  50. data/lib/buildr/core/shell.rb +34 -34
  51. data/lib/buildr/core/test.rb +89 -20
  52. data/lib/buildr/core/transports.rb +8 -7
  53. data/lib/buildr/core/util.rb +77 -23
  54. data/lib/buildr/core.rb +1 -0
  55. data/lib/buildr/groovy/bdd.rb +5 -5
  56. data/lib/buildr/groovy/compiler.rb +19 -15
  57. data/lib/buildr/groovy/shell.rb +6 -6
  58. data/lib/buildr/ide/eclipse/java.rb +3 -3
  59. data/lib/buildr/ide/eclipse/plugin.rb +8 -5
  60. data/lib/buildr/ide/eclipse/scala.rb +4 -2
  61. data/lib/buildr/ide/eclipse.rb +148 -75
  62. data/lib/buildr/ide/idea.rb +2 -2
  63. data/lib/buildr/ide/idea7x.rb +23 -4
  64. data/lib/buildr/java/ant.rb +4 -4
  65. data/lib/buildr/java/bdd.rb +51 -54
  66. data/lib/buildr/java/cobertura.rb +57 -35
  67. data/lib/buildr/java/commands.rb +14 -5
  68. data/lib/buildr/java/compiler.rb +3 -217
  69. data/lib/buildr/java/deprecated.rb +4 -4
  70. data/lib/buildr/java/doc.rb +70 -0
  71. data/lib/buildr/java/emma.rb +22 -22
  72. data/lib/buildr/java/jruby.rb +4 -4
  73. data/lib/buildr/java/jtestr_runner.rb.erb +27 -25
  74. data/lib/buildr/java/org/apache/buildr/JavaTestFilter.class +0 -0
  75. data/lib/buildr/java/org/apache/buildr/JavaTestFilter.java +8 -3
  76. data/lib/buildr/java/packaging.rb +30 -29
  77. data/lib/buildr/java/pom.rb +4 -4
  78. data/lib/buildr/java/rjb.rb +6 -6
  79. data/lib/buildr/java/test_result.rb +61 -85
  80. data/lib/buildr/java/tests.rb +44 -27
  81. data/lib/buildr/java/version_requirement.rb +8 -8
  82. data/lib/buildr/java.rb +1 -0
  83. data/lib/buildr/packaging/archive.rb +55 -22
  84. data/lib/buildr/packaging/artifact.rb +75 -36
  85. data/lib/buildr/packaging/artifact_namespace.rb +90 -78
  86. data/lib/buildr/packaging/artifact_search.rb +5 -5
  87. data/lib/buildr/packaging/gems.rb +11 -7
  88. data/lib/buildr/packaging/package.rb +10 -7
  89. data/lib/buildr/packaging/tar.rb +14 -14
  90. data/lib/buildr/packaging/version_requirement.rb +30 -10
  91. data/lib/buildr/packaging/ziptask.rb +51 -13
  92. data/lib/buildr/scala/bdd.rb +25 -20
  93. data/lib/buildr/scala/compiler.rb +87 -40
  94. data/lib/buildr/scala/doc.rb +106 -0
  95. data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.class +0 -0
  96. data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.java +57 -0
  97. data/lib/buildr/scala/shell.rb +14 -9
  98. data/lib/buildr/scala/tests.rb +33 -26
  99. data/lib/buildr/scala.rb +1 -0
  100. data/lib/buildr/shell.rb +33 -33
  101. data/lib/buildr.rb +1 -1
  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
@@ -15,7 +15,6 @@
15
15
 
16
16
 
17
17
  require File.join(File.dirname(__FILE__), '../spec_helpers')
18
- require 'buildr/scala'
19
18
 
20
19
  # TODO's
21
20
  # -test passing System props
@@ -26,6 +25,12 @@ require 'buildr/scala'
26
25
 
27
26
 
28
27
  describe Buildr::Scala::ScalaTest do
28
+
29
+ before(:each) do
30
+ # Force Scala 2.7.7 for specs; don't want to rely on SCALA_HOME
31
+ Buildr.settings.build['scala.version'] = "2.7.7"
32
+ end
33
+
29
34
  it 'should be the default test framework when test cases are in Scala' do
30
35
  write 'src/test/scala/com/example/MySuite.scala', <<-SCALA
31
36
  package com.example
@@ -113,7 +118,7 @@ describe Buildr::Scala::ScalaTest do
113
118
  val sum = 1 + 1
114
119
  assert(sum === 2)
115
120
  }
116
-
121
+
117
122
  class InnerSuite extends FunSuite {
118
123
  test("addition") {
119
124
  val sum = 1 + 1
@@ -161,6 +166,21 @@ describe Buildr::Scala::ScalaTest do
161
166
  project('foo').test.failed_tests.should include('FailingSuite')
162
167
  end
163
168
 
169
+ it 'should report to reports/scalatest/TEST-TestSuiteName.xml' do
170
+ write 'src/test/scala/PassingSuite.scala', <<-SCALA
171
+ class PassingSuite extends org.scalatest.FunSuite {
172
+ test("passing") {
173
+ assert(true)
174
+ }
175
+ }
176
+ SCALA
177
+ define 'foo' do
178
+ test.report_to.should be(file('reports/scalatest'))
179
+ end
180
+ project('foo').test.invoke
181
+ project('foo').file('reports/scalatest/TEST-PassingSuite.xml').should exist
182
+ end
183
+
164
184
  it 'should report to reports/scalatest/TEST-TestSuiteName.txt' do
165
185
  write 'src/test/scala/PassingSuite.scala', <<-SCALA
166
186
  class PassingSuite extends org.scalatest.FunSuite {
@@ -180,15 +200,16 @@ describe Buildr::Scala::ScalaTest do
180
200
  write 'src/test/scala/PropertyTestSuite.scala', <<-SCALA
181
201
  import org.scalatest._
182
202
  class PropertyTestSuite extends FunSuite {
183
- var properties = Map[String, Any]()
203
+ var configMap = Map[String, Any]()
184
204
  test("testProperty") {
185
- assert(properties("name") === "value")
205
+ assert(configMap("name") === "value")
186
206
  }
187
-
207
+
188
208
  protected override def runTests(testName: Option[String], reporter: Reporter, stopper: Stopper,
189
- includes: Set[String], excludes: Set[String], properties: Map[String, Any]) {
190
- this.properties = properties;
191
- super.runTests(testName, reporter, stopper, includes, excludes, properties)
209
+ filter: Filter, configMap: Map[String, Any],
210
+ distributor: Option[Distributor], tracker: Tracker) {
211
+ this.configMap = configMap
212
+ super.runTests(testName, reporter, stopper, filter, configMap, distributor, tracker)
192
213
  }
193
214
  }
194
215
  SCALA
@@ -198,54 +219,55 @@ describe Buildr::Scala::ScalaTest do
198
219
 
199
220
  it 'should run with ScalaCheck automatic test case generation' do
200
221
  write 'src/test/scala/MySuite.scala', <<-SCALA
201
- import org.scalatest.prop.PropSuite
222
+ import org.scalatest.FunSuite
223
+ import org.scalatest.prop.Checkers
202
224
  import org.scalacheck.Arbitrary._
203
225
  import org.scalacheck.Prop._
204
-
205
- class MySuite extends PropSuite {
206
-
226
+
227
+ class MySuite extends FunSuite with Checkers {
228
+
207
229
  test("list concatenation") {
208
230
  val x = List(1, 2, 3)
209
231
  val y = List(4, 5, 6)
210
232
  assert(x ::: y === List(1, 2, 3, 4, 5, 6))
211
233
  check((a: List[Int], b: List[Int]) => a.size + b.size == (a ::: b).size)
212
234
  }
213
-
214
- test(
215
- "list concatenation using a test method",
216
- (a: List[Int], b: List[Int]) => a.size + b.size == (a ::: b).size
217
- )
235
+
236
+ test("list concatenation using a test method") {
237
+ check((a: List[Int], b: List[Int]) => a.size + b.size == (a ::: b).size)
238
+ }
218
239
  }
219
240
  SCALA
220
241
  define('foo')
221
242
  project('foo').test.invoke
222
243
  project('foo').test.passed_tests.should include('MySuite')
223
244
  end
224
-
245
+
225
246
  it 'should fail if ScalaCheck test case fails' do
226
247
  write 'src/test/scala/StringSuite.scala', <<-SCALA
227
- import org.scalatest.prop.PropSuite
248
+ import org.scalatest.FunSuite
249
+ import org.scalatest.prop.Checkers
228
250
  import org.scalacheck.Arbitrary._
229
251
  import org.scalacheck.Prop._
230
252
 
231
- class StringSuite extends PropSuite {
253
+ class StringSuite extends FunSuite with Checkers {
232
254
  test("startsWith") {
233
255
  check( (a: String, b: String) => (a+b).startsWith(a) )
234
256
  }
235
-
257
+
236
258
  test("endsWith") {
237
259
  check( (a: String, b: String) => (a+b).endsWith(b) )
238
260
  }
239
-
261
+
240
262
  // Is this really always true?
241
263
  test("concat") {
242
264
  check( (a: String, b: String) => (a+b).length > a.length && (a+b).length > b.length )
243
265
  }
244
-
266
+
245
267
  test("substring2") {
246
268
  check( (a: String, b: String) => (a+b).substring(a.length) == b )
247
269
  }
248
-
270
+
249
271
  test("substring3") {
250
272
  check( (a: String, b: String, c: String) =>
251
273
  (a+b+c).substring(a.length, a.length+b.length) == b )
data/spec/spec_helpers.rb CHANGED
@@ -22,8 +22,9 @@ unless defined?(SpecHelpers)
22
22
 
23
23
  # For testing we use the gem requirements specified on the buildr.gemspec
24
24
  spec = Gem::Specification.load(File.expand_path('../buildr.gemspec', File.dirname(__FILE__)))
25
- spec.dependencies.each { |dep| gem dep.name, dep.version_requirements.to_s }
26
-
25
+ # Dependency.version_requirements deprecated in rubygems 1.3.6
26
+ spec.dependencies.each { |dep| gem dep.name, (dep.respond_to?(:requirement) ? dep.requirement.to_s : dep.version_requirements.to_s) }
27
+
27
28
  # Make sure to load from these paths first, we don't want to load any
28
29
  # code from Gem library.
29
30
  $LOAD_PATH.unshift File.expand_path('../lib', File.dirname(__FILE__)),
@@ -40,7 +41,7 @@ unless defined?(SpecHelpers)
40
41
 
41
42
  # Give a chance for plugins to do a few things before requiring the sandbox.
42
43
  include SandboxHook if defined?(SandboxHook)
43
-
44
+
44
45
  require File.expand_path('sandbox', File.dirname(__FILE__))
45
46
 
46
47
  module SpecHelpers
@@ -56,7 +57,7 @@ unless defined?(SpecHelpers)
56
57
  end
57
58
  end
58
59
  end
59
-
60
+
60
61
  class << Buildr.application
61
62
  alias :deprecated_without_capture :deprecated
62
63
  def deprecated(message)
@@ -118,6 +119,23 @@ unless defined?(SpecHelpers)
118
119
  MessageWithSeverityMatcher.new :puts, message
119
120
  end
120
121
 
122
+ # Yields a block that should try exiting the application.
123
+ # Accepts
124
+ #
125
+ # For example:
126
+ # test_exit(1) { puts "Hello" ; exit(1) }.should show("Hello")
127
+ #
128
+ def test_exit(status = nil)
129
+ return lambda {
130
+ begin
131
+ yield
132
+ raise "Exit was not called!"
133
+ rescue SystemExit => e
134
+ raise "Exit status incorrect! Expected: #{status}, got #{e.status}" if status && (e.status != status)
135
+ end
136
+ }
137
+ end
138
+
121
139
  class ::Rake::Task
122
140
  alias :execute_without_a_record :execute
123
141
  def execute(args)
@@ -151,7 +169,7 @@ unless defined?(SpecHelpers)
151
169
  "Expected the tasks #{expected} to not run, but they all ran."
152
170
  else
153
171
  "Expected the tasks #{expected} to not run, and all but #{remaining} ran."
154
- end
172
+ end
155
173
  end
156
174
 
157
175
  def but_not(*tasks)
@@ -226,7 +244,7 @@ unless defined?(SpecHelpers)
226
244
  "URI with path matching #{@expression}"
227
245
  end
228
246
  end
229
-
247
+
230
248
  # Matches a parsed URI's path against the given regular expression
231
249
  def uri(re)
232
250
  UriPathMatcher.new(re)
@@ -256,16 +274,16 @@ unless defined?(SpecHelpers)
256
274
  AbsolutePathMatcher.new(path)
257
275
  end
258
276
 
259
-
277
+
260
278
  # Value covered by range. For example:
261
279
  # (1..5).should cover(3)
262
280
  def cover(value)
263
281
  simple_matcher :cover do |given|
264
- value >= given.min && value <= given.max
282
+ value >= given.min && value <= given.max
265
283
  end
266
284
  end
267
285
 
268
-
286
+
269
287
  def suppress_stdout
270
288
  stdout = $stdout
271
289
  $stdout = StringIO.new
@@ -308,7 +326,7 @@ unless defined?(SpecHelpers)
308
326
  yield
309
327
  ensure
310
328
  Buildr.application.instance_eval { @original_dir = original_dir }
311
- end
329
+ end
312
330
  end
313
331
 
314
332
 
@@ -20,8 +20,8 @@ describe Buildr::VersionRequirement, '.create' do
20
20
  def create(str)
21
21
  Buildr::VersionRequirement.create(str)
22
22
  end
23
-
24
- it 'should complain on invalid input' do
23
+
24
+ it 'should complain on invalid input' do
25
25
  lambda { create }.should raise_error(Exception)
26
26
  lambda { create('%') }.should raise_error(Exception, /invalid character/)
27
27
  lambda { create('1#{0}') }.should raise_error(Exception, /invalid character/)
@@ -30,16 +30,16 @@ describe Buildr::VersionRequirement, '.create' do
30
30
  lambda { create('1.0') }.should_not raise_error(Exception)
31
31
  lambda { create('1.0rc3') }.should_not raise_error(Exception)
32
32
  end
33
-
33
+
34
34
  it 'should allow versions using hyphen' do
35
35
  lambda { create('1.0-rc3') }.should_not raise_error(Exception)
36
36
  end
37
37
 
38
- it 'should create a single version requirement' do
38
+ it 'should create a single version requirement' do
39
39
  create('1.0').should_not be_composed
40
40
  end
41
41
 
42
- it 'should create a composed version requirement' do
42
+ it 'should create a composed version requirement' do
43
43
  create('1.0 | 2.1').should be_composed
44
44
  end
45
45
  end
@@ -61,13 +61,13 @@ describe Buildr::VersionRequirement, '#satisfied_by?' do
61
61
  should_satisfy '=1.0', %w(1 1.0), %w(1.1 0.1)
62
62
  should_satisfy '= 1.0', %w(1 1.0), %w(1.1 0.1)
63
63
  should_satisfy '!= 1.0', %w(0.9 1.1 2), %w(1 1.0 1.0.0)
64
-
64
+
65
65
  should_satisfy '>1.0', %w(1.0.1), %w(1 1.0 0.1)
66
66
  should_satisfy '>=1.0', %w(1.0.1 1 1.0), %w(0.9)
67
67
 
68
68
  should_satisfy '<1.0', %w(0.9 0.9.9), %w(1 1.0 1.1 2)
69
69
  should_satisfy '<=1.0', %w(0.9 0.9.9 1 1.0), %w(1.1 2)
70
-
70
+
71
71
  should_satisfy '~> 1.2.3', %w(1.2.3 1.2.3.4 1.2.4), %w(1.2.1 0.9 1.4 2)
72
72
  end
73
73
 
@@ -91,7 +91,7 @@ describe Buildr::VersionRequirement, '#satisfied_by?' do
91
91
  it 'should assume logic and if missing operator between expressions' do
92
92
  should_satisfy '>1.5 <2.0', %w(1.6 1.9), %w(1.5 2 2.0)
93
93
  end
94
-
94
+
95
95
  it 'should allow combining logic operators' do
96
96
  should_satisfy '>1.0 | <2.0 | =3.0', %w(1.5 3.0 1 2 4)
97
97
  should_satisfy '>1.0 & <2.0 | =3.0', %w(1.3 3.0), %w(1 2)
@@ -99,7 +99,7 @@ describe Buildr::VersionRequirement, '#satisfied_by?' do
99
99
  should_satisfy '~>1.1 | ~>1.3 | ~>1.5 | 2.0', %w(2 1.5.6 1.1.2 1.1.3), %w(1.0.9 0.5 2.2.1)
100
100
  should_satisfy 'not(2) | 1', %w(1 3), %w(2)
101
101
  end
102
-
102
+
103
103
  it 'should allow using parens to group logic expressions' do
104
104
  should_satisfy '(1.0)', %w(1 1.0), %w(0.9 1.1)
105
105
  should_satisfy '!( !(1.0) )', %w(1 1.0), %w(0.9 1.1)
@@ -110,13 +110,13 @@ end
110
110
  =end
111
111
 
112
112
  describe Buildr::VersionRequirement, '#default' do
113
- it 'should return nil if missing default requirement' do
113
+ it 'should return nil if missing default requirement' do
114
114
  Buildr::VersionRequirement.create('>1').default.should be_nil
115
115
  Buildr::VersionRequirement.create('<1').default.should be_nil
116
116
  Buildr::VersionRequirement.create('!1').default.should be_nil
117
117
  Buildr::VersionRequirement.create('!<=1').default.should be_nil
118
118
  end
119
-
119
+
120
120
  it 'should return the last version with a = requirement' do
121
121
  Buildr::VersionRequirement.create('1').default.should == '1'
122
122
  Buildr::VersionRequirement.create('=1').default.should == '1'
@@ -127,3 +127,17 @@ describe Buildr::VersionRequirement, '#default' do
127
127
  Buildr::VersionRequirement.create('1 & 2 | 3').default.should == '3'
128
128
  end
129
129
  end
130
+
131
+ describe Buildr::VersionRequirement, '#version?' do
132
+ it 'should identify valid versions' do
133
+ Buildr::VersionRequirement.version?('1').should be_true
134
+ Buildr::VersionRequirement.version?('1a').should be_true
135
+ Buildr::VersionRequirement.version?('1.0').should be_true
136
+ Buildr::VersionRequirement.version?('11.0').should be_true
137
+ Buildr::VersionRequirement.version?(' 11.0 ').should be_true
138
+ Buildr::VersionRequirement.version?('11.0-alpha').should be_true
139
+
140
+ Buildr::VersionRequirement.version?('a').should be_false
141
+ Buildr::VersionRequirement.version?('a1').should be_false
142
+ end
143
+ end