diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 253a139..ad0f525 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,14 +37,40 @@ jobs: sudo apt-get update sudo apt-get install -y libxdo-dev libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev libsoup-3.0-dev libjavascriptcoregtk-4.1-dev - - name: Check - run: cargo check --workspace - - - name: Test (library crates) - run: cargo test -p presswerk-core -p presswerk-security -p presswerk-document -p presswerk-print - - - name: Clippy - run: cargo clippy --workspace -- -D warnings - - - name: Format check - run: cargo fmt --all -- --check + - name: Verify (TEMP diagnostic — revert before merge) + run: | + status=0 + run_logged () { + name="$1"; shift + code=0 + echo "=== $name: $*" + "$@" > "/tmp/$name.log" 2>&1 || code=$? + echo "=== $name exit=$code" + if [ "$code" -ne 0 ]; then + status=1 + python3 -c ' + import pathlib, sys + name = sys.argv[1] + log = pathlib.Path("/tmp/" + name + ".log").read_text(errors="replace").splitlines() + out = [] + for i, l in enumerate(log): + if l.startswith("error") or l.startswith("warning") or l.startswith("Diff in"): + out.append(l) + for j in range(i + 1, min(i + 4, len(log))): + if "-->" in log[j]: + out.append(log[j].strip()) + break + if not out: + out = log[-60:] + text = "\n".join(out[:400]) + text = text.replace("%", "%25").replace("\r", "%0D").replace("\n", "%0A") + print("::error title=" + name + "::" + text[:60000]) + ' "$name" + fi + return $code + } + run_logged check cargo check --workspace --all-targets || true + run_logged test cargo test -p presswerk-core -p presswerk-security -p presswerk-document -p presswerk-print || true + run_logged clippy cargo clippy --workspace --all-targets -- -D warnings || true + run_logged fmt cargo fmt --all -- --check || true + exit $status