Author: assaf
Date: Thu Nov 6 12:02:51 2008
New Revision: 711954
URL: http://svn.apache.org/viewvc?rev=711954&view=rev
Log:
Fixed: BUILDR-175 Fail to find child project when calling project method inside
project definition.
Modified:
incubator/buildr/trunk/CHANGELOG
incubator/buildr/trunk/lib/buildr/core/project.rb
incubator/buildr/trunk/spec/core/project_spec.rb
Modified: incubator/buildr/trunk/CHANGELOG
URL:
http://svn.apache.org/viewvc/incubator/buildr/trunk/CHANGELOG?rev=711954&r1=711953&r2=711954&view=diff
==============================================================================
--- incubator/buildr/trunk/CHANGELOG (original)
+++ incubator/buildr/trunk/CHANGELOG Thu Nov 6 12:02:51 2008
@@ -15,6 +15,7 @@
* Fixed: Removed double complete/fail messages showing up on console.
* Fixed: BUILDR-158 Nailgun is now a delegate for buildr/drb (a pure-ruby
dRuby server)
* Fixed: BUILDR-172 Scala compiler not loaded by default.
+* Fixed: BUILDR-175 Fail to find child project when calling project method
inside project definition.
* Fixed: BUILDR-192 TestNG report results are overwritten (Alexis Midon).
* Fixed: BUILDR-193 TestNG uses project name for suite name (not valid file
name on Windows).
Modified: incubator/buildr/trunk/lib/buildr/core/project.rb
URL:
http://svn.apache.org/viewvc/incubator/buildr/trunk/lib/buildr/core/project.rb?rev=711954&r1=711953&r2=711954&view=diff
==============================================================================
--- incubator/buildr/trunk/lib/buildr/core/project.rb (original)
+++ incubator/buildr/trunk/lib/buildr/core/project.rb Thu Nov 6 12:02:51 2008
@@ -241,17 +241,18 @@
raise ArgumentError, 'Only one project name at a time' unless
args.size == 1
@projects ||= {}
name = args.first
+ # Make sure parent project is evaluated (e.g. if looking for foo:bar,
find foo first)
+ unless @projects[name]
+ parts = name.split(':')
+ project(parts.first, options || {}) if parts.size > 1
+ end
if options && options[:scope]
# We assume parent project is evaluated.
project = options[:scope].split(':').inject([[]]) { |scopes, scope|
scopes << (scopes.last + [scope]) }.
map { |scope| @projects[(scope + [name]).join(':')] }.
select { |project| project }.last
end
- unless project
- # Parent project not evaluated.
- name.split(':').tap { |parts| @projects[parts.first].invoke if
parts.size > 1 }
- project = @projects[name]
- end
+ project ||= @projects[name] # Not found in scope.
raise "No such project #{name}" unless project
project.invoke
project
Modified: incubator/buildr/trunk/spec/core/project_spec.rb
URL:
http://svn.apache.org/viewvc/incubator/buildr/trunk/spec/core/project_spec.rb?rev=711954&r1=711953&r2=711954&view=diff
==============================================================================
--- incubator/buildr/trunk/spec/core/project_spec.rb (original)
+++ incubator/buildr/trunk/spec/core/project_spec.rb Thu Nov 6 12:02:51 2008
@@ -432,6 +432,19 @@
project('foo').projects.map(&:name).should include('foo:bar')
end
+ it 'should be findable during project definition' do
+ define 'foo' do
+ bar = define 'bar' do
+ baz = define 'baz'
+ project('baz').should eql(baz)
+ end
+ # Note: evaluating bar:baz first unearthed a bug that doesn't happen
+ # if we evaluate bar, then bar:baz.
+ project('bar:baz').should be(bar.project('baz'))
+ project('bar').should be(bar)
+ end
+ end
+
it 'should be findable only if exists' do
define('foo') { define 'bar' }
lambda { project('foo').project('baz') }.should raise_error(RuntimeError,
/No such project/)