Author: vborja
Date: Sun Aug 31 22:30:18 2008
New Revision: 690849
URL: http://svn.apache.org/viewvc?rev=690849&view=rev
Log:
specs for tasks specified as path-like command like arguments
Modified:
incubator/buildr/trunk/spec/application_spec.rb
Modified: incubator/buildr/trunk/spec/application_spec.rb
URL:
http://svn.apache.org/viewvc/incubator/buildr/trunk/spec/application_spec.rb?rev=690849&r1=690848&r2=690849&view=diff
==============================================================================
--- incubator/buildr/trunk/spec/application_spec.rb (original)
+++ incubator/buildr/trunk/spec/application_spec.rb Sun Aug 31 22:30:18 2008
@@ -56,7 +56,6 @@
end
describe 'gems' do
-
def load_with_yaml
write 'build.yaml', <<-YAML
gems:
@@ -379,3 +378,87 @@
end
end
end
+
+
+describe Buildr::Application do
+ describe '--project option' do
+ it 'should change directory before loading buildfile' do
+ Dir.chdir('.') do
+ write('buildfile', 'define("invalid") { }')
+ path = File.expand_path('path/to/project')
+ write(path+'/buildfile', 'define("valid") { }')
+ Buildr.application = Buildr::Application.new
+ Buildr.application.options.project = path
+ Buildr.application.should_receive(:top_level) do
+ Dir.pwd.should == Buildr.application.options.project
+ Dir.pwd.should == Buildr.application.original_dir
+ Buildr::Project.project("valid").path_to(nil).should == path
+ end
+ lambda { Buildr.application.run }.should_not raise_error
+ end
+ end
+
+ it 'should change to project basedir before executing tasks' do
+ Dir.chdir('.') do
+ path = File.expand_path('bar/baz')
+ mkpath('bar/baz')
+ write('buildfile', 'define("foo") { define("bar") { define("baz") { }
} }')
+ Buildr.application.options.project = 'foo:bar:baz'
+ Buildr.application.should_receive(:top_level) do
+ Dir.pwd.should == path
+ Dir.pwd.should == Buildr.application.original_dir
+ end
+ lambda { Buildr.application.run }.should_not raise_error
+ end
+ end
+
+ it 'should change to project basedir before executing tasks (allow use
file_separator for project name)' do
+ Dir.chdir('.') do
+ path = File.expand_path('bar/baz')
+ mkpath('bar/baz')
+ write('buildfile', 'define("foo") { define("bar") { define("baz") { }
} }')
+ Buildr.application.options.project = 'foo/bar/baz'
+ Buildr.application.should_receive(:top_level) do
+ Dir.pwd.should == path
+ Dir.pwd.should == Buildr.application.original_dir
+ end
+ lambda { Buildr.application.run }.should_not raise_error
+ end
+ end
+
+ end
+
+ describe 'path-like command line arguments' do
+
+ %W[moo/bar ./moo/bar].each do |path|
+ it 'should invoke a file-task given as relative path' do
+ file = File.expand_path(path)
+ write('buildfile', 'define("foo") { task("pre"){}; file(_("moo/bar")
=> :pre) { |t| write(t.name, "bat") } }')
+ Buildr.application.should_receive(:top_level) do
+ Buildr.application.invoke_task(path)
+ File.should exist(file)
+ end
+ lambda { Buildr.application.run }.should run_tasks("foo:pre")
+ end
+ end
+
+ %W[bar/bat ./bar/bat foo/bar/bat].each do |path|
+ it 'should invoke a project task given as relative path' do
+ write('buildfile', 'define("foo") { define("bar") { task("bat") {} }
}')
+ Buildr.application.should_receive(:top_level) do
+ Buildr.application.invoke_task(path)
+ end
+ lambda { Buildr.application.run }.should run_tasks("foo:bar:bat")
+ end
+ end
+
+ it 'should invoke build task if path is a project basedir' do
+ write('buildfile', 'define("foo") { define("bar") { define("baz") { } }
}')
+ Buildr.application.should_receive(:top_level) do
+ Buildr.application.invoke_task('bar/baz')
+ end
+ lambda { Buildr.application.run }.should
run_tasks("foo:bar:baz:build").but_not("foo:bar:build", "foo:build")
+ end
+
+ end
+end