Merge pull request 'ci+quality: structural gates (CI: 3 new; local: 7 new + .clang-tidy)' (#18) from ci/structural-tests into main
Some checks failed
C++ Tests / test-fast (push) Has started running
C++ Tests / test-cgal (push) Has been cancelled
API Docs / doc-build (push) Has been cancelled
Doxygen → Codeberg Pages / publish (push) Has been cancelled
Markdown link check / check (push) Has been cancelled
Mirror to Codeberg / mirror (push) Has been cancelled
Some checks failed
C++ Tests / test-fast (push) Has started running
C++ Tests / test-cgal (push) Has been cancelled
API Docs / doc-build (push) Has been cancelled
Doxygen → Codeberg Pages / publish (push) Has been cancelled
Markdown link check / check (push) Has been cancelled
Mirror to Codeberg / mirror (push) Has been cancelled
This commit is contained in:
@@ -96,3 +96,19 @@ jobs:
|
||||
passed=$(( ${total:-0} - ${failed:-0} - ${skipped:-0} ))
|
||||
echo "CGAL ▸ TOTAL ${total:-0} | PASSED $passed | FAILED ${failed:-0} | SKIPPED ${skipped:-0}"
|
||||
fi
|
||||
|
||||
# ── Structural gate: doc/api/tests.md totals match ctest reality ───
|
||||
# Single source of truth for test counts (see doc/release-policy.md).
|
||||
# Reuses the already-built ./build dir via BUILD_DIR env var, so this
|
||||
# adds ~5 s on top of the existing CGAL job.
|
||||
- name: Verify test-count consistency (doc/api/tests.md)
|
||||
run: BUILD_DIR=build bash scripts/check-test-counts.sh
|
||||
|
||||
# ── Structural gate: end-to-end smoke (try_it.sh) ──────────────────
|
||||
# The user-facing quick-start script: configure + build + run the
|
||||
# full ctest + run the Euclidean example on a bundled mesh. If
|
||||
# this regresses, README quick-start instructions are broken.
|
||||
# try_it.sh creates its own build-try/ — accept the ~3 min cost as
|
||||
# the price of guaranteeing the documented workflow stays working.
|
||||
- name: End-to-end smoke test (scripts/try_it.sh)
|
||||
run: bash scripts/try_it.sh
|
||||
|
||||
40
.gitea/workflows/markdown-links.yml
Normal file
40
.gitea/workflows/markdown-links.yml
Normal file
@@ -0,0 +1,40 @@
|
||||
name: Markdown link check
|
||||
|
||||
# Verify every internal markdown link in the repo resolves to an existing
|
||||
# file (or anchor). External http(s) links are also probed but with a
|
||||
# loose timeout — flaky third-party hosts must not break our CI.
|
||||
#
|
||||
# Trigger: PRs that touch any *.md file, plus a weekly cron so external
|
||||
# link rot is caught even when nobody is editing docs.
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- "**/*.md"
|
||||
- ".gitea/workflows/markdown-links.yml"
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- "**/*.md"
|
||||
- ".gitea/workflows/markdown-links.yml"
|
||||
schedule:
|
||||
- cron: "0 5 * * 1" # Monday 05:00 UTC weekly link-rot check
|
||||
workflow_dispatch: {}
|
||||
|
||||
jobs:
|
||||
check:
|
||||
runs-on: eulernest
|
||||
container:
|
||||
image: git.eulernest.eu/conformallab/ci-cpp:latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
# ── Pure-python internal link check (no external network needed) ────
|
||||
# We use the same logic that found the 2 broken links before the
|
||||
# reviewer meeting: parse every [text](path) link, check that the
|
||||
# target file exists relative to the source file's directory. Skips
|
||||
# http(s)://, mailto:, and pure-anchor (#fragment) links.
|
||||
- name: Internal link check (all *.md files)
|
||||
run: python3 scripts/check-markdown-links.py
|
||||
Reference in New Issue
Block a user