buildr 1.3.5-x86-mswin32

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 (186) hide show
  1. data/CHANGELOG +998 -0
  2. data/LICENSE +176 -0
  3. data/NOTICE +26 -0
  4. data/README.rdoc +134 -0
  5. data/Rakefile +45 -0
  6. data/_buildr +29 -0
  7. data/_jbuildr +29 -0
  8. data/addon/buildr/antlr.rb +65 -0
  9. data/addon/buildr/cobertura.rb +22 -0
  10. data/addon/buildr/drb.rb +281 -0
  11. data/addon/buildr/emma.rb +22 -0
  12. data/addon/buildr/hibernate.rb +142 -0
  13. data/addon/buildr/javacc.rb +85 -0
  14. data/addon/buildr/jdepend.rb +60 -0
  15. data/addon/buildr/jetty.rb +248 -0
  16. data/addon/buildr/jibx.rb +86 -0
  17. data/addon/buildr/nailgun.rb +221 -0
  18. data/addon/buildr/openjpa.rb +90 -0
  19. data/addon/buildr/org/apache/buildr/BuildrNail$Main.class +0 -0
  20. data/addon/buildr/org/apache/buildr/BuildrNail.class +0 -0
  21. data/addon/buildr/org/apache/buildr/BuildrNail.java +41 -0
  22. data/addon/buildr/org/apache/buildr/JettyWrapper$1.class +0 -0
  23. data/addon/buildr/org/apache/buildr/JettyWrapper$BuildrHandler.class +0 -0
  24. data/addon/buildr/org/apache/buildr/JettyWrapper.class +0 -0
  25. data/addon/buildr/org/apache/buildr/JettyWrapper.java +144 -0
  26. data/addon/buildr/xmlbeans.rb +93 -0
  27. data/bin/buildr +19 -0
  28. data/buildr.buildfile +58 -0
  29. data/buildr.gemspec +65 -0
  30. data/doc/_config.yml +1 -0
  31. data/doc/_layouts/default.html +88 -0
  32. data/doc/_layouts/preface.html +22 -0
  33. data/doc/artifacts.textile +211 -0
  34. data/doc/building.textile +244 -0
  35. data/doc/contributing.textile +252 -0
  36. data/doc/css/default.css +236 -0
  37. data/doc/css/print.css +101 -0
  38. data/doc/css/syntax.css +23 -0
  39. data/doc/download.textile +79 -0
  40. data/doc/extending.textile +186 -0
  41. data/doc/images/1442160941-frontcover.jpg +0 -0
  42. data/doc/images/asf-logo.gif +0 -0
  43. data/doc/images/asf-logo.png +0 -0
  44. data/doc/images/buildr-hires.png +0 -0
  45. data/doc/images/buildr.png +0 -0
  46. data/doc/images/favicon.png +0 -0
  47. data/doc/images/growl-icon.tiff +0 -0
  48. data/doc/images/note.png +0 -0
  49. data/doc/images/project-structure.png +0 -0
  50. data/doc/images/tip.png +0 -0
  51. data/doc/images/zbuildr.png +0 -0
  52. data/doc/images/zbuildr.tif +0 -0
  53. data/doc/index.textile +69 -0
  54. data/doc/installing.textile +266 -0
  55. data/doc/languages.textile +459 -0
  56. data/doc/mailing_lists.textile +25 -0
  57. data/doc/more_stuff.textile +457 -0
  58. data/doc/packaging.textile +430 -0
  59. data/doc/preface.textile +54 -0
  60. data/doc/projects.textile +271 -0
  61. data/doc/quick_start.textile +210 -0
  62. data/doc/scripts/buildr-git.rb +512 -0
  63. data/doc/scripts/gitflow.rb +296 -0
  64. data/doc/scripts/install-jruby.sh +44 -0
  65. data/doc/scripts/install-linux.sh +72 -0
  66. data/doc/scripts/install-osx.sh +52 -0
  67. data/doc/settings_profiles.textile +280 -0
  68. data/doc/testing.textile +222 -0
  69. data/etc/KEYS +151 -0
  70. data/lib/buildr.rb +36 -0
  71. data/lib/buildr/core.rb +35 -0
  72. data/lib/buildr/core/application.rb +656 -0
  73. data/lib/buildr/core/build.rb +452 -0
  74. data/lib/buildr/core/checks.rb +254 -0
  75. data/lib/buildr/core/common.rb +150 -0
  76. data/lib/buildr/core/compile.rb +608 -0
  77. data/lib/buildr/core/environment.rb +129 -0
  78. data/lib/buildr/core/filter.rb +362 -0
  79. data/lib/buildr/core/generate.rb +195 -0
  80. data/lib/buildr/core/help.rb +119 -0
  81. data/lib/buildr/core/osx.rb +46 -0
  82. data/lib/buildr/core/progressbar.rb +156 -0
  83. data/lib/buildr/core/project.rb +866 -0
  84. data/lib/buildr/core/shell.rb +198 -0
  85. data/lib/buildr/core/test.rb +723 -0
  86. data/lib/buildr/core/transports.rb +559 -0
  87. data/lib/buildr/core/util.rb +449 -0
  88. data/lib/buildr/groovy.rb +19 -0
  89. data/lib/buildr/groovy/bdd.rb +106 -0
  90. data/lib/buildr/groovy/compiler.rb +138 -0
  91. data/lib/buildr/groovy/shell.rb +48 -0
  92. data/lib/buildr/ide.rb +19 -0
  93. data/lib/buildr/ide/eclipse.rb +334 -0
  94. data/lib/buildr/ide/eclipse/java.rb +53 -0
  95. data/lib/buildr/ide/eclipse/plugin.rb +68 -0
  96. data/lib/buildr/ide/eclipse/scala.rb +66 -0
  97. data/lib/buildr/ide/idea.ipr.template +300 -0
  98. data/lib/buildr/ide/idea.rb +190 -0
  99. data/lib/buildr/ide/idea7x.ipr.template +290 -0
  100. data/lib/buildr/ide/idea7x.rb +212 -0
  101. data/lib/buildr/java.rb +23 -0
  102. data/lib/buildr/java/ant.rb +94 -0
  103. data/lib/buildr/java/bdd.rb +459 -0
  104. data/lib/buildr/java/cobertura.rb +274 -0
  105. data/lib/buildr/java/commands.rb +213 -0
  106. data/lib/buildr/java/compiler.rb +349 -0
  107. data/lib/buildr/java/deprecated.rb +141 -0
  108. data/lib/buildr/java/emma.rb +244 -0
  109. data/lib/buildr/java/jruby.rb +117 -0
  110. data/lib/buildr/java/jtestr_runner.rb.erb +116 -0
  111. data/lib/buildr/java/org/apache/buildr/JavaTestFilter.class +0 -0
  112. data/lib/buildr/java/org/apache/buildr/JavaTestFilter.java +137 -0
  113. data/lib/buildr/java/packaging.rb +716 -0
  114. data/lib/buildr/java/pom.rb +174 -0
  115. data/lib/buildr/java/rjb.rb +155 -0
  116. data/lib/buildr/java/test_result.rb +353 -0
  117. data/lib/buildr/java/tests.rb +333 -0
  118. data/lib/buildr/java/version_requirement.rb +172 -0
  119. data/lib/buildr/packaging.rb +24 -0
  120. data/lib/buildr/packaging/archive.rb +488 -0
  121. data/lib/buildr/packaging/artifact.rb +749 -0
  122. data/lib/buildr/packaging/artifact_namespace.rb +972 -0
  123. data/lib/buildr/packaging/artifact_search.rb +140 -0
  124. data/lib/buildr/packaging/gems.rb +102 -0
  125. data/lib/buildr/packaging/package.rb +238 -0
  126. data/lib/buildr/packaging/tar.rb +186 -0
  127. data/lib/buildr/packaging/version_requirement.rb +172 -0
  128. data/lib/buildr/packaging/zip.rb +73 -0
  129. data/lib/buildr/packaging/ziptask.rb +316 -0
  130. data/lib/buildr/resources/buildr.icns +0 -0
  131. data/lib/buildr/scala.rb +25 -0
  132. data/lib/buildr/scala/bdd.rb +109 -0
  133. data/lib/buildr/scala/compiler.rb +195 -0
  134. data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner$.class +0 -0
  135. data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.class +0 -0
  136. data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.scala +35 -0
  137. data/lib/buildr/scala/shell.rb +55 -0
  138. data/lib/buildr/scala/tests.rb +157 -0
  139. data/lib/buildr/shell.rb +180 -0
  140. data/rakelib/checks.rake +57 -0
  141. data/rakelib/doc.rake +92 -0
  142. data/rakelib/jekylltask.rb +120 -0
  143. data/rakelib/package.rake +73 -0
  144. data/rakelib/release.rake +149 -0
  145. data/rakelib/rspec.rake +73 -0
  146. data/rakelib/setup.rake +54 -0
  147. data/rakelib/stage.rake +213 -0
  148. data/rakelib/stage.rake~ +213 -0
  149. data/spec/addon/drb_spec.rb +328 -0
  150. data/spec/core/application_spec.rb +502 -0
  151. data/spec/core/build_spec.rb +677 -0
  152. data/spec/core/checks_spec.rb +519 -0
  153. data/spec/core/common_spec.rb +670 -0
  154. data/spec/core/compile_spec.rb +583 -0
  155. data/spec/core/extension_spec.rb +93 -0
  156. data/spec/core/generate_spec.rb +33 -0
  157. data/spec/core/project_spec.rb +762 -0
  158. data/spec/core/test_spec.rb +1098 -0
  159. data/spec/core/transport_spec.rb +537 -0
  160. data/spec/core/util_spec.rb +67 -0
  161. data/spec/groovy/bdd_spec.rb +80 -0
  162. data/spec/groovy/compiler_spec.rb +240 -0
  163. data/spec/ide/eclipse_spec.rb +501 -0
  164. data/spec/ide/idea7x_spec.rb +84 -0
  165. data/spec/java/ant_spec.rb +33 -0
  166. data/spec/java/bdd_spec.rb +382 -0
  167. data/spec/java/cobertura_spec.rb +85 -0
  168. data/spec/java/compiler_spec.rb +446 -0
  169. data/spec/java/emma_spec.rb +119 -0
  170. data/spec/java/java_spec.rb +124 -0
  171. data/spec/java/packaging_spec.rb +1134 -0
  172. data/spec/java/test_coverage_helper.rb +257 -0
  173. data/spec/java/tests_spec.rb +493 -0
  174. data/spec/packaging/archive_spec.rb +527 -0
  175. data/spec/packaging/artifact_namespace_spec.rb +654 -0
  176. data/spec/packaging/artifact_spec.rb +795 -0
  177. data/spec/packaging/packaging_helper.rb +63 -0
  178. data/spec/packaging/packaging_spec.rb +684 -0
  179. data/spec/sandbox.rb +142 -0
  180. data/spec/scala/bdd_spec.rb +119 -0
  181. data/spec/scala/compiler_spec.rb +284 -0
  182. data/spec/scala/scala.rb +38 -0
  183. data/spec/scala/tests_spec.rb +261 -0
  184. data/spec/spec_helpers.rb +340 -0
  185. data/spec/version_requirement_spec.rb +129 -0
  186. metadata +383 -0
@@ -0,0 +1,502 @@
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 Buildr::Application do
21
+
22
+ describe 'home_dir' do
23
+ it 'should point to ~/.buildr' do
24
+ Buildr.application.home_dir.should eql(File.expand_path('.buildr', ENV['HOME']))
25
+ end
26
+
27
+ it 'should point to existing directory' do
28
+ File.directory?(Buildr.application.home_dir).should be_true
29
+ end
30
+ end
31
+
32
+ describe '#run' do
33
+ it 'should execute *_load methods in order' do
34
+ order = [:load_gems, :load_artifact_ns, :load_tasks, :raw_load_buildfile]
35
+ order.each { |method| Buildr.application.should_receive(method).ordered }
36
+ Buildr.application.stub!(:exit) # With this, shows the correct error instead of SystemExit.
37
+ Buildr.application.run
38
+ end
39
+
40
+ it 'should load imports after loading buildfile' do
41
+ method = Buildr.application.method(:raw_load_buildfile)
42
+ Buildr.application.should_receive(:raw_load_buildfile) do
43
+ Buildr.application.should_receive(:load_imports)
44
+ method.call
45
+ end
46
+ Buildr.application.stub!(:exit) # With this, shows the correct error instead of SystemExit.
47
+ Buildr.application.run
48
+ end
49
+
50
+ it 'should evaluate all projects after loading buildfile' do
51
+ Buildr.application.should_receive(:load_imports) do
52
+ Buildr.should_receive(:projects)
53
+ end
54
+ Buildr.application.stub!(:exit) # With this, shows the correct error instead of SystemExit.
55
+ Buildr.application.run
56
+ end
57
+ end
58
+
59
+ describe 'environment' do
60
+ it 'should return value of BUILDR_ENV' do
61
+ ENV['BUILDR_ENV'] = 'qa'
62
+ Buildr.application.environment.should eql('qa')
63
+ end
64
+
65
+ it 'should default to development' do
66
+ Buildr.application.environment.should eql('development')
67
+ end
68
+
69
+ it 'should set environment name from -e argument' do
70
+ ARGV.push('-e', 'test')
71
+ Buildr.application.send(:handle_options)
72
+ Buildr.application.environment.should eql('test')
73
+ ENV['BUILDR_ENV'].should eql('test')
74
+ end
75
+
76
+ it 'should be echoed to user' do
77
+ write 'buildfile'
78
+ ENV['BUILDR_ENV'] = 'spec'
79
+ Buildr.application.send(:handle_options)
80
+ lambda { Buildr.application.send :load_buildfile }.should show(%r{(in .*, spec)})
81
+ end
82
+ end
83
+
84
+ describe 'options' do
85
+ it "should have 'tasks' as the sole default rakelib" do
86
+ Buildr.application.send(:handle_options)
87
+ Buildr.application.options.rakelib.should == ['tasks']
88
+ end
89
+ end
90
+
91
+ describe 'gems' do
92
+ before do
93
+ class << Buildr.application
94
+ public :load_gems
95
+ end
96
+ end
97
+
98
+ def load_with_yaml
99
+ write 'build.yaml', <<-YAML
100
+ gems:
101
+ - rake
102
+ - rspec >= 1.2
103
+ YAML
104
+ Buildr.application.load_gems
105
+ end
106
+
107
+ it 'should return empty array if no gems specified' do
108
+ Buildr.application.load_gems
109
+ Buildr.application.gems.should be_empty
110
+ end
111
+
112
+ it 'should return one entry for each gem specified in buildr.yaml' do
113
+ load_with_yaml
114
+ Buildr.application.gems.size.should be(2)
115
+ end
116
+
117
+ it 'should return a Gem::Specification for each installed gem' do
118
+ load_with_yaml
119
+ Buildr.application.gems.each { |gem| gem.should be_kind_of(Gem::Specification) }
120
+ end
121
+
122
+ it 'should parse Gem name correctly' do
123
+ load_with_yaml
124
+ Buildr.application.gems.map(&:name).should include('rspec', 'rake')
125
+ end
126
+
127
+ it 'should find installed version of Gem' do
128
+ load_with_yaml
129
+ Buildr.application.gems.each { |gem| gem.version.should eql(Gem.loaded_specs[gem.name].version) }
130
+ end
131
+ end
132
+
133
+ describe 'load_gems' do
134
+ before do
135
+ class << Buildr.application
136
+ public :load_gems
137
+ end
138
+ @spec = Gem::Specification.new do |spec|
139
+ spec.name = 'foo'
140
+ spec.version = '1.2'
141
+ end
142
+ $stdout.stub!(:isatty).and_return(true)
143
+ end
144
+
145
+ it 'should do nothing if no gems specified' do
146
+ lambda { Buildr.application.load_gems }.should_not raise_error
147
+ end
148
+
149
+ it 'should install nothing if specified gems already installed' do
150
+ Buildr.application.should_receive(:listed_gems).and_return([Gem.loaded_specs['rspec']])
151
+ Util.should_not_receive(:ruby)
152
+ lambda { Buildr.application.load_gems }.should_not raise_error
153
+ end
154
+
155
+ it 'should fail if required gem not found in remote repository' do
156
+ Buildr.application.should_receive(:listed_gems).and_return([Gem::Dependency.new('foo', '>=1.1')])
157
+ Gem::SourceInfoCache.should_receive(:search).and_return([])
158
+ lambda { Buildr.application.load_gems }.should raise_error(LoadError, /cannot be found/i)
159
+ end
160
+
161
+ it 'should fail if need to install gem and not running in interactive mode' do
162
+ Buildr.application.should_receive(:listed_gems).and_return([Gem::Dependency.new('foo', '>=1.1')])
163
+ Gem::SourceInfoCache.should_receive(:search).and_return([@spec])
164
+ $stdout.should_receive(:isatty).and_return(false)
165
+ lambda { Buildr.application.load_gems }.should raise_error(LoadError, /this build requires the gems/i)
166
+ end
167
+
168
+ it 'should ask permission before installing required gems' do
169
+ Buildr.application.should_receive(:listed_gems).and_return([Gem::Dependency.new('foo', '>=1.1')])
170
+ Gem::SourceInfoCache.should_receive(:search).and_return([@spec])
171
+ $terminal.should_receive(:agree).with(/install/, true)
172
+ lambda { Buildr.application.load_gems }.should raise_error
173
+ end
174
+
175
+ it 'should fail if permission not granted to install gem' do
176
+ Buildr.application.should_receive(:listed_gems).and_return([Gem::Dependency.new('foo', '>=1.1')])
177
+ Gem::SourceInfoCache.should_receive(:search).and_return([@spec])
178
+ $terminal.should_receive(:agree).and_return(false)
179
+ lambda { Buildr.application.load_gems }.should raise_error(LoadError, /cannot build without/i)
180
+ end
181
+
182
+ it 'should install gem if permission granted' do
183
+ Buildr.application.should_receive(:listed_gems).and_return([Gem::Dependency.new('foo', '>=1.1')])
184
+ Gem::SourceInfoCache.should_receive(:search).and_return([@spec])
185
+ $terminal.should_receive(:agree).and_return(true)
186
+ Util.should_receive(:ruby) do |*args|
187
+ args.should include('install', 'foo', '-v', '1.2')
188
+ end
189
+ Buildr.application.should_receive(:gem).and_return(false)
190
+ Buildr.application.load_gems
191
+ end
192
+
193
+ it 'should reload gem cache after installing required gems' do
194
+ Buildr.application.should_receive(:listed_gems).and_return([Gem::Dependency.new('foo', '>=1.1')])
195
+ Gem::SourceInfoCache.should_receive(:search).and_return([@spec])
196
+ $terminal.should_receive(:agree).and_return(true)
197
+ Util.should_receive(:ruby)
198
+ Gem.source_index.should_receive(:load_gems_in).with(Gem::SourceIndex.installed_spec_directories)
199
+ Buildr.application.should_receive(:gem).and_return(false)
200
+ Buildr.application.load_gems
201
+ end
202
+
203
+ it 'should load previously installed gems' do
204
+ Buildr.application.should_receive(:listed_gems).and_return([Gem.loaded_specs['rspec']])
205
+ Buildr.application.should_receive(:gem).with('rspec', Gem.loaded_specs['rspec'].version.to_s)
206
+ Buildr.application.load_gems
207
+ end
208
+
209
+ it 'should load newly installed gems' do
210
+ Buildr.application.should_receive(:listed_gems).and_return([Gem::Dependency.new('foo', '>=1.1')])
211
+ Gem::SourceInfoCache.should_receive(:search).and_return([@spec])
212
+ $terminal.should_receive(:agree).and_return(true)
213
+ Util.should_receive(:ruby)
214
+ Buildr.application.should_receive(:gem).with('foo', @spec.version.to_s)
215
+ Buildr.application.load_gems
216
+ end
217
+
218
+ it 'should default to >=0 version requirement if not specified' do
219
+ write 'build.yaml', 'gems: foo'
220
+ Gem::SourceInfoCache.should_receive(:search).with(Gem::Dependency.new('foo', '>=0')).and_return([])
221
+ lambda { Buildr.application.load_gems }.should raise_error
222
+ end
223
+
224
+ it 'should parse exact version requirement' do
225
+ write 'build.yaml', 'gems: foo 2.5'
226
+ Gem::SourceInfoCache.should_receive(:search).with(Gem::Dependency.new('foo', '=2.5')).and_return([])
227
+ lambda { Buildr.application.load_gems }.should raise_error
228
+ end
229
+
230
+ it 'should parse range version requirement' do
231
+ write 'build.yaml', 'gems: foo ~>2.3'
232
+ Gem::SourceInfoCache.should_receive(:search).with(Gem::Dependency.new('foo', '~>2.3')).and_return([])
233
+ lambda { Buildr.application.load_gems }.should raise_error
234
+ end
235
+
236
+ it 'should parse multiple version requirements' do
237
+ write 'build.yaml', 'gems: foo >=2.0 !=2.1'
238
+ Gem::SourceInfoCache.should_receive(:search).with(Gem::Dependency.new('foo', ['>=2.0', '!=2.1'])).and_return([])
239
+ lambda { Buildr.application.load_gems }.should raise_error
240
+ end
241
+ end
242
+
243
+ describe 'load_tasks' do
244
+ before do
245
+ class << Buildr.application
246
+ public :load_tasks
247
+ end
248
+ @original_loaded_features = $LOADED_FEATURES.dup
249
+ Buildr.application.options.rakelib = ["tasks"]
250
+ end
251
+
252
+ after do
253
+ $taskfiles = nil
254
+ ($LOADED_FEATURES - @original_loaded_features).each do |new_load|
255
+ $LOADED_FEATURES.delete(new_load)
256
+ end
257
+ end
258
+
259
+ def write_task(filename)
260
+ write filename, <<-RUBY
261
+ $taskfiles ||= []
262
+ $taskfiles << __FILE__
263
+ RUBY
264
+ end
265
+
266
+ def loaded_tasks
267
+ @loaded ||= Buildr.application.load_tasks
268
+ $taskfiles
269
+ end
270
+
271
+ it "should load {options.rakelib}/foo.rake" do
272
+ write_task 'tasks/foo.rake'
273
+ loaded_tasks.should have(1).task
274
+ loaded_tasks.first.should =~ %r{tasks/foo\.rake$}
275
+ end
276
+
277
+ it 'should load all *.rake files from the rakelib' do
278
+ write_task 'tasks/bar.rake'
279
+ write_task 'tasks/quux.rake'
280
+ loaded_tasks.should have(2).tasks
281
+ end
282
+
283
+ it 'should not load files which do not have the .rake extension' do
284
+ write_task 'tasks/foo.rb'
285
+ write_task 'tasks/bar.rake'
286
+ loaded_tasks.should have(1).task
287
+ loaded_tasks.first.should =~ %r{tasks/bar\.rake$}
288
+ end
289
+
290
+ it 'should load files only from the directory specified in the rakelib option' do
291
+ Buildr.application.options.rakelib = ['extensions']
292
+ write_task 'extensions/amp.rake'
293
+ write_task 'tasks/bar.rake'
294
+ write_task 'extensions/foo.rake'
295
+ loaded_tasks.should have(2).tasks
296
+ %w[amp foo].each do |filename|
297
+ loaded_tasks.select{|x| x =~ %r{extensions/#{filename}\.rake}}.should have(1).entry
298
+ end
299
+ end
300
+
301
+ it 'should load files from all the directories specified in the rakelib option' do
302
+ Buildr.application.options.rakelib = ['ext', 'more', 'tasks']
303
+ write_task 'ext/foo.rake'
304
+ write_task 'tasks/bar.rake'
305
+ write_task 'tasks/zeb.rake'
306
+ write_task 'more/baz.rake'
307
+ loaded_tasks.should have(4).tasks
308
+ end
309
+
310
+ it 'should not load files from the rakelib more than once' do
311
+ write_task 'tasks/new_one.rake'
312
+ write_task 'tasks/already.rake'
313
+ $LOADED_FEATURES << 'tasks/already.rake'
314
+
315
+ loaded_tasks.should have(1).task
316
+ loaded_tasks.first.should =~ %r{tasks/new_one\.rake$}
317
+ end
318
+ end
319
+
320
+ end
321
+
322
+
323
+ describe Buildr, 'settings' do
324
+
325
+ describe 'user' do
326
+
327
+ it 'should be empty hash if no settings.yaml file' do
328
+ Buildr.settings.user.should == {}
329
+ end
330
+
331
+ it 'should return loaded settings.yaml file' do
332
+ write 'home/.buildr/settings.yaml', 'foo: bar'
333
+ Buildr.settings.user.should == { 'foo'=>'bar' }
334
+ end
335
+
336
+ it 'should return loaded settings.yml file' do
337
+ write 'home/.buildr/settings.yml', 'foo: bar'
338
+ Buildr.settings.user.should == { 'foo'=>'bar' }
339
+ end
340
+
341
+ it 'should fail if settings.yaml file is not a hash' do
342
+ write 'home/.buildr/settings.yaml', 'foo bar'
343
+ lambda { Buildr.settings.user }.should raise_error(RuntimeError, /expecting.*settings.yaml/i)
344
+ end
345
+
346
+ it 'should be empty hash if settings.yaml file is empty' do
347
+ write 'home/.buildr/settings.yaml'
348
+ Buildr.settings.user.should == {}
349
+ end
350
+ end
351
+
352
+ describe 'configuration' do
353
+ it 'should be empty hash if no build.yaml file' do
354
+ Buildr.settings.build.should == {}
355
+ end
356
+
357
+ it 'should return loaded build.yaml file' do
358
+ write 'build.yaml', 'foo: bar'
359
+ Buildr.settings.build.should == { 'foo'=>'bar' }
360
+ end
361
+
362
+ it 'should return loaded build.yml file' do
363
+ write 'build.yml', 'foo: bar'
364
+ Buildr.settings.build.should == { 'foo'=>'bar' }
365
+ end
366
+
367
+ it 'should fail if build.yaml file is not a hash' do
368
+ write 'build.yaml', 'foo bar'
369
+ lambda { Buildr.settings.build }.should raise_error(RuntimeError, /expecting.*build.yaml/i)
370
+ end
371
+
372
+ it 'should be empty hash if build.yaml file is empty' do
373
+ write 'build.yaml'
374
+ Buildr.settings.build.should == {}
375
+ end
376
+ end
377
+
378
+ describe 'profiles' do
379
+ it 'should be empty hash if no profiles.yaml file' do
380
+ Buildr.settings.profiles.should == {}
381
+ end
382
+
383
+ it 'should return loaded profiles.yaml file' do
384
+ write 'profiles.yaml', <<-YAML
385
+ development:
386
+ foo: bar
387
+ YAML
388
+ Buildr.settings.profiles.should == { 'development'=> { 'foo'=>'bar' } }
389
+ end
390
+
391
+ it 'should return loaded profiles.yml file' do
392
+ write 'profiles.yml', <<-YAML
393
+ development:
394
+ foo: bar
395
+ YAML
396
+ Buildr.settings.profiles.should == { 'development'=> { 'foo'=>'bar' } }
397
+ end
398
+
399
+ it 'should fail if profiles.yaml file is not a hash' do
400
+ write 'profiles.yaml', 'foo bar'
401
+ lambda { Buildr.settings.profiles }.should raise_error(RuntimeError, /expecting.*profiles.yaml/i)
402
+ end
403
+
404
+ it 'should be empty hash if profiles.yaml file is empty' do
405
+ write 'profiles.yaml'
406
+ Buildr.settings.profiles.should == {}
407
+ end
408
+ end
409
+
410
+ describe 'profile' do
411
+ before do
412
+ end
413
+
414
+ it 'should be empty hash if no profiles.yaml' do
415
+ Buildr.settings.profile.should == {}
416
+ end
417
+
418
+ it 'should be empty hash if no matching profile' do
419
+ write 'profiles.yaml', <<-YAML
420
+ test:
421
+ foo: bar
422
+ YAML
423
+ Buildr.settings.profile.should == {}
424
+ end
425
+
426
+ it 'should return profile matching environment name' do
427
+ write 'profiles.yaml', <<-YAML
428
+ development:
429
+ foo: bar
430
+ test:
431
+ foo: baz
432
+ YAML
433
+ Buildr.settings.profile.should == { 'foo'=>'bar' }
434
+ end
435
+ end
436
+
437
+ describe 'buildfile task' do
438
+ before do
439
+ @buildfile_time = Time.now - 10
440
+ write 'buildfile'; File.utime(@buildfile_time, @buildfile_time, 'buildfile')
441
+ end
442
+
443
+ it 'should point to the buildfile' do
444
+ Buildr.application.buildfile.should point_to_path('buildfile')
445
+ end
446
+
447
+ it 'should be a defined task' do
448
+ Buildr.application.buildfile.should == file(File.expand_path('buildfile'))
449
+ end
450
+
451
+ it 'should ignore any rake namespace' do
452
+ namespace 'dummy_ns' do
453
+ Buildr.application.buildfile.should point_to_path('buildfile')
454
+ end
455
+ end
456
+
457
+ it 'should have the same timestamp as the buildfile' do
458
+ Buildr.application.buildfile.timestamp.should be_close(@buildfile_time, 1)
459
+ end
460
+
461
+ it 'should have the same timestamp as build.yaml if the latter is newer' do
462
+ write 'build.yaml'; File.utime(@buildfile_time + 5, @buildfile_time + 5, 'build.yaml')
463
+ Buildr.application.run
464
+ Buildr.application.buildfile.timestamp.should be_close(@buildfile_time + 5, 1)
465
+ end
466
+
467
+ it 'should have the same timestamp as the buildfile if build.yaml is older' do
468
+ write 'build.yaml'; File.utime(@buildfile_time - 5, @buildfile_time - 5, 'build.yaml')
469
+ Buildr.application.run
470
+ Buildr.application.buildfile.timestamp.should be_close(@buildfile_time, 1)
471
+ end
472
+
473
+ it 'should have the same timestamp as build.rb in home dir if the latter is newer' do
474
+ write 'home/buildr.rb'; File.utime(@buildfile_time + 5, @buildfile_time + 5, 'home/buildr.rb')
475
+ Buildr.application.send :load_tasks
476
+ Buildr.application.buildfile.timestamp.should be_close(@buildfile_time + 5, 1)
477
+ end
478
+ end
479
+ end
480
+
481
+
482
+ describe Buildr do
483
+
484
+ describe 'environment' do
485
+ it 'should be same as Buildr.application.environment' do
486
+ Buildr.environment.should eql(Buildr.application.environment)
487
+ end
488
+ end
489
+
490
+ describe 'application' do
491
+ it 'should be same as Rake.application' do
492
+ Buildr.application.should == Rake.application
493
+ end
494
+ end
495
+
496
+ describe 'settings' do
497
+ it 'should be same as Buildr.application.settings' do
498
+ Buildr.settings.should == Buildr.application.settings
499
+ end
500
+ end
501
+ end
502
+