# 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