blob: 81b33b3094b29f733843d6ec87b9c8200f0e3aa7 [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
*
* https://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.tools.ant.taskdefs.optional.junitlauncher.confined;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.PropertyHelper;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* Represents the configuration details of a test that needs to be launched by the {@link JUnitLauncherTask}
*/
public abstract class TestDefinition {
protected String ifProperty;
protected String unlessProperty;
protected Boolean haltOnFailure;
protected String failureProperty;
protected String outputDir;
protected String includeEngines;
protected String excludeEngines;
protected ForkDefinition forkDefinition;
protected List<ListenerDefinition> listeners = new ArrayList<>();
String getIfProperty() {
return ifProperty;
}
public void setIf(final String ifProperty) {
this.ifProperty = ifProperty;
}
String getUnlessProperty() {
return unlessProperty;
}
public void setUnless(final String unlessProperty) {
this.unlessProperty = unlessProperty;
}
public boolean isHaltOnFailure() {
return this.haltOnFailure != null && this.haltOnFailure;
}
Boolean getHaltOnFailure() {
return this.haltOnFailure;
}
public void setHaltOnFailure(final boolean haltonfailure) {
this.haltOnFailure = haltonfailure;
}
public String getFailureProperty() {
return failureProperty;
}
public void setFailureProperty(final String failureProperty) {
this.failureProperty = failureProperty;
}
public void addConfiguredListener(final ListenerDefinition listener) {
this.listeners.add(listener);
}
public List<ListenerDefinition> getListeners() {
return Collections.unmodifiableList(this.listeners);
}
public void setOutputDir(final String dir) {
this.outputDir = dir;
}
public String getOutputDir() {
return this.outputDir;
}
public ForkDefinition createFork() {
if (this.forkDefinition != null) {
throw new BuildException("Test definition cannot have more than one fork elements");
}
this.forkDefinition = new ForkDefinition();
return this.forkDefinition;
}
ForkDefinition getForkDefinition() {
return this.forkDefinition;
}
protected boolean shouldRun(final Project project) {
final PropertyHelper propertyHelper = PropertyHelper.getPropertyHelper(project);
return propertyHelper.testIfCondition(this.ifProperty) && propertyHelper.testUnlessCondition(this.unlessProperty);
}
public String[] getIncludeEngines() {
return includeEngines == null ? new String[0] : split(this.includeEngines, ",");
}
public void setIncludeEngines(final String includeEngines) {
this.includeEngines = includeEngines;
}
public String[] getExcludeEngines() {
return excludeEngines == null ? new String[0] : split(this.excludeEngines, ",");
}
public void setExcludeEngines(final String excludeEngines) {
this.excludeEngines = excludeEngines;
}
private static String[] split(final String value, final String delimiter) {
if (value == null) {
return new String[0];
}
final List<String> parts = new ArrayList<>();
for (final String part : value.split(delimiter)) {
if (part.trim().isEmpty()) {
// skip it
continue;
}
parts.add(part);
}
return parts.toArray(new String[parts.size()]);
}
protected abstract void toForkedRepresentation(JUnitLauncherTask task, XMLStreamWriter writer) throws XMLStreamException;
}