com.galenframework.actions.GalenActionCheckArguments Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of galen-core Show documentation
Show all versions of galen-core Show documentation
A library for layout testing of websites
/*******************************************************************************
* Copyright 2017 Ivan Shubin http://galenframework.com
*
* Licensed 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 com.galenframework.actions;
import org.apache.commons.cli.*;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import java.awt.*;
import java.util.List;
import java.util.regex.Pattern;
import static com.galenframework.actions.ArgumentsUtils.convertTags;
import static java.lang.Integer.parseInt;
import static java.util.Arrays.asList;
public class GalenActionCheckArguments {
private List paths;
private List includedTags;
private List excludedTags;
private String url;
private Dimension screenSize;
private String htmlReport;
private String testngReport;
private String junitReport;
private String jsonReport;
private String javascript;
private String config;
public static GalenActionCheckArguments parse(String[] args) {
args= ArgumentsUtils.processSystemProperties(args);
Options options = new Options();
options.addOption("i", "include", true, "Tags for sections that should be included in test run");
options.addOption("e", "exclude", true, "Tags for sections that should be excluded from test run");
options.addOption("h", "htmlreport", true, "Path for html output report");
options.addOption("j", "jsonreport", true, "Path for json report");
options.addOption("g", "testngreport", true, "Path for testng xml report");
options.addOption("x", "junitreport", true, "Path for junit xml report");
options.addOption("u", "url", true, "Initial test url");
options.addOption("s", "size", true, "Browser window size");
options.addOption("J", "javascript", true, "JavaScript code that should be executed before checking layout");
options.addOption("c", "config", true, "Path to config");
CommandLineParser parser = new PosixParser();
CommandLine cmd;
try {
cmd = parser.parse(options, args);
} catch (MissingArgumentException e) {
throw new IllegalArgumentException("Missing value for " + e.getOption().getLongOpt(), e);
} catch (Exception ex) {
throw new RuntimeException(ex);
}
GalenActionCheckArguments arguments = new GalenActionCheckArguments();
arguments.setTestngReport(cmd.getOptionValue("g"));
arguments.setJunitReport(cmd.getOptionValue("x"));
arguments.setHtmlReport(cmd.getOptionValue("h"));
arguments.setJsonReport(cmd.getOptionValue("j"));
arguments.setUrl(cmd.getOptionValue("u"));
arguments.setScreenSize(convertScreenSize(cmd.getOptionValue("s")));
arguments.setJavascript(cmd.getOptionValue("J"));
arguments.setIncludedTags(convertTags(cmd.getOptionValue("i")));
arguments.setExcludedTags(convertTags(cmd.getOptionValue("e")));
arguments.setPaths(asList(cmd.getArgs()));
arguments.setConfig(cmd.getOptionValue("c"));
if (arguments.getPaths().isEmpty()) {
throw new IllegalArgumentException("Missing spec files");
}
return arguments;
}
private static Dimension convertScreenSize(String text) {
if (text == null) {
return null;
}
if (Pattern.matches("[0-9]+x[0-9]+", text)) {
String[] values = text.split("x");
if (values.length == 2) {
return new Dimension(parseInt(values[0]), parseInt(values[1]));
}
}
throw new IllegalArgumentException("Incorrect size: " + text);
}
public List getPaths() {
return paths;
}
public GalenActionCheckArguments setPaths(List paths) {
this.paths = paths;
return this;
}
public String getJsonReport() {
return jsonReport;
}
public GalenActionCheckArguments setJsonReport(String jsonReport) {
this.jsonReport = jsonReport;
return this;
}
public String getTestngReport() {
return testngReport;
}
public GalenActionCheckArguments setTestngReport(String testngReport) {
this.testngReport = testngReport;
return this;
}
public String getJunitReport() {
return junitReport;
}
public GalenActionCheckArguments setJunitReport(String junitReport) {
this.junitReport = junitReport;
return this;
}
public String getHtmlReport() {
return htmlReport;
}
public GalenActionCheckArguments setHtmlReport(String htmlReport) {
this.htmlReport = htmlReport;
return this;
}
public List getExcludedTags() {
return excludedTags;
}
public GalenActionCheckArguments setExcludedTags(List excludedTags) {
this.excludedTags = excludedTags;
return this;
}
public List getIncludedTags() {
return includedTags;
}
public GalenActionCheckArguments setIncludedTags(List includedTags) {
this.includedTags = includedTags;
return this;
}
public String getUrl() {
return url;
}
public GalenActionCheckArguments setUrl(String url) {
this.url = url;
return this;
}
public Dimension getScreenSize() {
return screenSize;
}
public GalenActionCheckArguments setScreenSize(Dimension screenSize) {
this.screenSize = screenSize;
return this;
}
public String getJavascript() {
return javascript;
}
public GalenActionCheckArguments setJavascript(String javascript) {
this.javascript = javascript;
return this;
}
@Override
public int hashCode() {
return new HashCodeBuilder()
.append(paths)
.append(includedTags)
.append(excludedTags)
.append(url)
.append(screenSize)
.append(htmlReport)
.append(testngReport)
.append(junitReport)
.append(jsonReport)
.append(javascript)
.append(config)
.toHashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (obj == this) {
return true;
}
if (!(obj instanceof GalenActionCheckArguments)) {
return false;
}
GalenActionCheckArguments rhs = (GalenActionCheckArguments) obj;
return new EqualsBuilder()
.append(rhs.paths, paths)
.append(rhs.includedTags, includedTags)
.append(rhs.excludedTags, excludedTags)
.append(rhs.url, url)
.append(rhs.screenSize, screenSize)
.append(rhs.htmlReport, htmlReport)
.append(rhs.testngReport, testngReport)
.append(rhs.junitReport, junitReport)
.append(rhs.jsonReport, jsonReport)
.append(rhs.javascript, javascript)
.append(rhs.config, config)
.isEquals();
}
@Override
public String toString() {
return new ToStringBuilder(this)
.append("paths", paths)
.append("includedTags", includedTags)
.append("excludedTags", excludedTags)
.append("url", url)
.append("screenSize", screenSize)
.append("htmlReport", htmlReport)
.append("testngReport", testngReport)
.append("junitReport", junitReport)
.append("jsonReport", jsonReport)
.append("javascript", javascript)
.append("config", config)
.toString();
}
public GalenActionCheckArguments setConfig(String config) {
this.config = config;
return this;
}
public String getConfig() {
return config;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy