Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
6536a9c
[bugfix] Fix AssertTypeParser for node kind tests like element(name)
joewiz Mar 11, 2026
63197ae
[feature] Add QT4 test suite and XQuery Update support
joewiz Mar 5, 2026
4d7d002
[feature] Add XQFTTS 1.0.4 (W3C Full Text Test Suite) support
joewiz Mar 8, 2026
1afcac9
[feature] Register EXPath File module for expath-file test set
joewiz Mar 11, 2026
7b5cb15
[feature] Support custom local Maven repository via -Dmaven.repo.local
joewiz Mar 8, 2026
8b7d925
[ci] Fix assembly build and execution for exist-expath dependency
joewiz Mar 14, 2026
2b02d39
[feature] Implement XQTS sandpit support for writable test directories
joewiz Mar 12, 2026
e28eb40
[bugfix] Fix XML comparison and copy-modify-return result handling
joewiz Mar 8, 2026
293ddbc
[bugfix] Fix XMLUnit comparison and whitespace handling in assertions
joewiz Mar 6, 2026
10899c2
[bugfix] Use admin authentication for embedded server connections
joewiz Mar 14, 2026
54d49d5
[bugfix] Pass result as context item for single-item assert evaluations
joewiz Mar 14, 2026
caf747f
[bugfix] Preserve namespace URI in error code comparison for non-stan…
joewiz Mar 12, 2026
2f9d839
[bugfix] Handle AllOf assertions containing Error in test case evalua…
joewiz Mar 12, 2026
d01842b
[bugfix] Treat assertion evaluation errors as failures, not runner er…
joewiz Mar 12, 2026
8ac839a
[refactor] Add raw serialization and serialization properties to Exis…
joewiz Mar 14, 2026
becbb08
[bugfix] Propagate static base URI to assertion evaluation context
joewiz Mar 14, 2026
6f3592d
[feature] Add stall detection watchdog with shutdown timeout
joewiz Mar 11, 2026
8b52032
[bugfix] Fix test set completion detection and add shutdown safeguards
joewiz Mar 16, 2026
5f31a1e
[feature] Add batch runner with timing reports
joewiz Mar 15, 2026
de9c36d
[feature] Add parallel batch execution to runner script
joewiz Mar 19, 2026
410f07e
[bugfix] Fix parallel batch execution — streams exiting after first b…
joewiz Mar 20, 2026
a590bcb
[bugfix] Normalize old map syntax (:=) in XQTS assertion and query ex…
joewiz Mar 22, 2026
c8eef45
Revert "[bugfix] Normalize old map syntax (:=) in XQTS assertion and …
joewiz Mar 22, 2026
ceddbdd
[feature] Add jstack thread dump capture on batch timeout
joewiz Mar 25, 2026
517b89a
[bugfix] Add -XX:+ExitOnOutOfMemoryError to batch runner JVM args
joewiz Mar 25, 2026
7c22916
[feature] Add PARSER env var support for parser comparison runs
joewiz Mar 26, 2026
98ae8e8
[bugfix] Exclude all Jetty transitive dependencies for Jetty 12 compa…
joewiz Mar 27, 2026
65e9eb5
[bugfix] Fix Not assertion parsing and serializationMatches query bui…
joewiz Mar 27, 2026
fe5e6bf
[bugfix] Fix Not assertion parsing and serialization option extraction
joewiz Mar 30, 2026
80b00e0
[bugfix] Add configurable batch timeout and process cleanup
joewiz Mar 30, 2026
1c8c58e
[bugfix] Increase default batch timeout back to 300s
joewiz Mar 30, 2026
f46de9f
[bugfix] Don't count test failures as batch failures
joewiz Mar 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,4 @@ jobs:
run: sbt -v assembly
- name: Test
shell: bash
run: target/scala-2.13/exist-xqts-runner-assembly-*-SNAPSHOT.jar --xqts-version HEAD --test-set fn-current-date
run: java -jar target/scala-2.13/exist-xqts-runner-assembly-*-SNAPSHOT.jar --xqts-version HEAD --test-set fn-current-date
42 changes: 34 additions & 8 deletions build.sbt
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
import ReleaseTransformations._

// When using a custom local Maven repo (-Dmaven.repo.local), disable coursier
// to prevent it from resolving SNAPSHOT artifacts from ~/.m2/repository instead
// of the specified directory. Coursier has a hardcoded ~/.m2/repository fallback
// that cannot be overridden via sbt resolver settings.
ThisBuild / useCoursier := !sys.props.contains("maven.repo.local")

name := "exist-xqts-runner"

organization := "org.exist-db"
Expand Down Expand Up @@ -60,7 +66,8 @@ libraryDependencies ++= {
"org.apache.ant" % "ant-junit" % "1.10.15", // used for formatting junit style report

"net.sf.saxon" % "Saxon-HE" % "9.9.1-8",
"org.exist-db" % "exist-core" % existV changing() exclude("org.eclipse.jetty.toolchain", "jetty-jakarta-servlet-api"),
"org.exist-db" % "exist-core" % existV changing(),
"org.exist-db" % "exist-expath" % existV changing(),
"org.xmlunit" % "xmlunit-core" % "2.11.0",

"org.slf4j" % "slf4j-api" % "2.0.17",
Expand All @@ -70,19 +77,34 @@ libraryDependencies ++= {

autoAPIMappings := true

// we prefer Saxon over Xalan
// Exclude transitive dependencies the runner doesn't need.
// Jetty exclusions allow building against both Jetty 11 (develop) and Jetty 12 (next) —
// Ivy can't resolve Jetty 12 Maven POM constructs, and the runner doesn't use Jetty anyway.
excludeDependencies ++= Seq(
ExclusionRule("xalan", "xalan"),
ExclusionRule("org.eclipse.jetty"),
ExclusionRule("org.eclipse.jetty.toolchain"),
ExclusionRule("org.eclipse.jetty.websocket"),
ExclusionRule("org.eclipse.jetty.ee10"),
ExclusionRule("org.eclipse.jetty.ee10.websocket"),

ExclusionRule("org.hamcrest", "hamcrest-core"),
ExclusionRule("org.hamcrest", "hamcrest-library")
)

resolvers ++= Seq(
Resolver.mavenLocal,
"eXist-db Releases" at "https://repo.exist-db.org/repository/exist-db/",
"Github Package Registry" at "https://maven.pkg.github.com/exist-db/exist",
)
resolvers ++= {
// Support per-worktree Maven repos: pass -Dmaven.repo.local=/path/to/.m2-repo
// Uses MavenCache (file-based) instead of "at" (URL-based) for proper local resolution.
// When a custom repo is set, skip Resolver.mavenLocal to avoid SNAPSHOT conflicts
// across concurrent builds on the same machine.
val customMavenLocal = sys.props.get("maven.repo.local").map { path =>
MavenCache("Custom Local Maven", new java.io.File(path))
}
customMavenLocal.toSeq ++ (if (customMavenLocal.isDefined) Seq.empty else Seq(Resolver.mavenLocal)) ++ Seq(
"eXist-db Releases" at "https://repo.exist-db.org/repository/exist-db/",
"Github Package Registry" at "https://maven.pkg.github.com/exist-db/exist",
)
}

javacOptions ++= Seq("-source", "21", "-target", "21")

Expand Down Expand Up @@ -124,6 +146,7 @@ assembly / assemblyMergeStrategy := {
case PathList("META-INF", "versions", "9" ,"module-info.class") => MergeStrategy.discard
case PathList("org", "exist", "xquery", "lib", "xqsuite", "xqsuite.xql") => MergeStrategy.first
case x if x.equals("module-info.class") || x.endsWith(s"${java.io.File.separatorChar}module-info.class") => MergeStrategy.discard
case "version.properties" => MergeStrategy.first
case x =>
val oldStrategy = (assembly / assemblyMergeStrategy).value
oldStrategy(x)
Expand All @@ -132,7 +155,10 @@ assembly / assemblyMergeStrategy := {
// make the assembly executable with basic shell scripts
import sbtassembly.AssemblyPlugin.defaultUniversalScript

assemblyPrependShellScript := Some(defaultUniversalScript(shebang = false))
// Skip prepend script in CI — the prepended shell script can corrupt the ZIP
// central directory offsets on certain platforms, causing "An unexpected error
// occurred while trying to open file" from the Java launcher.
assemblyPrependShellScript := (if (sys.env.contains("CI")) None else Some(defaultUniversalScript(shebang = false)))


// Add assembly to publish step
Expand Down
Loading
Loading