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.
- data/CHANGELOG +998 -0
- data/LICENSE +176 -0
- data/NOTICE +26 -0
- data/README.rdoc +134 -0
- data/Rakefile +45 -0
- data/_buildr +29 -0
- data/_jbuildr +29 -0
- data/addon/buildr/antlr.rb +65 -0
- data/addon/buildr/cobertura.rb +22 -0
- data/addon/buildr/drb.rb +281 -0
- data/addon/buildr/emma.rb +22 -0
- data/addon/buildr/hibernate.rb +142 -0
- data/addon/buildr/javacc.rb +85 -0
- data/addon/buildr/jdepend.rb +60 -0
- data/addon/buildr/jetty.rb +248 -0
- data/addon/buildr/jibx.rb +86 -0
- data/addon/buildr/nailgun.rb +221 -0
- data/addon/buildr/openjpa.rb +90 -0
- data/addon/buildr/org/apache/buildr/BuildrNail$Main.class +0 -0
- data/addon/buildr/org/apache/buildr/BuildrNail.class +0 -0
- data/addon/buildr/org/apache/buildr/BuildrNail.java +41 -0
- data/addon/buildr/org/apache/buildr/JettyWrapper$1.class +0 -0
- data/addon/buildr/org/apache/buildr/JettyWrapper$BuildrHandler.class +0 -0
- data/addon/buildr/org/apache/buildr/JettyWrapper.class +0 -0
- data/addon/buildr/org/apache/buildr/JettyWrapper.java +144 -0
- data/addon/buildr/xmlbeans.rb +93 -0
- data/bin/buildr +19 -0
- data/buildr.buildfile +58 -0
- data/buildr.gemspec +65 -0
- data/doc/_config.yml +1 -0
- data/doc/_layouts/default.html +88 -0
- data/doc/_layouts/preface.html +22 -0
- data/doc/artifacts.textile +211 -0
- data/doc/building.textile +244 -0
- data/doc/contributing.textile +252 -0
- data/doc/css/default.css +236 -0
- data/doc/css/print.css +101 -0
- data/doc/css/syntax.css +23 -0
- data/doc/download.textile +79 -0
- data/doc/extending.textile +186 -0
- data/doc/images/1442160941-frontcover.jpg +0 -0
- data/doc/images/asf-logo.gif +0 -0
- data/doc/images/asf-logo.png +0 -0
- data/doc/images/buildr-hires.png +0 -0
- data/doc/images/buildr.png +0 -0
- data/doc/images/favicon.png +0 -0
- data/doc/images/growl-icon.tiff +0 -0
- data/doc/images/note.png +0 -0
- data/doc/images/project-structure.png +0 -0
- data/doc/images/tip.png +0 -0
- data/doc/images/zbuildr.png +0 -0
- data/doc/images/zbuildr.tif +0 -0
- data/doc/index.textile +69 -0
- data/doc/installing.textile +266 -0
- data/doc/languages.textile +459 -0
- data/doc/mailing_lists.textile +25 -0
- data/doc/more_stuff.textile +457 -0
- data/doc/packaging.textile +430 -0
- data/doc/preface.textile +54 -0
- data/doc/projects.textile +271 -0
- data/doc/quick_start.textile +210 -0
- data/doc/scripts/buildr-git.rb +512 -0
- data/doc/scripts/gitflow.rb +296 -0
- data/doc/scripts/install-jruby.sh +44 -0
- data/doc/scripts/install-linux.sh +72 -0
- data/doc/scripts/install-osx.sh +52 -0
- data/doc/settings_profiles.textile +280 -0
- data/doc/testing.textile +222 -0
- data/etc/KEYS +151 -0
- data/lib/buildr.rb +36 -0
- data/lib/buildr/core.rb +35 -0
- data/lib/buildr/core/application.rb +656 -0
- data/lib/buildr/core/build.rb +452 -0
- data/lib/buildr/core/checks.rb +254 -0
- data/lib/buildr/core/common.rb +150 -0
- data/lib/buildr/core/compile.rb +608 -0
- data/lib/buildr/core/environment.rb +129 -0
- data/lib/buildr/core/filter.rb +362 -0
- data/lib/buildr/core/generate.rb +195 -0
- data/lib/buildr/core/help.rb +119 -0
- data/lib/buildr/core/osx.rb +46 -0
- data/lib/buildr/core/progressbar.rb +156 -0
- data/lib/buildr/core/project.rb +866 -0
- data/lib/buildr/core/shell.rb +198 -0
- data/lib/buildr/core/test.rb +723 -0
- data/lib/buildr/core/transports.rb +559 -0
- data/lib/buildr/core/util.rb +449 -0
- data/lib/buildr/groovy.rb +19 -0
- data/lib/buildr/groovy/bdd.rb +106 -0
- data/lib/buildr/groovy/compiler.rb +138 -0
- data/lib/buildr/groovy/shell.rb +48 -0
- data/lib/buildr/ide.rb +19 -0
- data/lib/buildr/ide/eclipse.rb +334 -0
- data/lib/buildr/ide/eclipse/java.rb +53 -0
- data/lib/buildr/ide/eclipse/plugin.rb +68 -0
- data/lib/buildr/ide/eclipse/scala.rb +66 -0
- data/lib/buildr/ide/idea.ipr.template +300 -0
- data/lib/buildr/ide/idea.rb +190 -0
- data/lib/buildr/ide/idea7x.ipr.template +290 -0
- data/lib/buildr/ide/idea7x.rb +212 -0
- data/lib/buildr/java.rb +23 -0
- data/lib/buildr/java/ant.rb +94 -0
- data/lib/buildr/java/bdd.rb +459 -0
- data/lib/buildr/java/cobertura.rb +274 -0
- data/lib/buildr/java/commands.rb +213 -0
- data/lib/buildr/java/compiler.rb +349 -0
- data/lib/buildr/java/deprecated.rb +141 -0
- data/lib/buildr/java/emma.rb +244 -0
- data/lib/buildr/java/jruby.rb +117 -0
- data/lib/buildr/java/jtestr_runner.rb.erb +116 -0
- data/lib/buildr/java/org/apache/buildr/JavaTestFilter.class +0 -0
- data/lib/buildr/java/org/apache/buildr/JavaTestFilter.java +137 -0
- data/lib/buildr/java/packaging.rb +716 -0
- data/lib/buildr/java/pom.rb +174 -0
- data/lib/buildr/java/rjb.rb +155 -0
- data/lib/buildr/java/test_result.rb +353 -0
- data/lib/buildr/java/tests.rb +333 -0
- data/lib/buildr/java/version_requirement.rb +172 -0
- data/lib/buildr/packaging.rb +24 -0
- data/lib/buildr/packaging/archive.rb +488 -0
- data/lib/buildr/packaging/artifact.rb +749 -0
- data/lib/buildr/packaging/artifact_namespace.rb +972 -0
- data/lib/buildr/packaging/artifact_search.rb +140 -0
- data/lib/buildr/packaging/gems.rb +102 -0
- data/lib/buildr/packaging/package.rb +238 -0
- data/lib/buildr/packaging/tar.rb +186 -0
- data/lib/buildr/packaging/version_requirement.rb +172 -0
- data/lib/buildr/packaging/zip.rb +73 -0
- data/lib/buildr/packaging/ziptask.rb +316 -0
- data/lib/buildr/resources/buildr.icns +0 -0
- data/lib/buildr/scala.rb +25 -0
- data/lib/buildr/scala/bdd.rb +109 -0
- data/lib/buildr/scala/compiler.rb +195 -0
- data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner$.class +0 -0
- data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.class +0 -0
- data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.scala +35 -0
- data/lib/buildr/scala/shell.rb +55 -0
- data/lib/buildr/scala/tests.rb +157 -0
- data/lib/buildr/shell.rb +180 -0
- data/rakelib/checks.rake +57 -0
- data/rakelib/doc.rake +92 -0
- data/rakelib/jekylltask.rb +120 -0
- data/rakelib/package.rake +73 -0
- data/rakelib/release.rake +149 -0
- data/rakelib/rspec.rake +73 -0
- data/rakelib/setup.rake +54 -0
- data/rakelib/stage.rake +213 -0
- data/rakelib/stage.rake~ +213 -0
- data/spec/addon/drb_spec.rb +328 -0
- data/spec/core/application_spec.rb +502 -0
- data/spec/core/build_spec.rb +677 -0
- data/spec/core/checks_spec.rb +519 -0
- data/spec/core/common_spec.rb +670 -0
- data/spec/core/compile_spec.rb +583 -0
- data/spec/core/extension_spec.rb +93 -0
- data/spec/core/generate_spec.rb +33 -0
- data/spec/core/project_spec.rb +762 -0
- data/spec/core/test_spec.rb +1098 -0
- data/spec/core/transport_spec.rb +537 -0
- data/spec/core/util_spec.rb +67 -0
- data/spec/groovy/bdd_spec.rb +80 -0
- data/spec/groovy/compiler_spec.rb +240 -0
- data/spec/ide/eclipse_spec.rb +501 -0
- data/spec/ide/idea7x_spec.rb +84 -0
- data/spec/java/ant_spec.rb +33 -0
- data/spec/java/bdd_spec.rb +382 -0
- data/spec/java/cobertura_spec.rb +85 -0
- data/spec/java/compiler_spec.rb +446 -0
- data/spec/java/emma_spec.rb +119 -0
- data/spec/java/java_spec.rb +124 -0
- data/spec/java/packaging_spec.rb +1134 -0
- data/spec/java/test_coverage_helper.rb +257 -0
- data/spec/java/tests_spec.rb +493 -0
- data/spec/packaging/archive_spec.rb +527 -0
- data/spec/packaging/artifact_namespace_spec.rb +654 -0
- data/spec/packaging/artifact_spec.rb +795 -0
- data/spec/packaging/packaging_helper.rb +63 -0
- data/spec/packaging/packaging_spec.rb +684 -0
- data/spec/sandbox.rb +142 -0
- data/spec/scala/bdd_spec.rb +119 -0
- data/spec/scala/compiler_spec.rb +284 -0
- data/spec/scala/scala.rb +38 -0
- data/spec/scala/tests_spec.rb +261 -0
- data/spec/spec_helpers.rb +340 -0
- data/spec/version_requirement_spec.rb +129 -0
- metadata +383 -0
@@ -0,0 +1,93 @@
|
|
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 Extension do
|
21
|
+
|
22
|
+
it 'should call Extension.first_time during include' do
|
23
|
+
TestExtension.should_receive(:first_time_called).once
|
24
|
+
class Buildr::Project
|
25
|
+
include TestExtension
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'should call before_define and after_define in order when project is defined' do
|
30
|
+
begin
|
31
|
+
TestExtension.initialized do |extension|
|
32
|
+
extension.should_receive(:before_define_called).once.ordered
|
33
|
+
extension.should_receive(:after_define_called).once.ordered
|
34
|
+
end
|
35
|
+
class Buildr::Project
|
36
|
+
include TestExtension
|
37
|
+
end
|
38
|
+
define('foo')
|
39
|
+
ensure
|
40
|
+
TestExtension.initialized { |ignore| }
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'should call before_define and after_define for each project defined' do
|
45
|
+
begin
|
46
|
+
extensions = 0
|
47
|
+
TestExtension.initialized do |extension|
|
48
|
+
extensions += 1
|
49
|
+
extension.should_receive(:before_define_called).once.ordered
|
50
|
+
extension.should_receive(:after_define_called).once.ordered
|
51
|
+
end
|
52
|
+
class Buildr::Project
|
53
|
+
include TestExtension
|
54
|
+
end
|
55
|
+
define('foo')
|
56
|
+
define('bar')
|
57
|
+
extensions.should equal(2)
|
58
|
+
ensure
|
59
|
+
TestExtension.initialized { |ignore| }
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
module TestExtension
|
65
|
+
include Extension
|
66
|
+
|
67
|
+
def initialize(*args)
|
68
|
+
# callback is used to obtain extension instance created by buildr
|
69
|
+
@@initialized.call(self) if @@initialized
|
70
|
+
super
|
71
|
+
end
|
72
|
+
|
73
|
+
def TestExtension.initialized(&block)
|
74
|
+
@@initialized = block
|
75
|
+
end
|
76
|
+
|
77
|
+
first_time do
|
78
|
+
TestExtension.first_time_called()
|
79
|
+
end
|
80
|
+
|
81
|
+
before_define do |project|
|
82
|
+
project.before_define_called()
|
83
|
+
end
|
84
|
+
|
85
|
+
after_define do |project|
|
86
|
+
project.after_define_called()
|
87
|
+
end
|
88
|
+
|
89
|
+
def TestExtension.first_time_called()
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
93
|
+
|
@@ -0,0 +1,33 @@
|
|
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::Generate do
|
21
|
+
|
22
|
+
describe 'Generated buildfile' do
|
23
|
+
it 'should be a legal buildfile' do
|
24
|
+
File.open('buildfile', 'w') { |file| file.write Generate.from_directory(Dir.pwd).join("\n") }
|
25
|
+
lambda { Buildr.application.run }.should_not raise_error
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should not contain NEXT_VERSION because it was removed in buildr 1.3.3' do
|
29
|
+
buildfile = Generate.from_directory(Dir.pwd)
|
30
|
+
buildfile.each { |line| line.should_not include('NEXT_VERSION')}
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,762 @@
|
|
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 Project do
|
21
|
+
it 'should be findable' do
|
22
|
+
foo = define('foo')
|
23
|
+
project('foo').should be(foo)
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should not exist unless defined' do
|
27
|
+
lambda { project('foo') }.should raise_error(RuntimeError, /No such project/)
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should fail to be defined if its name is already used for a task' do
|
31
|
+
lambda { define('test') }.should raise_error(RuntimeError, /Invalid project name/i)
|
32
|
+
define 'valid' do
|
33
|
+
lambda { define('build') }.should raise_error(RuntimeError, /Invalid project name/i)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'should exist once defined' do
|
38
|
+
define 'foo'
|
39
|
+
lambda { project('foo') }.should_not raise_error
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'should always return same project for same name' do
|
43
|
+
foo, bar = define('foo'), define('bar')
|
44
|
+
foo.should_not be(bar)
|
45
|
+
foo.should be(project('foo'))
|
46
|
+
bar.should be(project('bar'))
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'should show up in projects list if defined' do
|
50
|
+
define('foo')
|
51
|
+
projects.map(&:name).should include('foo')
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'should not show up in projects list unless defined' do
|
55
|
+
projects.map(&:name).should_not include('foo')
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'should be findable from within a project' do
|
59
|
+
define('foo')
|
60
|
+
project('foo').project('foo').should be(project('foo'))
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'should cease to exist when project list cleared' do
|
64
|
+
define 'foo'
|
65
|
+
projects.map(&:name).should include('foo')
|
66
|
+
Project.clear
|
67
|
+
projects.map(&:name).should be_empty
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'should be defined only once' do
|
71
|
+
lambda { define 'foo' }.should_not raise_error
|
72
|
+
lambda { define 'foo' }.should raise_error
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'should be definable in any order' do
|
76
|
+
Buildr.define('baz') { define('bar') { project('foo:bar') } }
|
77
|
+
Buildr.define('foo') { define('bar') }
|
78
|
+
lambda { project('foo') }.should_not raise_error
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'should detect circular dependency' do
|
82
|
+
Buildr.define('baz') { define('bar') { project('foo:bar') } }
|
83
|
+
Buildr.define('foo') { define('bar') { project('baz:bar') } }
|
84
|
+
lambda { project('foo') }.should raise_error(RuntimeError, /Circular dependency/)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
describe Project, ' property' do
|
89
|
+
it 'should be set if passed as argument' do
|
90
|
+
define 'foo', 'version'=>'1.1'
|
91
|
+
project('foo').version.should eql('1.1')
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'should be set if assigned in body' do
|
95
|
+
define('foo') { self.version = '1.2' }
|
96
|
+
project('foo').version.should eql('1.2')
|
97
|
+
end
|
98
|
+
|
99
|
+
it 'should take precedence when assigned in body' do
|
100
|
+
define('foo', 'version'=>'1.1') { self.version = '1.2' }
|
101
|
+
project('foo').version.should eql('1.2')
|
102
|
+
end
|
103
|
+
|
104
|
+
it 'should inherit from parent (for some properties)' do
|
105
|
+
define('foo', 'version'=>'1.2', :group=>'foobar') { define 'bar' }
|
106
|
+
project('foo:bar').version.should eql('1.2')
|
107
|
+
project('foo:bar').group.should eql('foobar')
|
108
|
+
end
|
109
|
+
|
110
|
+
it 'should have different value if set in sub-project' do
|
111
|
+
define 'foo', 'version'=>'1.2', :group=>'foobar' do
|
112
|
+
define 'bar', :version=>'1.3' do
|
113
|
+
self.group = 'barbaz'
|
114
|
+
end
|
115
|
+
end
|
116
|
+
project('foo:bar').version.should eql('1.3')
|
117
|
+
project('foo:bar').group.should eql('barbaz')
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
|
122
|
+
describe Project, ' block' do
|
123
|
+
it 'should execute once' do
|
124
|
+
define('foo') { self.name.should eql('foo') }
|
125
|
+
end
|
126
|
+
|
127
|
+
it 'should execute in describe of project' do
|
128
|
+
define('foo') { self.version = '1.3' }
|
129
|
+
project('foo').version.should eql('1.3')
|
130
|
+
end
|
131
|
+
|
132
|
+
it 'should execute by passing project' do
|
133
|
+
define('foo') { |project| project.version = '1.3' }
|
134
|
+
project('foo').version.should eql('1.3')
|
135
|
+
end
|
136
|
+
|
137
|
+
it 'should execute in namespace of project' do
|
138
|
+
define('foo') { define('bar') { Buildr.application.current_scope.should eql(['foo', 'bar']) } }
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
|
143
|
+
describe Project, '#base_dir' do
|
144
|
+
it 'should be pwd if not specified' do
|
145
|
+
define('foo').base_dir.should eql(Dir.pwd)
|
146
|
+
end
|
147
|
+
|
148
|
+
it 'should come from property, if specified' do
|
149
|
+
foo = define('foo', :base_dir=>'tmp')
|
150
|
+
foo.base_dir.should point_to_path('tmp')
|
151
|
+
end
|
152
|
+
|
153
|
+
it 'should be expanded path' do
|
154
|
+
foo = define('foo', :base_dir=>'tmp')
|
155
|
+
foo.base_dir.should eql(File.expand_path('tmp'))
|
156
|
+
end
|
157
|
+
|
158
|
+
it 'should be relative to parent project' do
|
159
|
+
define('foo') { define('bar') { define 'baz' } }
|
160
|
+
project('foo:bar:baz').base_dir.should point_to_path('bar/baz')
|
161
|
+
end
|
162
|
+
|
163
|
+
it 'should be settable only if not read' do
|
164
|
+
lambda { define('foo', :base_dir=>'tmp') }.should_not raise_error
|
165
|
+
lambda { define('bar', :base_dir=>'tmp') { self.base_dir = 'bar' } }.should raise_error(Exception, /Cannot set/)
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
|
170
|
+
describe Layout do
|
171
|
+
before :each do
|
172
|
+
@layout = Layout.new
|
173
|
+
end
|
174
|
+
|
175
|
+
it 'should expand empty to itself' do
|
176
|
+
@layout.expand.should eql('')
|
177
|
+
@layout.expand('').should eql('')
|
178
|
+
end
|
179
|
+
|
180
|
+
it 'should expand array of symbols' do
|
181
|
+
@layout.expand(:foo, :bar).should eql('foo/bar')
|
182
|
+
end
|
183
|
+
|
184
|
+
it 'should expand array of names' do
|
185
|
+
@layout.expand('foo', 'bar').should eql('foo/bar')
|
186
|
+
end
|
187
|
+
|
188
|
+
it 'should map symbol to path' do
|
189
|
+
@layout[:foo] = 'baz'
|
190
|
+
@layout.expand(:foo, :bar).should eql('baz/bar')
|
191
|
+
end
|
192
|
+
|
193
|
+
it 'should map symbols to path' do
|
194
|
+
@layout[:foo, :bar] = 'none'
|
195
|
+
@layout.expand(:foo, :bar).should eql('none')
|
196
|
+
end
|
197
|
+
|
198
|
+
it 'should map strings to path' do
|
199
|
+
@layout[:foo, "bar"] = 'none'
|
200
|
+
@layout.expand(:foo, :bar).should eql('none')
|
201
|
+
@layout.expand(:foo, 'bar').should eql('none')
|
202
|
+
end
|
203
|
+
|
204
|
+
it 'should ignore nil elements' do
|
205
|
+
@layout[:foo, :bar] = 'none'
|
206
|
+
@layout.expand(:foo, nil, :bar).should eql('none')
|
207
|
+
@layout.expand(nil, :foo).should eql('foo')
|
208
|
+
end
|
209
|
+
|
210
|
+
it 'should return nil if path not mapped' do
|
211
|
+
@layout[:foo].should be_nil
|
212
|
+
end
|
213
|
+
|
214
|
+
it 'should return path from symbol' do
|
215
|
+
@layout[:foo] = 'path'
|
216
|
+
@layout[:foo].should eql('path')
|
217
|
+
end
|
218
|
+
|
219
|
+
it 'should return path from symbol' do
|
220
|
+
@layout[:foo, :bar] = 'path'
|
221
|
+
@layout[:foo, :bar].should eql('path')
|
222
|
+
end
|
223
|
+
|
224
|
+
it 'should do eager mapping' do
|
225
|
+
@layout[:one] = 'none'
|
226
|
+
@layout[:one, :two] = '1..2'
|
227
|
+
@layout.expand(:one, :two, :three).should eql('1..2/three')
|
228
|
+
end
|
229
|
+
|
230
|
+
end
|
231
|
+
|
232
|
+
|
233
|
+
describe Project, '#layout' do
|
234
|
+
before :each do
|
235
|
+
@layout = Layout.new
|
236
|
+
end
|
237
|
+
|
238
|
+
it 'should exist by default' do
|
239
|
+
define('foo').layout.should respond_to(:expand)
|
240
|
+
end
|
241
|
+
|
242
|
+
it 'should be clone of default layout' do
|
243
|
+
define 'foo' do
|
244
|
+
layout.should_not be(Layout.default)
|
245
|
+
layout.expand(:test, :main).should eql(Layout.default.expand(:test, :main))
|
246
|
+
end
|
247
|
+
end
|
248
|
+
|
249
|
+
it 'should come from property, if specified' do
|
250
|
+
foo = define('foo', :layout=>@layout)
|
251
|
+
foo.layout.should eql(@layout)
|
252
|
+
end
|
253
|
+
|
254
|
+
it 'should inherit from parent project' do
|
255
|
+
define 'foo', :layout=>@layout do
|
256
|
+
layout[:foo] = 'foo'
|
257
|
+
define 'bar'
|
258
|
+
end
|
259
|
+
project('foo:bar').layout[:foo].should eql('foo')
|
260
|
+
end
|
261
|
+
|
262
|
+
it 'should clone when inheriting from parent project' do
|
263
|
+
define 'foo', :layout=>@layout do
|
264
|
+
layout[:foo] = 'foo'
|
265
|
+
define 'bar' do
|
266
|
+
layout[:foo] = 'bar'
|
267
|
+
end
|
268
|
+
end
|
269
|
+
project('foo').layout[:foo].should eql('foo')
|
270
|
+
project('foo:bar').layout[:foo].should eql('bar')
|
271
|
+
end
|
272
|
+
|
273
|
+
it 'should be settable only if not read' do
|
274
|
+
lambda { define('foo', :layout=>@layout) }.should_not raise_error
|
275
|
+
lambda { define('bar', :layout=>@layout) { self.layout = @layout.clone } }.should raise_error(Exception, /Cannot set/)
|
276
|
+
end
|
277
|
+
|
278
|
+
end
|
279
|
+
|
280
|
+
|
281
|
+
describe Project, '#path_to' do
|
282
|
+
it 'should return absolute paths as is' do
|
283
|
+
define('foo').path_to('/tmp').should eql(File.expand_path('/tmp'))
|
284
|
+
end
|
285
|
+
|
286
|
+
it 'should resolve empty path to project\'s base directory' do
|
287
|
+
define('foo').path_to.should eql(project('foo').base_dir)
|
288
|
+
end
|
289
|
+
|
290
|
+
it 'should resolve relative paths' do
|
291
|
+
define('foo').path_to('tmp').should eql(File.expand_path('tmp'))
|
292
|
+
end
|
293
|
+
|
294
|
+
it 'should accept multiple arguments' do
|
295
|
+
define('foo').path_to('foo', 'bar').should eql(File.expand_path('foo/bar'))
|
296
|
+
end
|
297
|
+
|
298
|
+
it 'should handle relative paths' do
|
299
|
+
define('foo').path_to('..', 'bar').should eql(File.expand_path('../bar'))
|
300
|
+
end
|
301
|
+
|
302
|
+
it 'should resolve symbols using layout' do
|
303
|
+
define('foo').layout[:foo] = 'bar'
|
304
|
+
project('foo').path_to(:foo).should eql(File.expand_path('bar'))
|
305
|
+
project('foo').path_to(:foo, 'tmp').should eql(File.expand_path('bar/tmp'))
|
306
|
+
end
|
307
|
+
|
308
|
+
it 'should resolve path for sub-project' do
|
309
|
+
define('foo') { define 'bar' }
|
310
|
+
project('foo:bar').path_to('foo').should eql(File.expand_path('foo', project('foo:bar').base_dir))
|
311
|
+
end
|
312
|
+
|
313
|
+
it 'should be idempotent for relative paths' do
|
314
|
+
define 'foo'
|
315
|
+
path = project('foo').path_to('bar')
|
316
|
+
project('foo').path_to(path).should eql(path)
|
317
|
+
end
|
318
|
+
end
|
319
|
+
|
320
|
+
|
321
|
+
describe Project, '#on_define' do
|
322
|
+
it 'should be called when project is defined' do
|
323
|
+
names = []
|
324
|
+
Project.on_define { |project| names << project.name }
|
325
|
+
define 'foo' ; define 'bar'
|
326
|
+
names.should eql(['foo', 'bar'])
|
327
|
+
end
|
328
|
+
|
329
|
+
it 'should be called with project object' do
|
330
|
+
Project.on_define { |project| project.name.should eql('foo') }
|
331
|
+
define('foo')
|
332
|
+
end
|
333
|
+
|
334
|
+
it 'should be called with project object and set properties' do
|
335
|
+
Project.on_define { |project| project.version.should eql('2.0') }
|
336
|
+
define('foo', :version=>'2.0')
|
337
|
+
end
|
338
|
+
|
339
|
+
it 'should execute in namespace of project' do
|
340
|
+
scopes = []
|
341
|
+
Project.on_define { |project| scopes << Buildr.application.current_scope }
|
342
|
+
define('foo') { define 'bar' }
|
343
|
+
scopes.should eql([['foo'], ['foo', 'bar']])
|
344
|
+
end
|
345
|
+
|
346
|
+
it 'should be called before project block' do
|
347
|
+
order = []
|
348
|
+
Project.on_define { |project| order << 'on_define' }
|
349
|
+
define('foo') { order << 'define' }
|
350
|
+
order.should eql(['on_define', 'define'])
|
351
|
+
end
|
352
|
+
|
353
|
+
it 'should accept enhancement and call it after project block' do
|
354
|
+
order = []
|
355
|
+
Project.on_define { |project| project.enhance { order << 'enhance' } }
|
356
|
+
define('foo') { order << 'define' }
|
357
|
+
order.should eql(['define', 'enhance'])
|
358
|
+
end
|
359
|
+
|
360
|
+
it 'should accept enhancement and call it with project' do
|
361
|
+
Project.on_define { |project| project.enhance { |project| project.name.should eql('foo') } }
|
362
|
+
define('foo')
|
363
|
+
end
|
364
|
+
|
365
|
+
it 'should execute enhancement in namespace of project' do
|
366
|
+
scopes = []
|
367
|
+
Project.on_define { |project| project.enhance { scopes << Buildr.application.current_scope } }
|
368
|
+
define('foo') { define 'bar' }
|
369
|
+
scopes.should eql([['foo'], ['foo', 'bar']])
|
370
|
+
end
|
371
|
+
|
372
|
+
it 'should be removed in version 1.5 since it was deprecated in version 1.3' do
|
373
|
+
Buildr::VERSION.should < '1.5'
|
374
|
+
end
|
375
|
+
end
|
376
|
+
|
377
|
+
|
378
|
+
describe Rake::Task, ' recursive' do
|
379
|
+
before do
|
380
|
+
@order = []
|
381
|
+
Project.on_define do |project| # TODO on_define is deprecated
|
382
|
+
project.recursive_task('doda') { @order << project.name }
|
383
|
+
end
|
384
|
+
define('foo') { define('bar') { define('baz') } }
|
385
|
+
end
|
386
|
+
|
387
|
+
it 'should invoke same task in child project' do
|
388
|
+
task('foo:doda').invoke
|
389
|
+
@order.should include('foo:bar:baz')
|
390
|
+
@order.should include('foo:bar')
|
391
|
+
@order.should include('foo')
|
392
|
+
end
|
393
|
+
|
394
|
+
it 'should invoke in depth-first order' do
|
395
|
+
task('foo:doda').invoke
|
396
|
+
@order.should eql([ 'foo:bar:baz', 'foo:bar', 'foo' ])
|
397
|
+
end
|
398
|
+
|
399
|
+
it 'should not invoke task in parent project' do
|
400
|
+
task('foo:bar:baz:doda').invoke
|
401
|
+
@order.should eql([ 'foo:bar:baz' ])
|
402
|
+
end
|
403
|
+
end
|
404
|
+
|
405
|
+
|
406
|
+
describe 'Sub-project' do
|
407
|
+
it 'should point at parent project' do
|
408
|
+
define('foo') { define 'bar' }
|
409
|
+
project('foo:bar').parent.should be(project('foo'))
|
410
|
+
end
|
411
|
+
|
412
|
+
it 'should be defined only within parent project' do
|
413
|
+
lambda { define('foo:bar') }.should raise_error
|
414
|
+
end
|
415
|
+
|
416
|
+
it 'should have unique name' do
|
417
|
+
lambda do
|
418
|
+
define 'foo' do
|
419
|
+
define 'bar'
|
420
|
+
define 'bar'
|
421
|
+
end
|
422
|
+
end.should raise_error
|
423
|
+
end
|
424
|
+
|
425
|
+
it 'should be findable from root' do
|
426
|
+
define('foo') { define 'bar' }
|
427
|
+
projects.map(&:name).should include('foo:bar')
|
428
|
+
end
|
429
|
+
|
430
|
+
it 'should be findable from parent project' do
|
431
|
+
define('foo') { define 'bar' }
|
432
|
+
project('foo').projects.map(&:name).should include('foo:bar')
|
433
|
+
end
|
434
|
+
|
435
|
+
it 'should be findable during project definition' do
|
436
|
+
define 'foo' do
|
437
|
+
bar = define 'bar' do
|
438
|
+
baz = define 'baz'
|
439
|
+
project('baz').should eql(baz)
|
440
|
+
end
|
441
|
+
# Note: evaluating bar:baz first unearthed a bug that doesn't happen
|
442
|
+
# if we evaluate bar, then bar:baz.
|
443
|
+
project('bar:baz').should be(bar.project('baz'))
|
444
|
+
project('bar').should be(bar)
|
445
|
+
end
|
446
|
+
end
|
447
|
+
|
448
|
+
it 'should be findable only if exists' do
|
449
|
+
define('foo') { define 'bar' }
|
450
|
+
lambda { project('foo').project('baz') }.should raise_error(RuntimeError, /No such project/)
|
451
|
+
end
|
452
|
+
|
453
|
+
it 'should always execute its definition ' do
|
454
|
+
ordered = []
|
455
|
+
define 'foo' do
|
456
|
+
ordered << self.name
|
457
|
+
define('bar') { ordered << self.name }
|
458
|
+
define('baz') { ordered << self.name }
|
459
|
+
end
|
460
|
+
ordered.should eql(['foo', 'foo:bar', 'foo:baz'])
|
461
|
+
end
|
462
|
+
|
463
|
+
it 'should execute in order of dependency' do
|
464
|
+
ordered = []
|
465
|
+
define 'foo' do
|
466
|
+
ordered << self.name
|
467
|
+
define('bar') { project('foo:baz') ; ordered << self.name }
|
468
|
+
define('baz') { ordered << self.name }
|
469
|
+
end
|
470
|
+
ordered.should eql(['foo', 'foo:baz', 'foo:bar'])
|
471
|
+
end
|
472
|
+
|
473
|
+
it 'should warn of circular dependency' do
|
474
|
+
lambda do
|
475
|
+
define 'foo' do
|
476
|
+
define('bar') { project('foo:baz') }
|
477
|
+
define('baz') { project('foo:bar') }
|
478
|
+
end
|
479
|
+
end.should raise_error(RuntimeError, /Circular dependency/)
|
480
|
+
end
|
481
|
+
end
|
482
|
+
|
483
|
+
|
484
|
+
describe 'Top-level project' do
|
485
|
+
it 'should have no parent' do
|
486
|
+
define('foo')
|
487
|
+
project('foo').parent.should be_nil
|
488
|
+
end
|
489
|
+
end
|
490
|
+
|
491
|
+
|
492
|
+
describe Buildr, '#project' do
|
493
|
+
it 'should raise error if no such project' do
|
494
|
+
lambda { project('foo') }.should raise_error(RuntimeError, /No such project/)
|
495
|
+
end
|
496
|
+
|
497
|
+
it 'should return a project if exists' do
|
498
|
+
foo = define('foo')
|
499
|
+
project('foo').should be(foo)
|
500
|
+
end
|
501
|
+
|
502
|
+
it 'should find a project by its full name' do
|
503
|
+
bar, baz = nil
|
504
|
+
define('foo') { bar = define('bar') { baz = define('baz') } }
|
505
|
+
project('foo:bar').should be(bar)
|
506
|
+
project('foo:bar:baz').should be(baz)
|
507
|
+
end
|
508
|
+
|
509
|
+
it 'should find a project from any context' do
|
510
|
+
bar, baz = nil
|
511
|
+
define('foo') { bar = define('bar') { baz = define('baz') } }
|
512
|
+
project('foo:bar').project('foo:bar:baz').should be(baz)
|
513
|
+
project('foo:bar:baz').project('foo:bar').should be(bar)
|
514
|
+
end
|
515
|
+
|
516
|
+
it 'should find a project from its parent or sibling project' do
|
517
|
+
define 'foo' do
|
518
|
+
define 'bar'
|
519
|
+
define 'baz'
|
520
|
+
end
|
521
|
+
project('foo').project('bar').should be(project('foo:bar'))
|
522
|
+
project('foo').project('baz').should be(project('foo:baz'))
|
523
|
+
project('foo:bar').project('baz').should be(project('foo:baz'))
|
524
|
+
end
|
525
|
+
|
526
|
+
it 'should fine a project from its parent by proximity' do
|
527
|
+
define 'foo' do
|
528
|
+
define('bar') { define 'baz' }
|
529
|
+
define 'baz'
|
530
|
+
end
|
531
|
+
project('foo').project('baz').should be(project('foo:baz'))
|
532
|
+
project('foo:bar').project('baz').should be(project('foo:bar:baz'))
|
533
|
+
end
|
534
|
+
|
535
|
+
it 'should invoke project before returning it' do
|
536
|
+
define('foo').should_receive(:invoke).once
|
537
|
+
project('foo')
|
538
|
+
end
|
539
|
+
|
540
|
+
it 'should fail if called without a project name' do
|
541
|
+
lambda { project }.should raise_error(ArgumentError)
|
542
|
+
end
|
543
|
+
|
544
|
+
it 'should return self if called on a project without a name' do
|
545
|
+
define('foo') { project.should be(self) }
|
546
|
+
end
|
547
|
+
|
548
|
+
it 'should evaluate parent project before returning' do
|
549
|
+
# Note: gets around our define that also invokes the project.
|
550
|
+
Buildr.define('foo') { define('bar'); define('baz') }
|
551
|
+
project('foo:bar').should eql(projects[1])
|
552
|
+
end
|
553
|
+
end
|
554
|
+
|
555
|
+
|
556
|
+
describe Buildr, '#projects' do
|
557
|
+
it 'should only return defined projects' do
|
558
|
+
projects.should eql([])
|
559
|
+
define 'foo'
|
560
|
+
projects.should eql([project('foo')])
|
561
|
+
end
|
562
|
+
|
563
|
+
it 'should return all defined projects' do
|
564
|
+
define 'foo'
|
565
|
+
define('bar') { define 'baz' }
|
566
|
+
projects.should include(project('foo'))
|
567
|
+
projects.should include(project('bar'))
|
568
|
+
projects.should include(project('bar:baz'))
|
569
|
+
end
|
570
|
+
|
571
|
+
it 'should return only named projects' do
|
572
|
+
define 'foo' ; define 'bar' ; define 'baz'
|
573
|
+
projects('foo', 'bar').should include(project('foo'))
|
574
|
+
projects('foo', 'bar').should include(project('bar'))
|
575
|
+
projects('foo', 'bar').should_not include(project('baz'))
|
576
|
+
end
|
577
|
+
|
578
|
+
it 'should complain if named project does not exist' do
|
579
|
+
define 'foo'
|
580
|
+
projects('foo').should include(project('foo'))
|
581
|
+
lambda { projects('bar') }.should raise_error(RuntimeError, /No such project/)
|
582
|
+
end
|
583
|
+
|
584
|
+
it 'should find a project from its parent or sibling project' do
|
585
|
+
define 'foo' do
|
586
|
+
define 'bar'
|
587
|
+
define 'baz'
|
588
|
+
end
|
589
|
+
project('foo').projects('bar').should eql(projects('foo:bar'))
|
590
|
+
project('foo').projects('baz').should eql(projects('foo:baz'))
|
591
|
+
project('foo:bar').projects('baz').should eql(projects('foo:baz'))
|
592
|
+
end
|
593
|
+
|
594
|
+
it 'should fine a project from its parent by proximity' do
|
595
|
+
define 'foo' do
|
596
|
+
define('bar') { define 'baz' }
|
597
|
+
define 'baz'
|
598
|
+
end
|
599
|
+
project('foo').projects('baz').should eql(projects('foo:baz'))
|
600
|
+
project('foo:bar').projects('baz').should eql(projects('foo:bar:baz'))
|
601
|
+
end
|
602
|
+
|
603
|
+
it 'should evaluate all projects before returning' do
|
604
|
+
# Note: gets around our define that also invokes the project.
|
605
|
+
Buildr.define('foo') { define('bar'); define('baz') }
|
606
|
+
projects.should eql(projects('foo', 'foo:bar', 'foo:baz'))
|
607
|
+
end
|
608
|
+
end
|
609
|
+
|
610
|
+
|
611
|
+
describe Rake::Task, ' local directory' do
|
612
|
+
before do
|
613
|
+
@task = Project.local_task(task(('doda')))
|
614
|
+
Project.on_define { |project| task('doda') { |task| @task.from project.name } }
|
615
|
+
end
|
616
|
+
|
617
|
+
it 'should execute project in local directory' do
|
618
|
+
define 'foo'
|
619
|
+
@task.should_receive(:from).with('foo')
|
620
|
+
@task.invoke
|
621
|
+
end
|
622
|
+
|
623
|
+
it 'should execute sub-project in local directory' do
|
624
|
+
@task.should_receive(:from).with('foo:bar')
|
625
|
+
define('foo') { define 'bar' }
|
626
|
+
in_original_dir(project('foo:bar').base_dir) { @task.invoke }
|
627
|
+
end
|
628
|
+
|
629
|
+
it 'should do nothing if no project in local directory' do
|
630
|
+
@task.should_not_receive(:from)
|
631
|
+
define('foo') { define 'bar' }
|
632
|
+
in_original_dir('../not_foo') { @task.invoke }
|
633
|
+
end
|
634
|
+
|
635
|
+
it 'should find closest project that matches current directory' do
|
636
|
+
mkpath 'bar/src/main'
|
637
|
+
define('foo') { define 'bar' }
|
638
|
+
@task.should_receive(:from).with('foo:bar')
|
639
|
+
in_original_dir('bar/src/main') { @task.invoke }
|
640
|
+
end
|
641
|
+
end
|
642
|
+
|
643
|
+
|
644
|
+
describe Project, '#task' do
|
645
|
+
it 'should create a regular task' do
|
646
|
+
define('foo') { task('bar') }
|
647
|
+
Buildr.application.lookup('foo:bar').should_not be_nil
|
648
|
+
end
|
649
|
+
|
650
|
+
it 'should return a task defined in the project' do
|
651
|
+
define('foo') { task('bar') }
|
652
|
+
project('foo').task('bar').should be_instance_of(Rake::Task)
|
653
|
+
end
|
654
|
+
|
655
|
+
it 'should not create task outside project definition' do
|
656
|
+
define 'foo'
|
657
|
+
lambda { project('foo').task('bar') }.should raise_error(RuntimeError, /no task foo:bar/)
|
658
|
+
end
|
659
|
+
|
660
|
+
it 'should include project name as prefix' do
|
661
|
+
define('foo') { task('bar') }
|
662
|
+
project('foo').task('bar').name.should eql('foo:bar')
|
663
|
+
end
|
664
|
+
|
665
|
+
it 'should ignore namespace if starting with color' do
|
666
|
+
define 'foo' do
|
667
|
+
task(':bar').name.should == 'bar'
|
668
|
+
end
|
669
|
+
Rake::Task.task_defined?('bar').should be_true
|
670
|
+
end
|
671
|
+
|
672
|
+
it 'should accept single dependency' do
|
673
|
+
define('foo') { task('bar'=>'baz') }
|
674
|
+
project('foo').task('bar').prerequisites.should include('baz')
|
675
|
+
end
|
676
|
+
|
677
|
+
it 'should accept multiple dependencies' do
|
678
|
+
define('foo') { task('bar'=>['baz1', 'baz2']) }
|
679
|
+
project('foo').task('bar').prerequisites.should include('baz1')
|
680
|
+
project('foo').task('bar').prerequisites.should include('baz2')
|
681
|
+
end
|
682
|
+
|
683
|
+
it 'should execute task exactly once' do
|
684
|
+
define('foo') do
|
685
|
+
task 'baz'
|
686
|
+
task 'bar'=>'baz'
|
687
|
+
end
|
688
|
+
lambda { project('foo').task('bar').invoke }.should run_tasks(['foo:baz', 'foo:bar'])
|
689
|
+
end
|
690
|
+
|
691
|
+
it 'should create a file task' do
|
692
|
+
define('foo') { file('bar') }
|
693
|
+
Buildr.application.lookup(File.expand_path('bar')).should_not be_nil
|
694
|
+
end
|
695
|
+
|
696
|
+
it 'should create file task with absolute path' do
|
697
|
+
define('foo') { file('/tmp') }
|
698
|
+
Buildr.application.lookup(File.expand_path('/tmp')).should_not be_nil
|
699
|
+
end
|
700
|
+
|
701
|
+
it 'should create file task relative to project base directory' do
|
702
|
+
define('foo', :base_dir=>'tmp') { file('bar') }
|
703
|
+
Buildr.application.lookup(File.expand_path('tmp/bar')).should_not be_nil
|
704
|
+
end
|
705
|
+
|
706
|
+
it 'should accept single dependency' do
|
707
|
+
define('foo') { file('bar'=>'baz') }
|
708
|
+
project('foo').file('bar').prerequisites.should include('baz')
|
709
|
+
end
|
710
|
+
|
711
|
+
it 'should accept multiple dependencies' do
|
712
|
+
define('foo') { file('bar'=>['baz1', 'baz2']) }
|
713
|
+
project('foo').file('bar').prerequisites.should include('baz1')
|
714
|
+
project('foo').file('bar').prerequisites.should include('baz2')
|
715
|
+
end
|
716
|
+
|
717
|
+
it 'should accept hash arguments' do
|
718
|
+
define('foo') do
|
719
|
+
task 'bar'=>'bar_dep'
|
720
|
+
file 'baz'=>'baz_dep'
|
721
|
+
end
|
722
|
+
project('foo').task('bar').prerequisites.should include('bar_dep')
|
723
|
+
project('foo').file('baz').prerequisites.should include('baz_dep')
|
724
|
+
end
|
725
|
+
|
726
|
+
it 'should return a file task defined in the project' do
|
727
|
+
define('foo') { file('bar') }
|
728
|
+
project('foo').file('bar').should be_instance_of(Rake::FileTask)
|
729
|
+
end
|
730
|
+
|
731
|
+
it 'should create file task relative to project definition' do
|
732
|
+
define('foo') { define 'bar' }
|
733
|
+
project('foo:bar').file('baz').name.should point_to_path('bar/baz')
|
734
|
+
end
|
735
|
+
|
736
|
+
it 'should execute task exactly once' do
|
737
|
+
define('foo') do
|
738
|
+
task 'baz'
|
739
|
+
file 'bar'=>'baz'
|
740
|
+
end
|
741
|
+
lambda { project('foo').file('bar').invoke }.should run_tasks(['foo:baz', project('foo').path_to('bar')])
|
742
|
+
end
|
743
|
+
end
|
744
|
+
|
745
|
+
|
746
|
+
=begin
|
747
|
+
describe Buildr::Generate do
|
748
|
+
it 'should be able to create buildfile from directory structure' do
|
749
|
+
write 'src/main/java/Foo.java', ''
|
750
|
+
write 'one/two/src/main/java/Foo.java', ''
|
751
|
+
write 'one/three/src/main/java/Foo.java', ''
|
752
|
+
write 'four/src/main/java/Foo.java', ''
|
753
|
+
script = Buildr::Generate.from_directory(Dir.pwd)
|
754
|
+
instance_eval(script.join("\n"), "generated buildfile")
|
755
|
+
# projects should have been defined
|
756
|
+
root = Dir.pwd.pathmap('%n')
|
757
|
+
names = [root, "#{root}:one:two", "#{root}:one:three", "#{root}:four"]
|
758
|
+
# the top level project has the directory name.
|
759
|
+
names.each { |name| lambda { project(name) }.should_not raise_error }
|
760
|
+
end
|
761
|
+
end
|
762
|
+
=end
|