This is an automated email from the ASF dual-hosted git repository.
zhouyuan pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gluten.git
The following commit(s) were added to refs/heads/main by this push:
new 7edf7f6d58 [VL][CI] Show positive changes in Iceberg CI log (#13365)
7edf7f6d58 is described below
commit 7edf7f6d587a7c92e4f69767e3b13edb36dbf62f
Author: inf / Hazmi <[email protected]>
AuthorDate: Tue Oct 20 11:57:46 2026 +0300
[VL][CI] Show positive changes in Iceberg CI log (#13365)
---
.github/workflows/util/iceberg-upstream/compare.py | 5 +--
.../test/python/test_compare.py | 51 ++++++++++++++++++++++
2 files changed, 53 insertions(+), 3 deletions(-)
diff --git a/.github/workflows/util/iceberg-upstream/compare.py
b/.github/workflows/util/iceberg-upstream/compare.py
index 5ffbf182c8..682f74bea3 100644
--- a/.github/workflows/util/iceberg-upstream/compare.py
+++ b/.github/workflows/util/iceberg-upstream/compare.py
@@ -372,13 +372,14 @@ def main():
)
for title, rows in (
("Regressions", result["regressions"]),
+ ("Improvements", result["improvements"]),
("Other changes (informational)", result["highlights"]),
("Whitelisted changes (ignored)", result["ignored_changes"]),
):
if not rows:
continue
lines.extend(["", f"### {title}: {len(rows)}", ""])
- for row in rows[:20]:
+ for row in rows:
detail = row["reason"]
if row.get("lost_native"):
detail += "; native nodes lost: " + ",
".join(row["lost_native"])
@@ -387,8 +388,6 @@ def main():
lines.append(
f"- `{row['class']}#{row['name']}`: {row['before']} →
{row['after']} ({detail})"
)
- if len(rows) > 20:
- lines.append("See the comparison artifact for the remaining
changes.")
text = "\n".join(lines) + "\n"
print(text)
if os.environ.get("GITHUB_STEP_SUMMARY"):
diff --git a/gluten-ut/src-iceberg-upstream/test/python/test_compare.py
b/gluten-ut/src-iceberg-upstream/test/python/test_compare.py
index a3acbecb6b..e20a09a853 100644
--- a/gluten-ut/src-iceberg-upstream/test/python/test_compare.py
+++ b/gluten-ut/src-iceberg-upstream/test/python/test_compare.py
@@ -305,6 +305,57 @@ class ComparisonTest(unittest.TestCase):
diagnostic = json.loads((root / "diff.json").read_text())
self.assertTrue(diagnostic["validation_errors"])
+ def test_gate_prints_every_change_in_logs_and_summary(self):
+ base, current = report("PASSED_NATIVE"), report("PASSED_NATIVE")
+ expected = []
+ for method, before, after, reason in (
+ ("regression", "PASSED_FALLBACK", "FAILED", "STATUS_REGRESSION"),
+ ("improvement", "PASSED_FALLBACK", "PASSED_NATIVE",
"STATUS_CHANGE"),
+ ("informational", "PASSED_FALLBACK", "PASSED_FALLBACK",
"EVIDENCE_CHANGE"),
+ ("ignored", "PASSED_FALLBACK", "FAILED", "STATUS_REGRESSION"),
+ ):
+ for invocation in range(1, 22):
+ name = f"{method}()[{invocation}]"
+ base["tests"].extend(report(before, name)["tests"])
+ current["tests"].extend(report(after, name)["tests"])
+ if method == "informational":
+ current["tests"][-1]["fallback"] =
["IcebergScanTransformer"]
+ expected.append(
+ f"- `org.apache.iceberg.TestScan#{name}`: {before} →
{after} ({reason})"
+ )
+ with tempfile.TemporaryDirectory() as temporary:
+ root = Path(temporary)
+ (root / "base.json").write_text(json.dumps(base))
+ (root / "head.json").write_text(json.dumps(current))
+ config = root / "flaky.csv"
+
config.write_text("class,method\norg.apache.iceberg.TestScan,ignored\n")
+ summary = root / "summary.md"
+ result = subprocess.run(
+ [
+ sys.executable,
+ str(SCRIPT),
+ str(root / "base.json"),
+ str(root / "head.json"),
+ "--output",
+ str(root / "diff.json"),
+ "--flaky-tests",
+ str(config),
+ ],
+ capture_output=True,
+ text=True,
+ env=dict(os.environ, GITHUB_STEP_SUMMARY=str(summary)),
+ )
+ self.assertEqual(1, result.returncode, result.stderr +
result.stdout)
+ for output in (result.stdout, summary.read_text()):
+ self.assertIn("21 regressions, 21 improvements", output)
+ self.assertIn("### Improvements: 21", output)
+ self.assertEqual(
+ sorted(expected),
+ sorted(
+ line for line in output.splitlines() if
line.startswith("- ")
+ ),
+ )
+
def test_new_tests_cannot_add_failures(self):
current = report("PASSED_NATIVE")
current["tests"].extend(report("FAILED", "new")["tests"])
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]