Skip to content

Commit

Permalink
migrate one test to architecture tests
Browse files Browse the repository at this point in the history
  • Loading branch information
rbri committed Jan 6, 2024
1 parent b4efc9b commit 45be16f
Show file tree
Hide file tree
Showing 4 changed files with 80 additions and 61 deletions.
5 changes: 0 additions & 5 deletions src/main/java/org/htmlunit/BrowserVersionFeatures.java
Original file line number Diff line number Diff line change
Expand Up @@ -1481,11 +1481,6 @@ public enum BrowserVersionFeatures {
@BrowserFeature({CHROME, EDGE, FF, FF_ESR})
JS_WEAK_SET,

/** Allow inheriting parent constants
* in {@link org.htmlunit.javascript.host.event.WebGLContextEvent}. */
@BrowserFeature({CHROME, EDGE, FF, FF_ESR})
JS_WEBGL_CONTEXT_EVENT_CONSTANTS,

/** Setting the property width/height to arbitrary values is allowed. */
@BrowserFeature({CHROME, EDGE, FF, FF_ESR})
JS_WIDTH_HEIGHT_ACCEPTS_ARBITRARY_VALUES,
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/org/htmlunit/css/BrowserConfiguration.java
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ static class ChromeAndEdgeNotIterable extends BrowserConfiguration {

@Override
public boolean matches(final BrowserVersion browserVersion) {
return browserVersion.isChrome() || browserVersion == BrowserVersion.EDGE;
return browserVersion.isChrome() || browserVersion.isEdge();
}

@Override
Expand Down Expand Up @@ -170,7 +170,7 @@ private static class ChromeAndEdge extends BrowserConfiguration {

@Override
public boolean matches(final BrowserVersion browserVersion) {
return browserVersion.isChrome() || browserVersion == BrowserVersion.EDGE;
return browserVersion.isChrome() || browserVersion.isEdge();
}
}

Expand All @@ -182,7 +182,7 @@ private static class ChromeAndEdgeAndFirefox extends BrowserConfiguration {
@Override
public boolean matches(final BrowserVersion browserVersion) {
return browserVersion.isChrome()
|| browserVersion == BrowserVersion.EDGE
|| browserVersion.isEdge()
|| browserVersion.isFirefox();
}
}
Expand Down
53 changes: 0 additions & 53 deletions src/test/java/org/htmlunit/CodeStyleTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,6 @@ private void process(final List<File> files, final List<String> classNames) thro
singleAlert(lines, relativePath);
staticLoggers(lines, relativePath);
loggingEnabled(lines, relativePath);
browserVersion_isIE(lines, relativePath);
alerts(lines, relativePath);
className(lines, relativePath);
classNameUsed(lines, classNames, relativePath);
Expand Down Expand Up @@ -567,58 +566,6 @@ private static int getIndentation(final String line) {
return 0;
}

/**
* Verifies that not invocation of browserVersion.isIE(), .isFirefox() or .getBrowserVersionNumeric().
*/
private void browserVersion_isIE(final List<String> lines, final String relativePath) {
if (relativePath.replace('\\', '/').contains("src/main/java")
&& !relativePath.contains("JavaScriptConfiguration.java")
&& !relativePath.contains("BrowserVersionFeatures.java")
&& !relativePath.contains("BrowserConfiguration.java")
&& !relativePath.contains("DateTimeFormat.java")
&& !relativePath.contains("NumberFormat.java")
&& !relativePath.contains("Document.java")
&& !relativePath.contains("HTMLDocument2.java")) {
int index = 1;
for (final String line : lines) {
if (line.contains(".isIE()")) {
addFailure(".isIE() should not be used, please use .hasFeature(): "
+ relativePath + ", line: " + index);
}
if (line.contains(".isFirefox()")) {
addFailure(".isFirefox() should not be used, please use .hasFeature(): "
+ relativePath + ", line: " + index);
}
if (line.contains(".isFirefox78()")) {
addFailure(".isFirefox78() should not be used, please use .hasFeature(): "
+ relativePath + ", line: " + index);
}
if (line.contains(".isChrome()")) {
addFailure(".isChrome() should not be used, please use .hasFeature(): "
+ relativePath + ", line: " + index);
}
index++;
}
}
if (relativePath.replace('\\', '/').contains("src/main/java")
&& !relativePath.contains("BrowserConfiguration.java")
&& !relativePath.contains("BrowserVersion.java")
&& !relativePath.contains("Document.java")
&& !relativePath.contains("HtmlUnitNekoDOMBuilder.java")
&& !relativePath.contains("HtmlUnitValidatorDOMBuilder.java")
&& !relativePath.contains("Window.java")
&& !relativePath.contains("Window2.java")) {
int index = 1;
for (final String line : lines) {
if (line.contains(".getBrowserVersionNumeric()")) {
addFailure(".getBrowserVersionNumeric() should not be used, please use .hasFeature(): "
+ relativePath + ", line: " + index);
}
index++;
}
}
}

/**
* Verifies that \@Alerts is correctly defined.
*/
Expand Down
77 changes: 77 additions & 0 deletions src/test/java/org/htmlunit/archunit/ArchitectureTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import java.util.function.Supplier;

import org.apache.commons.lang3.StringUtils;
import org.htmlunit.BrowserVersion;
import org.htmlunit.javascript.configuration.JsxClass;
import org.htmlunit.javascript.configuration.JsxClasses;
import org.htmlunit.javascript.configuration.JsxConstant;
Expand Down Expand Up @@ -328,6 +329,82 @@ public void check(final JavaMethod method, final ConditionEvents events) {
.doNotHaveFullyQualifiedName("org.htmlunit.platform.util.XmlUtilsSunXercesHelper")
.should().dependOnClassesThat().resideInAnyPackage("com.sun.org.apache.xerces..");

/**
* Do not use BrowserVersion.isChrome().
*/
@ArchTest
public static final ArchRule isChrome = noClasses()
.that()
.doNotHaveFullyQualifiedName("org.htmlunit.BrowserVersion")
.and().doNotHaveFullyQualifiedName("org.htmlunit.javascript.configuration.AbstractJavaScriptConfiguration")
.and().doNotHaveFullyQualifiedName("org.htmlunit.css.BrowserConfiguration$Chrome")
.and().doNotHaveFullyQualifiedName("org.htmlunit.css.BrowserConfiguration$ChromeAndEdge")
.and().doNotHaveFullyQualifiedName("org.htmlunit.css.BrowserConfiguration$ChromeAndEdgeAndFirefox")
.and().doNotHaveFullyQualifiedName("org.htmlunit.css.BrowserConfiguration$ChromeAndEdgeNotIterable")
.and().doNotHaveFullyQualifiedName("org.htmlunit.javascript.host.dom.Document")
.and().doNotHaveFullyQualifiedName("org.htmlunit.javascript.host.intl.DateTimeFormat")
.and().doNotHaveFullyQualifiedName("org.htmlunit.javascript.host.intl.NumberFormat")
.should().callMethod(BrowserVersion.class, "isChrome", new Class[] {});

/**
* Do not use BrowserVersion.isEdge().
*/
@ArchTest
public static final ArchRule isEdge = noClasses()
.that()
.doNotHaveFullyQualifiedName("org.htmlunit.BrowserVersion")
.and().doNotHaveFullyQualifiedName("org.htmlunit.javascript.configuration.AbstractJavaScriptConfiguration")
.and().doNotHaveFullyQualifiedName("org.htmlunit.css.BrowserConfiguration$Edge")
.and().doNotHaveFullyQualifiedName("org.htmlunit.css.BrowserConfiguration$Chrome")
.and().doNotHaveFullyQualifiedName("org.htmlunit.css.BrowserConfiguration$ChromeAndEdge")
.and().doNotHaveFullyQualifiedName("org.htmlunit.css.BrowserConfiguration$ChromeAndEdgeAndFirefox")
.and().doNotHaveFullyQualifiedName("org.htmlunit.css.BrowserConfiguration$ChromeAndEdgeNotIterable")
.and().doNotHaveFullyQualifiedName("org.htmlunit.javascript.host.dom.Document")
.and().doNotHaveFullyQualifiedName("org.htmlunit.javascript.host.intl.DateTimeFormat")
.and().doNotHaveFullyQualifiedName("org.htmlunit.javascript.host.intl.NumberFormat")
.should().callMethod(BrowserVersion.class, "isEdge", new Class[] {});

/**
* Do not use BrowserVersion.isFirefox().
*/
@ArchTest
public static final ArchRule isFirefox = noClasses()
.that()
.doNotHaveFullyQualifiedName("org.htmlunit.BrowserVersion")
.and().doNotHaveFullyQualifiedName("org.htmlunit.javascript.configuration.AbstractJavaScriptConfiguration")
.and().doNotHaveFullyQualifiedName("org.htmlunit.css.BrowserConfiguration$FF")
.and().doNotHaveFullyQualifiedName("org.htmlunit.css.BrowserConfiguration$FFNotIterable")
.and().doNotHaveFullyQualifiedName("org.htmlunit.css.BrowserConfiguration$FFESR")
.and().doNotHaveFullyQualifiedName("org.htmlunit.css.BrowserConfiguration$FFLatest")
.and().doNotHaveFullyQualifiedName("org.htmlunit.css.BrowserConfiguration$ChromeAndEdgeAndFirefox")
.should().callMethod(BrowserVersion.class, "isFirefox", new Class[] {});

/**
* Do not use BrowserVersion.isFirefoxESR().
*/
@ArchTest
public static final ArchRule isFirefoxESR = noClasses()
.that()
.doNotHaveFullyQualifiedName("org.htmlunit.BrowserVersion")
.and().doNotHaveFullyQualifiedName("org.htmlunit.javascript.configuration.AbstractJavaScriptConfiguration")
.and().doNotHaveFullyQualifiedName("org.htmlunit.javascript.host.intl.DateTimeFormat")
.and().doNotHaveFullyQualifiedName("org.htmlunit.javascript.host.intl.NumberFormat")
.should().callMethod(BrowserVersion.class, "isFirefoxESR", new Class[] {});

/**
* Do not use BrowserVersion.isIE().
*/
@ArchTest
public static final ArchRule isIE = noClasses()
.that()
.doNotHaveFullyQualifiedName("org.htmlunit.javascript.configuration.AbstractJavaScriptConfiguration")
.and().doNotHaveFullyQualifiedName("org.htmlunit.css.BrowserConfiguration$IE")
.and().doNotHaveFullyQualifiedName("org.htmlunit.css.BrowserConfiguration$IENotIterable")
.and().doNotHaveFullyQualifiedName("org.htmlunit.javascript.host.dom.Document")
.and().doNotHaveFullyQualifiedName("org.htmlunit.javascript.host.intl.DateTimeFormat")
.and().doNotHaveFullyQualifiedName("org.htmlunit.javascript.host.intl.NumberFormat")
.should().callMethod(BrowserVersion.class, "isIE", new Class[] {});

/**
* Make sure the httpclient is only accessed from the adapter classes.
*/
Expand Down

0 comments on commit 45be16f

Please sign in to comment.