buildr 1.3.2-java → 1.3.3-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 (124) hide show
  1. data/CHANGELOG +66 -4
  2. data/{README → README.rdoc} +29 -16
  3. data/Rakefile +16 -20
  4. data/_buildr +38 -0
  5. data/addon/buildr/cobertura.rb +49 -45
  6. data/addon/buildr/emma.rb +238 -0
  7. data/addon/buildr/jetty.rb +1 -1
  8. data/addon/buildr/nailgun.rb +585 -661
  9. data/{lib/buildr/java → addon/buildr}/org/apache/buildr/BuildrNail$Main.class +0 -0
  10. data/{lib/buildr/java → addon/buildr}/org/apache/buildr/BuildrNail.class +0 -0
  11. data/{lib/buildr/java → addon/buildr}/org/apache/buildr/BuildrNail.java +0 -0
  12. data/bin/buildr +9 -2
  13. data/buildr.buildfile +53 -0
  14. data/buildr.gemspec +21 -14
  15. data/doc/css/default.css +51 -48
  16. data/doc/css/print.css +60 -55
  17. data/doc/images/favicon.png +0 -0
  18. data/doc/images/growl-icon.tiff +0 -0
  19. data/doc/images/project-structure.png +0 -0
  20. data/doc/pages/artifacts.textile +46 -156
  21. data/doc/pages/building.textile +63 -323
  22. data/doc/pages/contributing.textile +112 -102
  23. data/doc/pages/download.textile +19 -27
  24. data/doc/pages/extending.textile +27 -81
  25. data/doc/pages/getting_started.textile +44 -119
  26. data/doc/pages/index.textile +26 -47
  27. data/doc/pages/languages.textile +407 -0
  28. data/doc/pages/more_stuff.textile +92 -173
  29. data/doc/pages/packaging.textile +71 -239
  30. data/doc/pages/projects.textile +58 -233
  31. data/doc/pages/recipes.textile +19 -43
  32. data/doc/pages/settings_profiles.textile +39 -104
  33. data/doc/pages/testing.textile +41 -304
  34. data/doc/pages/troubleshooting.textile +29 -47
  35. data/doc/pages/whats_new.textile +69 -167
  36. data/doc/print.haml +0 -1
  37. data/doc/print.toc.yaml +1 -0
  38. data/doc/scripts/buildr-git.rb +1 -1
  39. data/doc/site.haml +1 -0
  40. data/doc/site.toc.yaml +8 -5
  41. data/{KEYS → etc/KEYS} +0 -0
  42. data/etc/git-svn-authors +16 -0
  43. data/lib/buildr.rb +2 -5
  44. data/lib/buildr/core/application.rb +192 -98
  45. data/lib/buildr/core/build.rb +140 -91
  46. data/lib/buildr/core/checks.rb +5 -5
  47. data/lib/buildr/core/common.rb +1 -1
  48. data/lib/buildr/core/compile.rb +12 -10
  49. data/lib/buildr/core/filter.rb +151 -46
  50. data/lib/buildr/core/generate.rb +9 -9
  51. data/lib/buildr/core/progressbar.rb +1 -1
  52. data/lib/buildr/core/project.rb +8 -7
  53. data/lib/buildr/core/test.rb +51 -26
  54. data/lib/buildr/core/transports.rb +22 -38
  55. data/lib/buildr/core/util.rb +78 -26
  56. data/lib/buildr/groovy.rb +18 -0
  57. data/lib/buildr/groovy/bdd.rb +105 -0
  58. data/lib/buildr/groovy/compiler.rb +138 -0
  59. data/lib/buildr/ide/eclipse.rb +102 -71
  60. data/lib/buildr/ide/idea.rb +7 -12
  61. data/lib/buildr/ide/idea7x.rb +7 -8
  62. data/lib/buildr/java.rb +4 -7
  63. data/lib/buildr/java/ant.rb +26 -5
  64. data/lib/buildr/java/bdd.rb +449 -0
  65. data/lib/buildr/java/commands.rb +9 -9
  66. data/lib/buildr/java/{compilers.rb → compiler.rb} +8 -90
  67. data/lib/buildr/java/jruby.rb +29 -11
  68. data/lib/buildr/java/jtestr_runner.rb.erb +116 -0
  69. data/lib/buildr/java/packaging.rb +23 -16
  70. data/lib/buildr/java/pom.rb +1 -1
  71. data/lib/buildr/java/rjb.rb +21 -8
  72. data/lib/buildr/java/test_result.rb +308 -0
  73. data/lib/buildr/java/tests.rb +324 -0
  74. data/lib/buildr/packaging/artifact.rb +12 -11
  75. data/lib/buildr/packaging/artifact_namespace.rb +7 -4
  76. data/lib/buildr/packaging/gems.rb +3 -3
  77. data/lib/buildr/packaging/zip.rb +13 -10
  78. data/lib/buildr/resources/buildr.icns +0 -0
  79. data/lib/buildr/scala.rb +19 -0
  80. data/lib/buildr/scala/compiler.rb +109 -0
  81. data/lib/buildr/scala/tests.rb +203 -0
  82. data/rakelib/apache.rake +71 -45
  83. data/rakelib/doc.rake +2 -2
  84. data/rakelib/package.rake +3 -2
  85. data/rakelib/rspec.rake +23 -21
  86. data/rakelib/setup.rake +34 -9
  87. data/rakelib/stage.rake +4 -1
  88. data/spec/addon/cobertura_spec.rb +77 -0
  89. data/spec/addon/emma_spec.rb +120 -0
  90. data/spec/addon/test_coverage_spec.rb +255 -0
  91. data/spec/{application_spec.rb → core/application_spec.rb} +82 -4
  92. data/spec/{artifact_namespace_spec.rb → core/artifact_namespace_spec.rb} +12 -1
  93. data/spec/core/build_spec.rb +415 -0
  94. data/spec/{checks_spec.rb → core/checks_spec.rb} +2 -2
  95. data/spec/{common_spec.rb → core/common_spec.rb} +119 -30
  96. data/spec/{compile_spec.rb → core/compile_spec.rb} +17 -13
  97. data/spec/core/generate_spec.rb +33 -0
  98. data/spec/{project_spec.rb → core/project_spec.rb} +9 -6
  99. data/spec/{test_spec.rb → core/test_spec.rb} +222 -28
  100. data/spec/{transport_spec.rb → core/transport_spec.rb} +5 -9
  101. data/spec/groovy/bdd_spec.rb +80 -0
  102. data/spec/{groovy_compilers_spec.rb → groovy/compiler_spec.rb} +1 -1
  103. data/spec/ide/eclipse_spec.rb +243 -0
  104. data/spec/{java_spec.rb → java/ant.rb} +7 -17
  105. data/spec/java/bdd_spec.rb +358 -0
  106. data/spec/{java_compilers_spec.rb → java/compiler_spec.rb} +1 -1
  107. data/spec/java/java_spec.rb +88 -0
  108. data/spec/{java_packaging_spec.rb → java/packaging_spec.rb} +65 -4
  109. data/spec/{java_test_frameworks_spec.rb → java/tests_spec.rb} +31 -10
  110. data/spec/{archive_spec.rb → packaging/archive_spec.rb} +12 -2
  111. data/spec/{artifact_spec.rb → packaging/artifact_spec.rb} +12 -5
  112. data/spec/{packaging_helper.rb → packaging/packaging_helper.rb} +0 -0
  113. data/spec/{packaging_spec.rb → packaging/packaging_spec.rb} +1 -1
  114. data/spec/sandbox.rb +22 -5
  115. data/spec/{scala_compilers_spec.rb → scala/compiler_spec.rb} +1 -1
  116. data/spec/{scala_test_frameworks_spec.rb → scala/tests_spec.rb} +11 -12
  117. data/spec/spec_helpers.rb +38 -17
  118. metadata +93 -70
  119. data/lib/buildr/java/bdd_frameworks.rb +0 -265
  120. data/lib/buildr/java/groovyc.rb +0 -137
  121. data/lib/buildr/java/test_frameworks.rb +0 -450
  122. data/spec/build_spec.rb +0 -193
  123. data/spec/java_bdd_frameworks_spec.rb +0 -238
  124. data/spec/spec.opts +0 -6
@@ -13,7 +13,7 @@
13
13
  # License for the specific language governing permissions and limitations under
14
14
  # the License.
15
15
 
16
- require File.join(File.dirname(__FILE__), 'spec_helpers')
16
+ require File.join(File.dirname(__FILE__), '../spec_helpers')
17
17
 
18
18
  describe Buildr::ArtifactNamespace do
19
19
 
@@ -247,6 +247,17 @@ describe Buildr::ArtifactNamespace do
247
247
  artifact_ns[:copied].should be_nil
248
248
  end
249
249
  end
250
+
251
+ it 'should register two artifacts with different version on namespace' do
252
+ define 'one' do
253
+ artifact_ns.use :foo => 'a:b:c:1'
254
+ artifact_ns.use :bar => 'a:b:c:2'
255
+ artifact_ns[:foo].version.should == '1'
256
+ artifact_ns[:bar].version.should == '2'
257
+ # unversioned references the last version set.
258
+ artifact_ns['a:b:c'].version.should == '2'
259
+ end
260
+ end
250
261
 
251
262
  it 'should complain if namespace requirement is not satisfied' do
252
263
  define 'one' do
@@ -0,0 +1,415 @@
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
+
20
+ describe 'local task', :shared=>true do
21
+ it "should execute task for project in current directory" do
22
+ define 'foobar'
23
+ lambda { @task.invoke }.should run_task("foobar:#{@task.name}")
24
+ end
25
+
26
+ it "should not execute task for projects in other directory" do
27
+ define 'foobar', :base_dir=>'elsewhere'
28
+ lambda { task('build').invoke }.should_not run_task('foobar:build')
29
+ end
30
+ end
31
+
32
+
33
+ describe 'build task' do
34
+ it_should_behave_like 'local task'
35
+ before(:each) { @task = task('build') }
36
+ end
37
+
38
+ describe 'clean task' do
39
+ it_should_behave_like 'local task'
40
+ before(:each) { @task = task('clean') }
41
+ end
42
+
43
+ describe 'package task' do
44
+ it_should_behave_like 'local task'
45
+ before(:each) { @task = task('package') }
46
+
47
+ it 'should execute build task as prerequisite' do
48
+ lambda { @task.invoke }.should run_task('build')
49
+ end
50
+ end
51
+
52
+ describe 'install task' do
53
+ it_should_behave_like 'local task'
54
+ before(:each) { @task = task('install') }
55
+
56
+ it 'should execute package task as prerequisite' do
57
+ lambda { @task.invoke }.should run_task('package')
58
+ end
59
+ end
60
+
61
+ describe 'uninstall task' do
62
+ it_should_behave_like 'local task'
63
+ before(:each) { @task = task('uninstall') }
64
+ end
65
+
66
+ describe 'upload task' do
67
+ it_should_behave_like 'local task'
68
+ before(:each) { @task = task('upload') }
69
+
70
+ it 'should execute package task as prerequisite' do
71
+ lambda { @task.invoke }.should run_task('package')
72
+ end
73
+ end
74
+
75
+
76
+ describe Project, '#build' do
77
+ it 'should return the project\'s build task' do
78
+ define('foo').build.should eql(task('foo:build'))
79
+ end
80
+
81
+ it 'should enhance the project\'s build task' do
82
+ task 'prereq'
83
+ task 'action'
84
+ define 'foo' do
85
+ build 'prereq' do
86
+ task('action').invoke
87
+ end
88
+ end
89
+ lambda { project('foo').build.invoke }.should run_tasks('prereq', 'action')
90
+ end
91
+
92
+ it 'should execute build task for sub-project' do
93
+ define 'foo' do
94
+ define 'bar'
95
+ end
96
+ lambda { task('foo:build').invoke }.should run_task('foo:bar:build')
97
+ end
98
+
99
+ it 'should not execute build task of other projects' do
100
+ define 'foo'
101
+ define 'bar'
102
+ lambda { task('foo:build').invoke }.should_not run_task('bar:build')
103
+ end
104
+ end
105
+
106
+
107
+ describe Project, '#clean' do
108
+ it 'should return the project\'s clean task' do
109
+ define('foo').clean.should eql(task('foo:clean'))
110
+ end
111
+
112
+ it 'should enhance the project\'s clean task' do
113
+ task 'prereq'
114
+ task 'action'
115
+ define 'foo' do
116
+ clean 'prereq' do
117
+ task('action').invoke
118
+ end
119
+ end
120
+ lambda { project('foo').clean.invoke }.should run_tasks('prereq', 'action')
121
+ end
122
+
123
+ it 'should remove target directory' do
124
+ define 'foo' do
125
+ self.layout[:target] = 'targeted'
126
+ end
127
+ mkpath 'targeted'
128
+ lambda { project('foo').clean.invoke }.should change { File.exist?('targeted') }.from(true).to(false)
129
+ end
130
+
131
+ it 'should remove reports directory' do
132
+ define 'foo' do
133
+ self.layout[:reports] = 'reported'
134
+ end
135
+ mkpath 'reported'
136
+ lambda { project('foo').clean.invoke }.should change { File.exist?('reported') }.from(true).to(false)
137
+ end
138
+
139
+ it 'should execute clean task for sub-project' do
140
+ define 'foo' do
141
+ define 'bar'
142
+ end
143
+ lambda { task('foo:clean').invoke }.should run_task('foo:bar:clean')
144
+ end
145
+
146
+ it 'should not execute clean task of other projects' do
147
+ define 'foo'
148
+ define 'bar'
149
+ lambda { task('foo:clean').invoke }.should_not run_task('bar:clean')
150
+ end
151
+ end
152
+
153
+
154
+ describe Project, '#target' do
155
+ before :each do
156
+ @project = define('foo', :layout=>Layout.new)
157
+ end
158
+
159
+ it 'should default to target' do
160
+ @project.target.should eql('target')
161
+ end
162
+
163
+ it 'should set layout :target' do
164
+ @project.target = 'bar'
165
+ @project.layout.expand(:target).should point_to_path('bar')
166
+ end
167
+
168
+ it 'should come from layout :target' do
169
+ @project.layout[:target] = 'baz'
170
+ @project.target.should eql('baz')
171
+ end
172
+ end
173
+
174
+
175
+ describe Project, '#reports' do
176
+ before :each do
177
+ @project = define('foo', :layout=>Layout.new)
178
+ end
179
+
180
+ it 'should default to reports' do
181
+ @project.reports.should eql('reports')
182
+ end
183
+
184
+ it 'should set layout :reports' do
185
+ @project.reports = 'bar'
186
+ @project.layout.expand(:reports).should point_to_path('bar')
187
+ end
188
+
189
+ it 'should come from layout :reports' do
190
+ @project.layout[:reports] = 'baz'
191
+ @project.reports.should eql('baz')
192
+ end
193
+ end
194
+
195
+
196
+ describe Buildr::Release do
197
+
198
+ describe '#make' do
199
+ before do
200
+ write 'buildfile', "VERSION_NUMBER = '1.0.0-SNAPSHOT'"
201
+ # Prevent a real call to a spawned buildr process.
202
+ Release.stub!(:buildr)
203
+ Svn.stub!(:repo_url).and_return('http://my.repo.org/foo/trunk')
204
+ Svn.stub!(:uncommitted_files).and_return('')
205
+ Svn.stub!(:remove)
206
+ Svn.stub!(:copy)
207
+ Svn.stub!(:commit)
208
+ end
209
+
210
+ it 'should tag a release with the release version' do
211
+ Svn.should_receive(:copy).with(Dir.pwd, 'http://my.repo.org/foo/tags/1.0.0', 'Release 1.0.0').and_return {
212
+ file('buildfile').should contain('VERSION_NUMBER = "1.0.0"')
213
+ }
214
+ Release.make
215
+ end
216
+
217
+ it 'should update the buildfile with the next version number' do
218
+ Release.make
219
+ file('buildfile').should contain('VERSION_NUMBER = "1.0.1-SNAPSHOT"')
220
+ end
221
+
222
+ it 'should commit the updated buildfile' do
223
+ Svn.should_receive(:commit).with(File.expand_path('buildfile'), 'Changed version number to 1.0.1-SNAPSHOT').and_return {
224
+ file('buildfile').should contain('VERSION_NUMBER = "1.0.1-SNAPSHOT"')
225
+ }
226
+ Release.make
227
+ end
228
+ end
229
+
230
+
231
+ describe '#check' do
232
+ before do
233
+ Svn.stub!(:uncommitted_files).and_return('')
234
+ end
235
+
236
+ it 'should accept to release from the trunk' do
237
+ Svn.stub!(:repo_url).and_return('http://my.repo.org/foo/trunk')
238
+ lambda { Release.check }.should_not raise_error
239
+ end
240
+
241
+ it 'should accept to release from a branch' do
242
+ Svn.stub!(:repo_url).and_return('http://my.repo.org/foo/branches/1.0')
243
+ lambda { Release.check }.should_not raise_error
244
+ end
245
+
246
+ it 'should reject releasing from a tag' do
247
+ Svn.stub!(:repo_url).and_return('http://my.repo.org/foo/tags/1.0.0')
248
+ lambda { Release.check }.should raise_error(RuntimeError, "SVN URL must contain 'trunk' or 'branches/...'")
249
+ end
250
+
251
+ it 'should reject a non standard repository layout' do
252
+ Svn.stub!(:repo_url).and_return('http://my.repo.org/foo/bar')
253
+ lambda { Release.check }.should raise_error(RuntimeError, "SVN URL must contain 'trunk' or 'branches/...'")
254
+ end
255
+
256
+ it 'should reject an uncommitted file' do
257
+ Svn.stub!(:repo_url).and_return('http://my.repo.org/foo/trunk')
258
+ Svn.stub!(:uncommitted_files).and_return('M foo.rb')
259
+ lambda { Release.check }.should raise_error(RuntimeError,
260
+ "Uncommitted SVN files violate the First Principle Of Release!\n" +
261
+ "M foo.rb")
262
+ end
263
+ end
264
+
265
+
266
+ describe '#extract_version' do
267
+ it 'should extract VERSION_NUMBER with single quotes' do
268
+ write 'buildfile', "VERSION_NUMBER = '1.0.0-SNAPSHOT'"
269
+ Release.extract_version.should == '1.0.0-SNAPSHOT'
270
+ end
271
+
272
+ it 'should extract VERSION_NUMBER with double quotes' do
273
+ write 'buildfile', %{VERSION_NUMBER = "1.0.1-SNAPSHOT"}
274
+ Release.extract_version.should == '1.0.1-SNAPSHOT'
275
+ end
276
+
277
+ it 'should extract VERSION_NUMBER without any spaces' do
278
+ write 'buildfile', "VERSION_NUMBER='1.0.2-SNAPSHOT'"
279
+ Release.extract_version.should == '1.0.2-SNAPSHOT'
280
+ end
281
+
282
+ it 'should extract THIS_VERSION as an alternative to VERSION_NUMBER' do
283
+ write 'buildfile', "THIS_VERSION = '1.0.3-SNAPSHOT'"
284
+ Release.extract_version.should == '1.0.3-SNAPSHOT'
285
+ end
286
+
287
+ it 'should complain if no current version number' do
288
+ write 'buildfile', 'define foo'
289
+ lambda { Release.extract_version }.should raise_error('Looking for THIS_VERSION = "..." in your Buildfile, none found')
290
+ end
291
+ end
292
+
293
+
294
+ # Reference: http://svnbook.red-bean.com/en/1.4/svn.reposadmin.planning.html#svn.reposadmin.projects.chooselayout
295
+ describe '#tag url' do
296
+ it 'should accept to tag foo/trunk' do
297
+ Release.tag_url('http://my.repo.org/foo/trunk', '1.0.0').should == 'http://my.repo.org/foo/tags/1.0.0'
298
+ end
299
+
300
+ it 'should accept to tag foo/branches/1.0' do
301
+ Release.tag_url('http://my.repo.org/foo/branches/1.0', '1.0.1').should == 'http://my.repo.org/foo/tags/1.0.1'
302
+ end
303
+
304
+ it 'should accept to tag trunk/foo' do
305
+ Release.tag_url('http://my.repo.org/trunk/foo', '1.0.0').should == 'http://my.repo.org/tags/foo/1.0.0'
306
+ end
307
+
308
+ it 'should accept to tag branches/foo/1.0' do
309
+ Release.tag_url('http://my.repo.org/branches/foo/1.0', '1.0.0').should == 'http://my.repo.org/tags/foo/1.0.0'
310
+ end
311
+
312
+ it 'should use tag specified by tag_name' do
313
+ Release.tag_name = 'first'
314
+ Release.tag_url('http://my.repo.org/foo/trunk', '1.0.0').should == 'http://my.repo.org/foo/tags/first'
315
+ end
316
+
317
+ it 'should use tag returned by tag_name if tag_name is a proc' do
318
+ Release.tag_name = lambda { |version| "buildr-#{version}" }
319
+ Release.tag_url('http://my.repo.org/foo/trunk', '1.0.0').should == 'http://my.repo.org/foo/tags/buildr-1.0.0'
320
+ end
321
+
322
+ after { Release.tag_name = nil }
323
+ end
324
+
325
+
326
+ describe '#with_release_candidate_version' do
327
+ before do
328
+ Buildr.application.stub!(:buildfile).and_return(file('buildfile'))
329
+ write 'buildfile', "THIS_VERSION = '1.1.0-SNAPSHOT'"
330
+ end
331
+
332
+ it 'should yield the name of the release candidate buildfile' do
333
+ Release.send :with_release_candidate_version do |new_filename|
334
+ File.read(new_filename).should == %{THIS_VERSION = "1.1.0"}
335
+ end
336
+ end
337
+
338
+ it 'should yield a name different from the original buildfile' do
339
+ Release.send :with_release_candidate_version do |new_filename|
340
+ new_filename.should_not point_to_path('buildfile')
341
+ end
342
+ end
343
+ end
344
+
345
+
346
+ describe '#tag_release' do
347
+ before do
348
+ write 'buildfile', "THIS_VERSION = '1.0.1'"
349
+ Svn.stub!(:repo_url).and_return('http://my.repo.org/foo/trunk')
350
+ Svn.stub!(:copy)
351
+ Svn.stub!(:remove)
352
+ end
353
+
354
+ it 'should tag the working copy' do
355
+ Svn.should_receive(:copy).with(Dir.pwd, 'http://my.repo.org/foo/tags/1.0.1', 'Release 1.0.1')
356
+ Release.send :tag_release
357
+ end
358
+
359
+ it 'should remove the tag if it already exists' do
360
+ Svn.should_receive(:remove).with('http://my.repo.org/foo/tags/1.0.1', 'Removing old copy')
361
+ Release.send :tag_release
362
+ end
363
+
364
+ it 'should accept that the tag does not exist' do
365
+ Svn.stub!(:remove).and_raise(RuntimeError)
366
+ Release.send :tag_release
367
+ end
368
+
369
+ it 'should inform the user' do
370
+ lambda { Release.send :tag_release }.should show_info('Tagging release 1.0.1')
371
+ end
372
+ end
373
+
374
+
375
+ describe '#commit_new_snapshot' do
376
+ before do
377
+ write 'buildfile', 'THIS_VERSION = "1.0.0"'
378
+ Svn.stub!(:commit)
379
+ end
380
+
381
+ it 'should update the buildfile with a new version number' do
382
+ Release.send :commit_new_snapshot
383
+ file('buildfile').should contain('THIS_VERSION = "1.0.1-SNAPSHOT"')
384
+ end
385
+
386
+ it 'should commit the new buildfile on the trunk' do
387
+ Svn.should_receive(:commit).with(File.expand_path('buildfile'), 'Changed version number to 1.0.1-SNAPSHOT')
388
+ Release.send :commit_new_snapshot
389
+ end
390
+
391
+ it 'should inform the user of the new version' do
392
+ lambda { Release.send :commit_new_snapshot }.should show_info('Current version is now 1.0.1-SNAPSHOT')
393
+ end
394
+ end
395
+
396
+ end
397
+
398
+
399
+ describe Buildr::Svn, '#repo_url' do
400
+ it 'should extract the SVN URL from svn info' do
401
+ Svn.stub!(:svn, 'info').and_return(<<EOF)
402
+ Path: .
403
+ URL: http://my.repo.org/foo/trunk
404
+ Repository Root: http://my.repo.org
405
+ Repository UUID: 12345678-9abc-def0-1234-56789abcdef0
406
+ Revision: 112
407
+ Node Kind: directory
408
+ Schedule: normal
409
+ Last Changed Author: Lacton
410
+ Last Changed Rev: 110
411
+ Last Changed Date: 2008-08-19 12:00:00 +0200 (Tue, 19 Aug 2008)
412
+ EOF
413
+ Svn.repo_url.should == 'http://my.repo.org/foo/trunk'
414
+ end
415
+ end
@@ -14,7 +14,7 @@
14
14
  # the License.
15
15
 
16
16
 
17
- require File.join(File.dirname(__FILE__), 'spec_helpers')
17
+ require File.join(File.dirname(__FILE__), '../spec_helpers')
18
18
 
19
19
 
20
20
  describe Project, " check task" do
@@ -221,7 +221,7 @@ describe Buildr::Checks::Expectation, " exist" do
221
221
  end
222
222
 
223
223
 
224
- describe Buildr::Checks::Expectation, " exist" do
224
+ describe Buildr::Checks::Expectation, " be_empty" do
225
225
 
226
226
  it "should pass if file has no content" do
227
227
  define "foo" do