Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
8 changes: 4 additions & 4 deletions .github/workflows/conformance-report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -115,10 +115,10 @@ jobs:
O="$COMPARISON_REPORT_NAME"
ARGS="-t $T -d $D -bf $BF -bt $BT -tf $TF -tt $TT -o $O"
gradle :test:partiql-tests-runner:run --args="$ARGS"
- name: "Artifact CROSS-COMMIT-REPORT-PARTIQLCORE-EXTENDED Report (appends to comparison_report.md)"
- name: "Artifact CROSS-COMMIT-REPORT-PARTIQLEXTENDED Report (appends to comparison_report.md)"
continue-on-error: true
run: |
T="CROSS-COMMIT-REPORT-PARTIQLCORE-EXTENDED"
T="CROSS-COMMIT-REPORT-PARTIQLEXTENDED"
D="PartiQLExtended"
BF="$GITHUB_WORKSPACE/artifact/partiqlextended/$CONFORMANCE_REPORT_NAME"
BT="${{ github.event.pull_request.base.sha }}"
Expand Down Expand Up @@ -155,10 +155,10 @@ jobs:
L="$COMMENT_SIZE_LIMIT"
ARGS="-t $T -d $D -bf $BF -bt $BT -tf $TF -tt $TT -o $O -l $L"
gradle :test:partiql-tests-runner:run --args="$ARGS"
- name: "Comment CROSS-COMMIT-REPORT-PARTIQLCORE-EXTENDED (appends to comparison_report_limited.md)"
- name: "Comment CROSS-COMMIT-REPORT-PARTIQLEXTENDED (appends to comparison_report_limited.md)"
continue-on-error: true
run: |
T="CROSS-COMMIT-REPORT-PARTIQLCORE-EXTENDED"
T="CROSS-COMMIT-REPORT-PARTIQLEXTENDED"
D="PartiQLExtended"
BF="$GITHUB_WORKSPACE/artifact/partiqlextended/$CONFORMANCE_REPORT_NAME"
BT="${{ github.event.pull_request.base.sha }}"
Expand Down
2 changes: 1 addition & 1 deletion test/partiql-tests
Submodule partiql-tests updated 31 files
+11 −2 docs/partiql-tests-schema-proposal.md
+72 −9 partiql-tests-data-extended/eval/primitives/functions/date_add.ion
+25 −0 partiql-tests-data-extended/eval/primitives/time.ion
+34 −0 partiql-tests-data-extended/eval/primitives/timestamp.ion
+4 −4 partiql-tests-data-extended/eval/query/group-by/group-by.ion
+1 −1 partiql-tests-data/eval-equiv/rfc/0007.ion
+2 −2 partiql-tests-data/eval/ion/primitives/path.ion
+1 −1 partiql-tests-data/eval/ion/primitives/symbol.ion
+4 −4 partiql-tests-data/eval/ion/query/group-by/group-by.ion
+8 −8 partiql-tests-data/eval/ion/query/order-by.ion
+28 −14 partiql-tests-data/eval/primitives/functions/char_length.ion
+1 −1 partiql-tests-data/eval/primitives/functions/extract.ion
+20 −11 partiql-tests-data/eval/primitives/functions/lower.ion
+0 −12 partiql-tests-data/eval/primitives/functions/mod.ion
+24 −12 partiql-tests-data/eval/primitives/functions/substring.ion
+6 −3 partiql-tests-data/eval/primitives/functions/trim.ion
+24 −13 partiql-tests-data/eval/primitives/functions/upper.ion
+2 −2 partiql-tests-data/eval/primitives/interval.ion
+34 −18 partiql-tests-data/eval/primitives/naughty-strings.ion
+58 −0 partiql-tests-data/eval/primitives/operators/minus.ion
+56 −2 partiql-tests-data/eval/primitives/operators/plus.ion
+2 −2 partiql-tests-data/eval/primitives/path.ion
+4 −2 partiql-tests-data/eval/primitives/string.ion
+141 −0 partiql-tests-data/eval/primitives/time.ion
+121 −0 partiql-tests-data/eval/primitives/timestamp.ion
+4 −4 partiql-tests-data/eval/query/group-by/group-by.ion
+117 −0 partiql-tests-data/eval/query/order-by.ion
+2 −1 partiql-tests-data/partiql-tests-schema.isl
+1 −0 partiql-tests-validator/build.gradle.kts
+56 −1 partiql-tests-validator/src/test/kotlin/org/partiql/tests/validator/PartiQLTestDataValidator.kt
+99 −0 partiql-tests-validator/src/test/kotlin/org/partiql/tests/validator/TestLoader.kt
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,17 @@ class ReportAnalyzer(
const val TARGET = "TARGET"
}

private val firstTotal = first.passingSet + first.failingSet + first.ignoredSet
private val passingInBoth = first.passingSet.intersect(second.passingSet)
private val failingInBoth = first.failingSet.intersect(second.failingSet)
private val ignoredInBoth = first.ignoredSet.intersect(second.ignoredSet)
private val passingFirstFailingSecond = first.passingSet.intersect(second.failingSet)
private val passingFirstIgnoredSecond = first.passingSet.intersect(second.ignoredSet)
private val failureFirstPassingSecond = first.failingSet.intersect(second.passingSet)
private val ignoredFirstPassingSecond = first.ignoredSet.intersect(second.passingSet)
private val newPassing = second.passingSet - firstTotal
private val newFailing = second.failingSet - firstTotal
private val newIgnored = second.ignoredSet - firstTotal
private val firstPassingSize = first.passingSet.size
private val firstFailingSize = first.failingSet.size
private val firstIgnoreSize = first.ignoredSet.size
Expand All @@ -46,6 +50,7 @@ class ReportAnalyzer(
appendTitle(this)
appendTable(this)
appendSummary(this)
appendOptionalNewTests(this, limit)
appendOptionalNowFailingTests(this, limit, passingFirstFailingSecond, "FAILING")
appendOptionalNowFailingTests(this, limit, passingFirstIgnoredSecond, "IGNORED")
appendOptionalNowPassingTests(this, limit, failureFirstPassingSecond, "FAILING")
Expand Down Expand Up @@ -104,11 +109,14 @@ class ReportAnalyzer(
out.appendMarkdown("## Testing Details")
out.appendLine("- **Base Commit**: ${first.commitId}")
out.appendLine("- **Target Commit**: ${second.commitId}")

out.appendLine("- **Java Version**: ${System.getProperty("java.version")}")
out.appendMarkdown("## Result Details")
if (passingFirstFailingSecond.isNotEmpty() || passingFirstIgnoredSecond.isNotEmpty()) {
out.appendLine("- **$ICON_X REGRESSION DETECTED. See *Now Failing/Ignored Tests*. $ICON_X**")
}
out.appendLine("- **New passing tests**: ${newPassing.count()}")
out.appendLine("- **New failing tests**: ${newFailing.count()}")
out.appendLine("- **New ignored tests**: ${newIgnored.count()}")
out.appendLine("- **Passing in both**: ${passingInBoth.count()}")
out.appendLine("- **Failing in both**: ${failingInBoth.count()}")
out.appendLine("- **Ignored in both**: ${ignoredInBoth.count()}")
Expand All @@ -118,6 +126,34 @@ class ReportAnalyzer(
out.appendLine("- **IGNORED in $BASE but now PASSING in $TARGET**: ${ignoredFirstPassingSecond.count()}")
}

private fun appendOptionalNewTests(out: Appendable, limit: Int) {
if (this.newPassing.isNotEmpty() || this.newFailing.isNotEmpty() || this.newIgnored.isNotEmpty()) {
out.appendMarkdown("## New Tests Added")
// character count limitation with comments in GitHub
// also, not ideal to list out hundreds of test names
if (newPassing.size + newFailing.size + newIgnored.size < limit) {
out.appendMarkdown("<details><summary>Click here to see</summary>")
var i: Int = 0
out.appendLine("### Passing $ICON_CHECK")
newPassing.forEach { testName ->
out.appendLine("${i++}. $testName")
}
out.appendLine("### Failing $ICON_X")
newFailing.forEach { testName ->
out.appendLine("${i++}. $testName")
}
out.appendLine("### Ignored $ICON_DIAMOND_ORANGE")
newIgnored.forEach { testName ->
out.appendLine("${i++}. $testName")
}

out.appendMarkdown("</details>")
} else {
out.appendMarkdown("The complete list can be found in GitHub CI summary, either from Step Summary or in the Artifact.")
}
}
}

private fun appendOptionalNowFailingTests(out: Appendable, limit: Int, set: Set<String>, description: String) {
if (set.isNotEmpty()) {
out.appendMarkdown("## Now $description Tests $ICON_X")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package org.partiql.runner

import org.junit.jupiter.api.TestInstance
import org.partiql.runner.test.TestRunner

@TestInstance(TestInstance.Lifecycle.PER_CLASS) // Annotation is need to avoid skipList being recreated for each test.
Comment on lines +3 to +6
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Was this an issue before?

Copy link
Contributor Author

@xd1313113 xd1313113 Oct 1, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No real issue for now. Can save a bit of time. Do you want to leave it as it was or is It Ok

abstract class ConformanceTestBase<T, V> {
abstract val runner: TestRunner<T, V>

Expand Down
Loading