Skip to content

Commit

Permalink
[TEMP BACKPORT] TEMPORARY BACKPORT OF: Fix a bug in XSuite reporting …
Browse files Browse the repository at this point in the history
…too many failures - #4648
  • Loading branch information
adamretter committed Dec 10, 2022
1 parent bc2e6c9 commit dbc978b
Show file tree
Hide file tree
Showing 12 changed files with 43 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
import org.junit.runner.Runner;

import java.io.IOException;
import java.lang.annotation.Annotation;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
Expand All @@ -57,7 +56,6 @@
* @author Adam Retter
*/
public abstract class AbstractTestRunner extends Runner {
protected static final Annotation[] EMPTY_ANNOTATIONS = new Annotation[0];

protected final Path path;
protected final boolean parallel;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@

package org.exist.test.runner;

import org.exist.xquery.Annotation;
import org.exist.xquery.XPathException;
import org.exist.xquery.XQueryContext;
import org.exist.xquery.functions.map.MapType;
Expand Down Expand Up @@ -56,7 +55,7 @@ public Sequence eval(final Sequence contextSequence, final Item contextItem) thr
final Sequence arg2 = getCurrentArguments().length == 2 ? getCurrentArguments()[1] : null;
final MapType assumption = arg2 != null ? (MapType)arg2.itemAt(0) : null;

final Description description = Description.createTestDescription(suiteName, name, new Annotation[0]);
final Description description = createTestDescription(name);

// notify JUnit
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@

package org.exist.test.runner;

import org.exist.xquery.Annotation;
import org.exist.xquery.ErrorCodes;
import org.exist.xquery.XPathException;
import org.exist.xquery.XQueryContext;
Expand Down Expand Up @@ -57,7 +56,7 @@ public Sequence eval(final Sequence contextSequence, final Item contextItem) thr
final Sequence arg2 = getCurrentArguments().length == 2 ? getCurrentArguments()[1] : null;
final MapType error = arg2 != null ? (MapType)arg2.itemAt(0) : null;

final Description description = Description.createTestDescription(suiteName, name, new Annotation[0]);
final Description description = createTestDescription(name);

// notify JUnit
try {
Expand Down Expand Up @@ -121,7 +120,7 @@ private XPathException errorMapAsXPathException(final MapType errorMap) throws X
private static final Pattern PTN_CAUSED_BY = Pattern.compile("Caused by:\\s([a-zA-Z0-9_$\\.]+)(?::\\s(.+))?");
private static final Pattern PTN_AT = Pattern.compile("at\\s((?:[a-zA-Z0-9_$]+)(?:\\.[a-zA-Z0-9_$]+)*)\\.((?:[a-zA-Z0-9_$-]+)|(?:<init>))\\(([a-zA-Z0-9_]+\\.java):([0-9]+)\\)");

protected StackTraceElement[] convertStackTraceElements(final Sequence seqJavaStackTrace) throws XPathException {
protected @Nullable StackTraceElement[] convertStackTraceElements(final Sequence seqJavaStackTrace) throws XPathException {
StackTraceElement[] traceElements = null;

final Matcher matcherAt = PTN_AT.matcher("");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
package org.exist.test.runner;

import org.exist.util.serializer.XQuerySerializer;
import org.exist.xquery.Annotation;
import org.exist.xquery.XPathException;
import org.exist.xquery.XQueryContext;
import org.exist.xquery.functions.map.MapType;
Expand Down Expand Up @@ -67,7 +66,7 @@ public Sequence eval(final Sequence contextSequence, final Item contextItem) thr
final Sequence arg3 = getCurrentArguments()[2];
final MapType actual = (MapType)arg3.itemAt(0);

final Description description = Description.createTestDescription(suiteName, name, new Annotation[0]);
final Description description = createTestDescription(name);

// notify JUnit
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@

package org.exist.test.runner;

import org.exist.xquery.Annotation;
import org.exist.xquery.XPathException;
import org.exist.xquery.XQueryContext;
import org.exist.xquery.value.Item;
Expand All @@ -46,7 +45,8 @@ public Sequence eval(final Sequence contextSequence, final Item contextItem) thr
final String name = arg1.itemAt(0).getStringValue();

// notify JUnit
notifier.fireTestFinished(Description.createTestDescription(suiteName, name, new Annotation[0]));
final Description description = createTestDescription(name);
notifier.fireTestFinished(description);

return Sequence.EMPTY_SEQUENCE;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@

package org.exist.test.runner;

import org.exist.xquery.Annotation;
import org.exist.xquery.XPathException;
import org.exist.xquery.XQueryContext;
import org.exist.xquery.value.Item;
Expand All @@ -46,7 +45,8 @@ public Sequence eval(final Sequence contextSequence, final Item contextItem) thr
final String name = arg1.itemAt(0).getStringValue();

// notify JUnit
notifier.fireTestIgnored(Description.createTestDescription(suiteName, name, new Annotation[0]));
final Description description = createTestDescription(name);
notifier.fireTestIgnored(description);

return Sequence.EMPTY_SEQUENCE;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@

package org.exist.test.runner;

import org.exist.xquery.Annotation;
import org.exist.xquery.XPathException;
import org.exist.xquery.XQueryContext;
import org.exist.xquery.value.Item;
Expand All @@ -46,7 +45,8 @@ public Sequence eval(final Sequence contextSequence, final Item contextItem) thr
final String name = arg1.itemAt(0).getStringValue();

// notify JUnit
notifier.fireTestStarted(Description.createTestDescription(suiteName, name, new Annotation[0]));
final Description description = createTestDescription(name);
notifier.fireTestStarted(description);

return Sequence.EMPTY_SEQUENCE;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,11 @@
import org.exist.xquery.UserDefinedFunction;
import org.exist.xquery.XQueryContext;
import org.exist.xquery.value.FunctionParameterSequenceType;
import org.exist.xquery.value.Sequence;
import org.junit.runner.Description;
import org.junit.runner.notification.RunNotifier;

import javax.xml.XMLConstants;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import static org.exist.xquery.FunctionDSL.functionSignature;
import static org.exist.xquery.FunctionDSL.returnsNothing;

Expand Down Expand Up @@ -67,4 +64,15 @@ public void accept(final ExpressionVisitor visitor) {
}
visited = true;
}

/**
* Create a JUnit description of the test.
*
* @param name the name of the test.
*
* @return the test description.
*/
protected Description createTestDescription(final String name) {
return Description.createTestDescription(suiteName, name);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -176,9 +176,9 @@ private String getSuiteName() {
@Override
public Description getDescription() {
final String suiteName = checkDescription(info, getSuiteName());
final Description description = Description.createSuiteDescription(suiteName, EMPTY_ANNOTATIONS);
final Description description = Description.createSuiteDescription(suiteName);
for (final String childName : info.getChildNames()) {
description.addChild(Description.createTestDescription(suiteName, checkDescription(info, childName), EMPTY_ANNOTATIONS));
description.addChild(Description.createTestDescription(suiteName, checkDescription(info, childName)));
}
return description;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ private static XQueryTestInfo extractTestInfo(final Path path) throws Initializa
final FunctionSignature localFunctionSignature = localFunction.getSignature();

String testName = null;
int testArity = 0;
boolean isTest = false;

final Annotation[] annotations = localFunctionSignature.getAnnotations();
Expand Down Expand Up @@ -146,6 +147,7 @@ private static XQueryTestInfo extractTestInfo(final Path path) throws Initializa
if (isTest) {
if (testName == null) {
testName = localFunctionSignature.getName().getLocalPart();
testArity = localFunctionSignature.getArgumentCount();
}

if (moduleNsPrefix == null) {
Expand All @@ -155,7 +157,7 @@ private static XQueryTestInfo extractTestInfo(final Path path) throws Initializa
moduleNsUri = localFunctionSignature.getName().getNamespaceURI();
}

testFunctions.add(new XQueryTestInfo.TestFunctionDef(testName));
testFunctions.add(new XQueryTestInfo.TestFunctionDef(testName, testArity));
}
} // end while

Expand Down Expand Up @@ -217,9 +219,9 @@ private void pathToPackageName(String path, final StringBuilder buffer) {
@Override
public Description getDescription() {
final String suiteName = checkDescription(this, getSuiteName());
final Description description = Description.createSuiteDescription(suiteName, EMPTY_ANNOTATIONS);
final Description description = Description.createSuiteDescription(suiteName);
for (final XQueryTestInfo.TestFunctionDef testFunctionDef : info.getTestFunctions()) {
description.addChild(Description.createTestDescription(suiteName, checkDescription(testFunctionDef, testFunctionDef.getLocalName()), EMPTY_ANNOTATIONS));
description.addChild(Description.createTestDescription(suiteName, checkDescription(testFunctionDef, testFunctionDef.getLocalName())));
}
return description;
}
Expand Down Expand Up @@ -280,14 +282,20 @@ public List<TestFunctionDef> getTestFunctions() {

private static class TestFunctionDef {
private final String localName;
private final int arity;

private TestFunctionDef(final String localName) {
private TestFunctionDef(final String localName, final int arity) {
this.localName = localName;
this.arity = arity;
}

public String getLocalName() {
return localName;
}

public int getArity() {
return arity;
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import org.exist.xquery.*;
import org.exist.xquery.value.*;

import javax.annotation.Nullable;
import java.io.*;
import java.net.URI;
import java.net.URISyntaxException;
Expand Down Expand Up @@ -78,14 +79,15 @@ public FunUnparsedText(final XQueryContext context, final FunctionSignature sign

@Override
public Sequence eval(Sequence[] args, Sequence contextSequence) throws XPathException {
final String encoding = args.length == 2 ? args[1].getStringValue() : null;
@Nullable final String encoding = args.length == 2 ? args[1].getStringValue() : null;
if (!args[0].isEmpty()) {
final String href = args[0].getStringValue();
if (isCalledAs("unparsed-text-lines")) {
return readLines(args[0].getStringValue(), encoding);
return readLines(href, encoding);
} else if (isCalledAs("unparsed-text-available")) {
return BooleanValue.valueOf(contentAvailable(args[0].getStringValue(), encoding));
return BooleanValue.valueOf(contentAvailable(href, encoding));
} else {
return new StringValue(this, readContent(args[0].getStringValue(), encoding));
return new StringValue(this, readContent(href, encoding));
}
}
return Sequence.EMPTY_SEQUENCE;
Expand Down
2 changes: 1 addition & 1 deletion exist-parent/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -761,7 +761,7 @@
</dependencies>
<configuration>
<forkCount>2C</forkCount>
<!-- Setting `reuseForks` to `true` greatly speeds up execution of the the test suite.
<!-- Setting `reuseForks` to `true` greatly speeds up execution of the test suite.
However it can make it hard to diagnose problems if tests leak state; If you experience
such a problem you may want to set it to `false` whilst debugging -->
<reuseForks>true</reuseForks>
Expand Down

0 comments on commit dbc978b

Please sign in to comment.