buildr 1.3.3-java → 1.3.4-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. data/CHANGELOG +76 -0
  2. data/NOTICE +1 -1
  3. data/README.rdoc +9 -21
  4. data/Rakefile +17 -34
  5. data/_buildr +3 -12
  6. data/{doc/print.toc.yaml → _jbuildr} +14 -14
  7. data/addon/buildr/cobertura.rb +5 -219
  8. data/addon/buildr/drb.rb +281 -0
  9. data/addon/buildr/emma.rb +5 -221
  10. data/addon/buildr/nailgun.rb +93 -689
  11. data/bin/buildr +0 -9
  12. data/buildr.buildfile +4 -4
  13. data/buildr.gemspec +27 -21
  14. data/doc/_layouts/default.html +82 -0
  15. data/doc/_layouts/preface.html +22 -0
  16. data/doc/{pages/artifacts.textile → artifacts.textile} +82 -42
  17. data/doc/{pages/building.textile → building.textile} +89 -47
  18. data/doc/{pages/contributing.textile → contributing.textile} +53 -45
  19. data/doc/css/default.css +6 -5
  20. data/doc/css/print.css +17 -24
  21. data/doc/css/syntax.css +7 -36
  22. data/doc/download.textile +68 -0
  23. data/doc/{pages/extending.textile → extending.textile} +45 -24
  24. data/doc/{pages/getting_started.textile → getting_started.textile} +158 -88
  25. data/doc/images/asf-logo.gif +0 -0
  26. data/doc/images/note.png +0 -0
  27. data/doc/index.textile +47 -0
  28. data/doc/{pages/languages.textile → languages.textile} +108 -54
  29. data/doc/mailing_lists.textile +25 -0
  30. data/doc/{pages/more_stuff.textile → more_stuff.textile} +152 -73
  31. data/doc/{pages/packaging.textile → packaging.textile} +181 -96
  32. data/doc/preface.textile +28 -0
  33. data/doc/{pages/projects.textile → projects.textile} +55 -40
  34. data/doc/scripts/buildr-git.rb +364 -264
  35. data/doc/scripts/gitflow.rb +296 -0
  36. data/doc/scripts/install-jruby.sh +2 -2
  37. data/doc/scripts/install-linux.sh +6 -6
  38. data/doc/scripts/install-osx.sh +2 -2
  39. data/doc/{pages/settings_profiles.textile → settings_profiles.textile} +83 -45
  40. data/doc/{pages/testing.textile → testing.textile} +77 -41
  41. data/lib/buildr.rb +5 -5
  42. data/lib/buildr/core.rb +2 -0
  43. data/lib/buildr/core/application.rb +321 -151
  44. data/lib/buildr/core/build.rb +298 -167
  45. data/lib/buildr/core/checks.rb +4 -132
  46. data/lib/buildr/core/common.rb +1 -5
  47. data/lib/buildr/core/compile.rb +3 -9
  48. data/lib/buildr/core/environment.rb +12 -3
  49. data/lib/buildr/core/filter.rb +20 -18
  50. data/lib/buildr/core/generate.rb +36 -36
  51. data/lib/buildr/core/help.rb +2 -1
  52. data/lib/buildr/core/osx.rb +46 -0
  53. data/lib/buildr/core/progressbar.rb +1 -1
  54. data/lib/buildr/core/project.rb +7 -34
  55. data/lib/buildr/core/test.rb +12 -6
  56. data/lib/buildr/core/transports.rb +13 -11
  57. data/lib/buildr/core/util.rb +14 -23
  58. data/lib/buildr/groovy/bdd.rb +3 -2
  59. data/lib/buildr/groovy/compiler.rb +1 -1
  60. data/lib/buildr/ide/eclipse.rb +31 -21
  61. data/lib/buildr/ide/idea.rb +3 -2
  62. data/lib/buildr/ide/idea7x.rb +6 -4
  63. data/lib/buildr/java/ant.rb +3 -1
  64. data/lib/buildr/java/bdd.rb +9 -7
  65. data/lib/buildr/java/cobertura.rb +243 -0
  66. data/lib/buildr/java/compiler.rb +5 -4
  67. data/lib/buildr/java/emma.rb +244 -0
  68. data/lib/buildr/java/packaging.rb +11 -8
  69. data/lib/buildr/java/pom.rb +0 -4
  70. data/lib/buildr/java/rjb.rb +1 -1
  71. data/lib/buildr/java/test_result.rb +5 -7
  72. data/lib/buildr/java/tests.rb +17 -11
  73. data/lib/buildr/packaging.rb +5 -2
  74. data/lib/buildr/packaging/archive.rb +488 -0
  75. data/lib/buildr/packaging/artifact.rb +48 -29
  76. data/lib/buildr/packaging/artifact_namespace.rb +6 -6
  77. data/lib/buildr/packaging/gems.rb +4 -4
  78. data/lib/buildr/packaging/package.rb +3 -2
  79. data/lib/buildr/packaging/tar.rb +85 -3
  80. data/lib/buildr/packaging/version_requirement.rb +172 -0
  81. data/lib/buildr/packaging/zip.rb +24 -682
  82. data/lib/buildr/packaging/ziptask.rb +313 -0
  83. data/lib/buildr/scala.rb +5 -0
  84. data/lib/buildr/scala/bdd.rb +100 -0
  85. data/lib/buildr/scala/compiler.rb +45 -4
  86. data/lib/buildr/scala/tests.rb +12 -59
  87. data/rakelib/checks.rake +57 -0
  88. data/rakelib/doc.rake +58 -68
  89. data/rakelib/jekylltask.rb +110 -0
  90. data/rakelib/package.rake +35 -37
  91. data/rakelib/release.rake +119 -35
  92. data/rakelib/rspec.rake +29 -39
  93. data/rakelib/setup.rake +21 -59
  94. data/rakelib/stage.rake +184 -26
  95. data/spec/addon/drb_spec.rb +328 -0
  96. data/spec/core/application_spec.rb +32 -25
  97. data/spec/core/build_spec.rb +336 -126
  98. data/spec/core/checks_spec.rb +292 -310
  99. data/spec/core/common_spec.rb +8 -2
  100. data/spec/core/compile_spec.rb +17 -1
  101. data/spec/core/generate_spec.rb +3 -3
  102. data/spec/core/project_spec.rb +18 -10
  103. data/spec/core/test_spec.rb +8 -1
  104. data/spec/core/transport_spec.rb +40 -3
  105. data/spec/core/util_spec.rb +67 -0
  106. data/spec/ide/eclipse_spec.rb +96 -28
  107. data/spec/ide/idea7x_spec.rb +84 -0
  108. data/spec/java/ant.rb +5 -0
  109. data/spec/java/bdd_spec.rb +12 -3
  110. data/spec/{addon → java}/cobertura_spec.rb +6 -6
  111. data/spec/{addon → java}/emma_spec.rb +5 -6
  112. data/spec/java/java_spec.rb +12 -2
  113. data/spec/java/packaging_spec.rb +31 -2
  114. data/spec/{addon → java}/test_coverage_spec.rb +3 -3
  115. data/spec/java/tests_spec.rb +5 -0
  116. data/spec/packaging/archive_spec.rb +11 -1
  117. data/spec/{core → packaging}/artifact_namespace_spec.rb +10 -2
  118. data/spec/packaging/artifact_spec.rb +44 -3
  119. data/spec/packaging/packaging_spec.rb +1 -1
  120. data/spec/sandbox.rb +17 -14
  121. data/spec/scala/bdd_spec.rb +150 -0
  122. data/spec/scala/compiler_spec.rb +27 -0
  123. data/spec/scala/scala.rb +38 -0
  124. data/spec/scala/tests_spec.rb +78 -33
  125. data/spec/spec_helpers.rb +29 -5
  126. data/spec/version_requirement_spec.rb +6 -0
  127. metadata +176 -172
  128. data/DISCLAIMER +0 -7
  129. data/doc/images/apache-incubator-logo.png +0 -0
  130. data/doc/pages/download.textile +0 -51
  131. data/doc/pages/index.textile +0 -42
  132. data/doc/pages/mailing_lists.textile +0 -17
  133. data/doc/pages/recipes.textile +0 -103
  134. data/doc/pages/troubleshooting.textile +0 -103
  135. data/doc/pages/whats_new.textile +0 -323
  136. data/doc/print.haml +0 -51
  137. data/doc/site.haml +0 -56
  138. data/doc/site.toc.yaml +0 -47
  139. data/etc/git-svn-authors +0 -16
  140. data/lib/buildr/core/application_cli.rb +0 -139
  141. data/rakelib/apache.rake +0 -191
  142. data/rakelib/changelog.rake +0 -57
  143. data/rakelib/rubyforge.rake +0 -53
  144. data/rakelib/scm.rake +0 -49
@@ -0,0 +1,150 @@
1
+ # Licensed to the Apache Software Foundation (ASF) under one or more
2
+ # contributor license agreements. See the NOTICE file distributed with this
3
+ # work for additional information regarding copyright ownership. The ASF
4
+ # licenses this file to you under the Apache License, Version 2.0 (the
5
+ # "License"); you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12
+ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13
+ # License for the specific language governing permissions and limitations under
14
+ # the License.
15
+
16
+
17
+ require File.join(File.dirname(__FILE__), '../spec_helpers')
18
+
19
+ describe Buildr::Scala::Specs do
20
+ it 'should be the default when tests in src/spec/scala' do
21
+ write 'src/spec/scala/com/example/MySpecs.scala', <<-SCALA
22
+ package com.example
23
+ object MySpecs extends org.specs.Specification {
24
+ "it" should {
25
+ "add" in {
26
+ val sum = 1 + 1
27
+ sum mustEqual 2
28
+ }
29
+ }
30
+ }
31
+ SCALA
32
+ define 'foo'
33
+ project('foo').test.framework.should eql(:specs)
34
+ end
35
+
36
+ it 'should include Specs dependencies' do
37
+ define('foo') { test.using(:specs) }
38
+ project('foo').test.compile.dependencies.should include(*artifacts(Scala::Specs.dependencies))
39
+ project('foo').test.dependencies.should include(*artifacts(Scala::Specs.dependencies))
40
+ end
41
+
42
+ it 'should include ScalaCheck dependencies' do
43
+ define('foo') { test.using(:specs) }
44
+ project('foo').test.compile.dependencies.should include(*artifacts(Scala::Check.dependencies))
45
+ project('foo').test.dependencies.should include(*artifacts(Scala::Check.dependencies))
46
+ end
47
+
48
+ it 'should include JMock dependencies' do
49
+ define('foo') { test.using(:scalatest) }
50
+ project('foo').test.compile.dependencies.should include(*artifacts(JMock.dependencies))
51
+ project('foo').test.dependencies.should include(*artifacts(JMock.dependencies))
52
+ end
53
+
54
+ it 'should include public classes extending org.specs.Specification' do
55
+ write 'src/spec/scala/com/example/MySpecs.scala', <<-SCALA
56
+ package com.example
57
+ object MySpecs extends org.specs.Specification {
58
+ "it" should {
59
+ "add" in {
60
+ val sum = 1 + 1
61
+ sum mustEqual 2
62
+ }
63
+ }
64
+ }
65
+ SCALA
66
+ define('foo').test.invoke
67
+ project('foo').test.tests.should include('com.example.MySpecs')
68
+ end
69
+
70
+ it 'should pass when spec passes' do
71
+ write 'src/spec/scala/PassingSpecs.scala', <<-SCALA
72
+ object PassingSpecs extends org.specs.Specification {
73
+ "it" should {
74
+ "add" in {
75
+ val sum = 1 + 1
76
+ sum mustEqual 2
77
+ }
78
+ }
79
+ }
80
+ SCALA
81
+ lambda { define('foo').test.invoke }.should_not raise_error
82
+ end
83
+
84
+ it 'should fail when ScalaTest test case fails' do
85
+ write 'src/spec/scala/FailingSpecs.scala', <<-SCALA
86
+ object FailingSpecs extends org.specs.Specification {
87
+ "it" should {
88
+ "add" in {
89
+ val sum = 1 + 1
90
+ sum mustEqual 42
91
+ }
92
+ }
93
+ }
94
+ SCALA
95
+ lambda { define('foo').test.invoke }.should raise_error(RuntimeError, /Tests failed/) rescue nil
96
+ end
97
+
98
+ it 'should report failed test names' do
99
+ write 'src/spec/scala/FailingSpecs.scala', <<-SCALA
100
+ object FailingSpecs extends org.specs.Specification {
101
+ "it" should {
102
+ "add" in {
103
+ val sum = 1 + 1
104
+ sum mustEqual 42
105
+ }
106
+ }
107
+ }
108
+ SCALA
109
+ define('foo').test.invoke rescue
110
+ project('foo').test.failed_tests.should include('FailingSpecs')
111
+ end
112
+
113
+ it 'should compile and run specifications with "Specs" suffix' do
114
+ write 'src/spec/scala/HelloWorldSpecs.scala', <<-SCALA
115
+ import org.specs._
116
+
117
+ object HelloWorldSpecs extends Specification {
118
+ "'hello world' has 11 characters" in {
119
+ "hello world".size must beEqualTo(11)
120
+ }
121
+ "'hello world' matches 'h.* w.*'" in {
122
+ "hello world" must beMatching("h.* w.*")
123
+ }
124
+ }
125
+ SCALA
126
+ define('foo')
127
+ project('foo').test.invoke
128
+ project('foo').test.passed_tests.should include('HelloWorldSpecs')
129
+ end
130
+
131
+
132
+ it 'should fail if specifications fail' do
133
+ write 'src/spec/scala/StringSpecs.scala', <<-SCALA
134
+ import org.specs._
135
+ import org.specs.runner._
136
+
137
+ object StringSpecs extends Specification {
138
+ "empty string" should {
139
+ "have a zero length" in {
140
+ ("".length) mustEqual(1)
141
+ }
142
+ }
143
+ }
144
+ SCALA
145
+ define('foo')
146
+ project('foo').test.invoke rescue
147
+ project('foo').test.failed_tests.should include('StringSpecs')
148
+ end
149
+
150
+ end
@@ -80,6 +80,33 @@ describe 'scalac compiler' do
80
80
  end
81
81
  end
82
82
 
83
+ it 'should compile scala class depending on java class in same project' do
84
+ write 'src/main/java/com/example/Foo.java', 'package com.example; public class Foo {}'
85
+ write 'src/main/scala/com/example/Bar.scala', 'package com.example; class Bar extends Foo'
86
+ define 'test1', :version=>'1.0' do
87
+ package(:jar)
88
+ end
89
+ task('test1:package').invoke
90
+ file('target/test1-1.0.jar').should exist
91
+ Zip::ZipFile.open(project('test1').package(:jar).to_s) do |zip|
92
+ zip.file.exist?('com/example/Foo.class').should be_true
93
+ zip.file.exist?('com/example/Bar.class').should be_true
94
+ end
95
+ end
96
+
97
+ it 'should compile java class depending on scala class in same project' do
98
+ write 'src/main/scala/com/example/Foo.scala', 'package com.example; class Foo'
99
+ write 'src/main/java/com/example/Bar.java', 'package com.example; public class Bar extends Foo {}'
100
+ define 'test1', :version=>'1.0' do
101
+ package(:jar)
102
+ end
103
+ task('test1:package').invoke
104
+ file('target/test1-1.0.jar').should exist
105
+ Zip::ZipFile.open(project('test1').package(:jar).to_s) do |zip|
106
+ zip.file.exist?('com/example/Foo.class').should be_true
107
+ zip.file.exist?('com/example/Bar.class').should be_true
108
+ end
109
+ end
83
110
  end
84
111
 
85
112
 
@@ -0,0 +1,38 @@
1
+ # Licensed to the Apache Software Foundation (ASF) under one or more
2
+ # contributor license agreements. See the NOTICE file distributed with this
3
+ # work for additional information regarding copyright ownership. The ASF
4
+ # licenses this file to you under the Apache License, Version 2.0 (the
5
+ # "License"); you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12
+ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13
+ # License for the specific language governing permissions and limitations under
14
+ # the License.
15
+
16
+
17
+ require File.join(File.dirname(__FILE__), '../spec_helpers')
18
+
19
+ describe 'scala' do
20
+ # Specific version of Scala required for specs
21
+ required_version = '2.7.3'
22
+ scala_version_str = "version 2.7.3.final"
23
+
24
+ it 'should automatically add the remote scala-tools.org repository' do
25
+ # NOTE: the sandbox environment clears "repositories.remote" so we can't
26
+ # test for this spec right now.
27
+ #
28
+ # repositories.remote.should include('http://scala-tools.org/repo-releases')
29
+ end
30
+
31
+ it "specifications require Scala #{required_version}" do
32
+ Scala.version.should eql(required_version)
33
+ end
34
+
35
+ it "should provide the Scala version string" do
36
+ Scala.version_str.should eql(scala_version_str)
37
+ end
38
+ end
@@ -17,9 +17,6 @@
17
17
  require File.join(File.dirname(__FILE__), '../spec_helpers')
18
18
 
19
19
  # TODO's
20
- # -test w/ Specs
21
- # -test w/ ScalaCheck
22
- # -failing test
23
20
  # -test passing System props
24
21
  # -test passing ENV variables
25
22
  # -test exclude group
@@ -43,13 +40,6 @@ describe Buildr::Scala::ScalaTest do
43
40
  project('foo').test.framework.should eql(:scalatest)
44
41
  end
45
42
 
46
- it 'should be picked if the test language is Scala' do
47
- define 'foo' do
48
- test.compile.using(:scalac)
49
- test.framework.should eql(:scalatest)
50
- end
51
- end
52
-
53
43
  it 'should include Scalatest dependencies' do
54
44
  define('foo') { test.using(:scalatest) }
55
45
  project('foo').test.compile.dependencies.should include(*artifacts(Scala::ScalaTest.dependencies))
@@ -61,17 +51,31 @@ describe Buildr::Scala::ScalaTest do
61
51
  project('foo').test.compile.dependencies.should include(*artifacts(JMock.dependencies))
62
52
  project('foo').test.dependencies.should include(*artifacts(JMock.dependencies))
63
53
  end
64
-
65
- it 'should include Specs dependencies' do
66
- define('foo') { test.using(:scalatest) }
67
- project('foo').test.compile.dependencies.should include(*artifacts(Scala::ScalaSpecs.dependencies))
68
- project('foo').test.dependencies.should include(*artifacts(Scala::ScalaSpecs.dependencies))
69
- end
70
54
 
71
55
  it 'should include ScalaCheck dependencies' do
72
56
  define('foo') { test.using(:scalatest) }
73
- project('foo').test.compile.dependencies.should include(*artifacts(Scala::ScalaCheck.dependencies))
74
- project('foo').test.dependencies.should include(*artifacts(Scala::ScalaCheck.dependencies))
57
+ project('foo').test.compile.dependencies.should include(*artifacts(Scala::Check.dependencies))
58
+ project('foo').test.dependencies.should include(*artifacts(Scala::Check.dependencies))
59
+ end
60
+
61
+ it 'should set current directory' do
62
+ mkpath 'baz'
63
+ expected = File.expand_path('baz')
64
+ expected.gsub!('/', '\\') if expected =~ /^[A-Z]:/ # Java returns back slashed paths for windows
65
+ write 'baz/src/test/scala/CurrentDirectoryTestSuite.scala', <<-SCALA
66
+ class CurrentDirectoryTestSuite extends org.scalatest.FunSuite {
67
+ test("testCurrentDirectory") {
68
+ assert("value" === System.getenv("NAME"))
69
+ assert(#{expected.inspect} === new java.io.File(".").getCanonicalPath())
70
+ }
71
+ }
72
+ SCALA
73
+ define 'bar' do
74
+ define 'baz' do
75
+ test.include 'CurrentDirectoryTest'
76
+ end
77
+ end
78
+ project('bar:baz').test.invoke
75
79
  end
76
80
 
77
81
  it 'should include public classes extending org.scalatest.FunSuite' do
@@ -191,24 +195,65 @@ describe Buildr::Scala::ScalaTest do
191
195
  project('foo').test.invoke
192
196
  end
193
197
 
194
- it 'should set current directory' do
195
- mkpath 'baz'
196
- expected = File.expand_path('baz')
197
- expected.gsub!('/', '\\') if expected =~ /^[A-Z]:/ # Java returns back slashed paths for windows
198
- write 'baz/src/test/scala/CurrentDirectoryTestSuite.scala', <<-SCALA
199
- class CurrentDirectoryTestSuite extends org.scalatest.FunSuite {
200
- test("testCurrentDirectory") {
201
- assert("value" === System.getenv("NAME"))
202
- assert(#{expected.inspect} === new java.io.File(".").getCanonicalPath())
198
+ it 'should run with ScalaCheck automatic test case generation' do
199
+ write 'src/test/scala/MySuite.scala', <<-SCALA
200
+ import org.scalatest.prop.PropSuite
201
+ import org.scalacheck.Arbitrary._
202
+ import org.scalacheck.Prop._
203
+
204
+ class MySuite extends PropSuite {
205
+
206
+ test("list concatenation") {
207
+ val x = List(1, 2, 3)
208
+ val y = List(4, 5, 6)
209
+ assert(x ::: y === List(1, 2, 3, 4, 5, 6))
210
+ check((a: List[Int], b: List[Int]) => a.size + b.size == (a ::: b).size)
203
211
  }
212
+
213
+ test(
214
+ "list concatenation using a test method",
215
+ (a: List[Int], b: List[Int]) => a.size + b.size == (a ::: b).size
216
+ )
204
217
  }
205
218
  SCALA
206
- define 'bar' do
207
- define 'baz' do
208
- test.include 'CurrentDirectoryTest'
209
- end
210
- end
211
- project('bar:baz').test.invoke
219
+ define('foo')
220
+ project('foo').test.invoke
221
+ project('foo').test.passed_tests.should include('MySuite')
222
+ end
223
+
224
+ it 'should fail if ScalaCheck test case fails' do
225
+ write 'src/test/scala/StringSuite.scala', <<-SCALA
226
+ import org.scalatest.prop.PropSuite
227
+ import org.scalacheck.Arbitrary._
228
+ import org.scalacheck.Prop._
229
+
230
+ class StringSuite extends PropSuite {
231
+ test("startsWith") {
232
+ check( (a: String, b: String) => (a+b).startsWith(a) )
233
+ }
234
+
235
+ test("endsWith") {
236
+ check( (a: String, b: String) => (a+b).endsWith(b) )
237
+ }
238
+
239
+ // Is this really always true?
240
+ test("concat") {
241
+ check( (a: String, b: String) => (a+b).length > a.length && (a+b).length > b.length )
242
+ }
243
+
244
+ test("substring2") {
245
+ check( (a: String, b: String) => (a+b).substring(a.length) == b )
246
+ }
247
+
248
+ test("substring3") {
249
+ check( (a: String, b: String, c: String) =>
250
+ (a+b+c).substring(a.length, a.length+b.length) == b )
251
+ }
252
+ }
253
+ SCALA
254
+ define('foo')
255
+ project('foo').test.invoke rescue
256
+ project('foo').test.failed_tests.should include('StringSuite')
212
257
  end
213
258
 
214
259
  end
@@ -19,7 +19,23 @@
19
19
  unless defined?(SpecHelpers)
20
20
 
21
21
  require 'rubygems'
22
- $LOAD_PATH.unshift File.expand_path('../lib', File.dirname(__FILE__)), File.expand_path('../addon', File.dirname(__FILE__))
22
+
23
+ # For testing we use the gem requirements specified on the buildr.gemspec
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
+
27
+ # Make sure to load from these paths first, we don't want to load any
28
+ # code from Gem library.
29
+ $LOAD_PATH.unshift File.expand_path('../lib', File.dirname(__FILE__)),
30
+ File.expand_path('../addon', File.dirname(__FILE__))
31
+
32
+ # Buildr uses autoload extensively, but autoload when running specs creates
33
+ # a problem -- we sandbox $LOADED_FEATURES, so we endup autoloading the same
34
+ # module twice. This turns autoload into a require, which is not the right
35
+ # thing, but will do for now.
36
+ def autoload(symbol, path)
37
+ require path
38
+ end
23
39
  require 'buildr'
24
40
 
25
41
  require File.expand_path('sandbox', File.dirname(__FILE__))
@@ -28,11 +44,12 @@ unless defined?(SpecHelpers)
28
44
 
29
45
  include Checks::Matchers
30
46
 
31
- [:info, :warn, :error].each do |severity|
47
+ [:info, :warn, :error, :puts].each do |severity|
32
48
  ::Object.class_eval do
33
- define_method severity do |message|
49
+ define_method severity do |*args|
34
50
  $messages ||= {}
35
- ($messages[severity] ||= []) << message
51
+ $messages[severity] ||= []
52
+ $messages[severity].push(*args)
36
53
  end
37
54
  end
38
55
  end
@@ -74,7 +91,7 @@ unless defined?(SpecHelpers)
74
91
  MessageWithSeverityMatcher.new :info, message
75
92
  end
76
93
 
77
- # Tests if a warning was issued. You can use a string or regular expression.
94
+ # Test if a warning was shown. You can use a string or regular expression.
78
95
  #
79
96
  # For example:
80
97
  # lambda { warn 'ze test' }.should show_warning(/ze test/)
@@ -90,6 +107,13 @@ unless defined?(SpecHelpers)
90
107
  MessageWithSeverityMatcher.new :error, message
91
108
  end
92
109
 
110
+ # Test if any message was shown (puts). You can use a string or regular expression.
111
+ #
112
+ # For example:
113
+ # lambda { puts 'ze test' }.should show(/ze test/)
114
+ def show(message)
115
+ MessageWithSeverityMatcher.new :puts, message
116
+ end
93
117
 
94
118
  class ::Rake::Task
95
119
  alias :execute_without_a_record :execute
@@ -44,6 +44,11 @@ describe Buildr::VersionRequirement, '.create' do
44
44
  end
45
45
  end
46
46
 
47
+ =begin
48
+ # TODO: Fix this.
49
+ # 1. Can't use should_satisfy, this breaks under RSpec 1.2
50
+ # 2. These should_satisfy calls are not proper specs since the subject is
51
+ # the satistifed_by? method. satisfied_by should satisfy???
47
52
  describe Buildr::VersionRequirement, '#satisfied_by?' do
48
53
  def should_satisfy(str, valids = [], invalids = [])
49
54
  req = Buildr::VersionRequirement.create(str)
@@ -102,6 +107,7 @@ describe Buildr::VersionRequirement, '#satisfied_by?' do
102
107
  should_satisfy '!(2 | 3) | 1', %w(1), %w(2 3)
103
108
  end
104
109
  end
110
+ =end
105
111
 
106
112
  describe Buildr::VersionRequirement, '#default' do
107
113
  it 'should return nil if missing default requirement' do