blob: ea6ebf1d0444fed6c369d6398aab612b855620e8 [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with this
# work for additional information regarding copyright ownership. The ASF
# licenses this file to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helpers'))
describe Run::JavaRunner do
it 'should fail on error' do
define 'foo' do
run.using :java, :main => 'org.example.NonExistentMain' # class doesn't exist
end
lambda { project('foo').run.invoke }.should raise_error(RuntimeError, /Failed to execute java/)
end
it 'should execute main class' do
write 'src/main/java/org/example/Main.java', <<-JAVA
package org.example;
public class Main {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}
JAVA
define 'foo' do
run.using :main => 'org.example.Main'
end
project('foo').run.prerequisites.should include(task("foo:compile"))
end
it 'should accept :main option as an array including parameters for the main class' do
define 'foo' do
run.using :java, :main => ['org.example.Main', '-t', 'input.txt']
end
Java::Commands.should_receive(:java).once.with do |*args|
args[0].should == ['org.example.Main', '-t', 'input.txt']
end
project('foo').run.invoke
end
it 'should accept :java_args and pass them to java' do
define 'foo' do
run.using :java, :main => 'foo', :java_args => ['-server']
end
Java::Commands.should_receive(:java).once.with do |*args|
args[0].should == 'foo'
args[1][:java_args].should include('-server')
end
project('foo').run.invoke
end
it 'should accept :properties and pass them as -Dproperty=value to java' do
define 'foo' do
run.using :java, :main => 'foo', :properties => { :foo => 'one', :bar => 'two' }
end
Java::Commands.should_receive(:java).once.with do |*args|
args[0].should == 'foo'
args[1][:properties][:foo].should == 'one'
args[1][:properties][:bar].should == 'two'
end
project('foo').run.invoke
end
end