blob: d01e03a5d3e113062655142f1d9e9593de1f0953 [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.
*/
package org.apache.royale.test.ant.tasks;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.DynamicElement;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.types.FileSet;
import org.apache.royale.test.ant.tasks.configuration.TaskConfiguration;
import org.apache.royale.test.ant.tasks.types.LoadConfig;
public class RoyaleUnitTask extends Task implements DynamicElement
{
private TaskConfiguration configuration;
public RoyaleUnitTask()
{
}
@Override
public void setProject(Project project)
{
super.setProject(project);
configuration = new TaskConfiguration(project);
}
/**
* Sets local trusted, default is false
*
* @param localTrusted
*/
public void setLocalTrusted(final boolean localTrusted)
{
configuration.setLocalTrusted(localTrusted);
}
/**
* Set the port to receive the test results on. Default is 1024
*
* @param serverPort
* the port to set.
*/
public void setPort(final int serverPort)
{
configuration.setPort(serverPort);
}
/**
* Set the timeout for receiving the royaleunit report.
*
* @param timeout
* in milliseconds.
*/
public void setTimeout(final int timeout)
{
configuration.setSocketTimeout(timeout);
}
/**
* The buffer size the {@RoyaleUnitSocketServer} uses
* for its inbound data stream.
*/
public void setBuffer(final int size)
{
configuration.setServerBufferSize(size);
}
/**
* The SWF for the RoyaleUnit tests to run.
*
* @param testSWF
* the SWF to set.
*/
public void setSWF(final String testSWF)
{
configuration.setSwf(testSWF);
}
/**
* Set the directory to output the test reports to.
*
* @param toDir
* the directory to set.
*/
public void setToDir(final String toDir)
{
configuration.setReportDir(toDir);
}
/**
* Should we fail the build if the royale tests fail?
*
* @param fail
*/
public void setHaltonfailure(final boolean fail)
{
configuration.setFailOnTestFailure(fail);
}
/**
* Custom ant property noting test failure
*
* @param failprop
*/
public void setFailureproperty(final String failprop)
{
configuration.setFailureProperty(failprop);
}
/**
* Toggle display of descriptive messages
*
* @param verbose
*/
public void setVerbose(final boolean verbose)
{
configuration.setVerbose(verbose);
}
public void setPlayer(String player)
{
configuration.setPlayer(player);
}
public void setCommand(String executableFilePath)
{
configuration.setCommand(executableFilePath);
}
public void setHeadless(boolean headless)
{
configuration.setHeadless(headless);
}
public void setDisplay(int number)
{
configuration.setDisplay(number);
}
public void addSource(FileSet fileset)
{
configuration.addSource(fileset);
}
public void addTestSource(FileSet fileset)
{
configuration.addTestSource(fileset);
}
public void addLibrary(FileSet fileset)
{
configuration.addLibrary(fileset);
}
public void setWorkingDir(String workingDirPath)
{
configuration.setWorkingDir(workingDirPath);
}
/**
* Called by Ant to execute the task.
*/
public void execute() throws BuildException
{
//verify entire configuration
configuration.verify();
//compile tests if necessary
if(configuration.shouldCompile())
{
Compilation compilation = new Compilation(getProject(), configuration.getCompilationConfiguration());
configuration.setSwf(compilation.compile());
}
//executes tests
TestRun testRun = new TestRun(getProject(), configuration.getTestRunConfiguration());
testRun.run();
}
public void setDebug(boolean value)
{
configuration.setDebug(value);
}
public Object createDynamicElement(String arg0) throws BuildException
{
if("load-config".equals(arg0))
{
LoadConfig loadconfig = new LoadConfig();
configuration.setLoadConfig(loadconfig);
return loadconfig;
}
else
{
throw new BuildException( "The <royaleUnit> type doesn't support the " + arg0 + "nested element");
}
}
}