/**
* <copyright>
*
* This program and the accompanying materials are made available under the
* terms of the MIT license (X11 license) which accompanies this distribution.
*
* </copyright>
*/
package rtt.core;
import java.io.File;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import rtt.core.cli.CommandLineValidator;
import rtt.core.cli.CommandlineOptions;
import rtt.core.manager.Manager;
import rtt.core.manager.Manager.TestCaseMode;
import uk.co.flamingpenguin.jewel.cli.Cli;
import uk.co.flamingpenguin.jewel.cli.CliFactory;
/**
* Includes the main method for starting RTT. See
* {@link rtt.core.cli.CommandlineOptions} on how to use RTT.
*
* @author Peter Mucha
*/
public class RegressionTestTool {
/**
* Starts RTT. For more informations about the parameters, see
* {@link rtt.core.cli.CommandlineOptions}.
*
* @param args
* @throws Throwable
* @throws Exception
*/
public static void main(String[] args) throws Throwable {
Cli<CommandlineOptions> optionParser = CliFactory.createCli(CommandlineOptions.class);
CommandlineOptions options = null;
try {
options = optionParser.parseArguments(args);
if (!CommandLineValidator.validate(options)) {
System.err.println(optionParser.getHelpMessage());
System.exit(-1);
}
} catch (Exception e) {
System.err.println(e.getMessage());
System.err.println(optionParser.getHelpMessage());
System.exit(-1);
}
File archive = options.getArchive();
Manager m = new Manager(archive, true);
if (options.getArchive().exists() && !options.isOverwrite()) {
if (options.isConfiguration()) {
m.loadArchive(archive, options.getConfiguration());
} else {
m.loadArchive(archive);
}
} else {
m.createArchive(archive);
}
if (options.getInformation())
m.printArchiveInformations();
if (options.isGenerate()) {
m.generateTests(null);
} else if (options.isRegenerate()) {
m.generateTests(null);
} else if (options.isTest()) {
m.runTests(null, true);
} else if (options.isAddFile()) {
List<File> files = new ArrayList<File>();
files.add(options.getAddFile());
m.addAllFiles(files, options.getTestsuite(), options.isOutput() ? TestCaseMode.OVERWRITE : TestCaseMode.SKIP);
} else if (options.isRemoveTestsuite()) {
m.removeTestsuite(options.getRemoveTestsuite());
} else if (options.isRemoveTest()) {
m.removeTest(options.getTestsuite(), options.getRemoveTest());
} else if (options.isExport()) {
m.exportLog(options.getExport());
} else if (options.isNewConfiguration()) {
List<String> cpEntries = new LinkedList<String>();
if (options.isClasspath()) {
for (String cpe : options.getClasspath().split(";"))
cpEntries.add(cpe);
}
m.setConfiguration(options.getNewConfiguration(), options.getInitial(),
cpEntries, true, options.isOverwrite());
}
if (options.isOutput()) {
m.saveArchive(options.getOutput());
}
}
}