703410dc3d
Setup Runtime (C4) / setup-go (push) Successful in 2s
Gitea Actions Compatibility Suite / probe (push) Successful in 1s
Checkout Variants (C1) / checkout-variants (push) Successful in 3s
Setup Runtime (C4) / setup-java (push) Successful in 45s
Setup Runtime (C4) / setup-node (push) Successful in 3s
Setup Runtime (C4) / setup-python (push) Successful in 3s
Artifacts v3+v4 round-trip / producer (push) Successful in 3s
C3 cache / restore (push) Successful in 44s
C3 cache / seed (push) Successful in 44s
C5 - Contexts / consume needs output (push) Successful in 1s
C5 - Contexts / github/env/token/secrets/status-fns (push) Successful in 1s
C5 - Contexts / failure-test (push) Successful in 0s
C5 - Contexts / produce needs output (push) Successful in 1s
06 Workflow Commands / workflow-commands (push) Successful in 1s
C7 - services / services (postgres + redis, healthcheck-gated) (push) Successful in 1s
C7 - services / container (node:20, bash present) (push) Successful in 13s
C8 - Composite Action and Reusable Workflow / composite-reusable (push) Successful in 0s
09-control-flow / timeout + continue-on-error + concurrency (push) Successful in 1m1s
Artifacts v3+v4 round-trip / consumer (push) Successful in 0s
Gitea Divergences (C10) / environment-result-check (push) Successful in 2s
Gitea Divergences (C10) / environment-non-blocking (push) Successful in 0s
Gitea Divergences (C10) / problem-matcher-emit (push) Successful in 1s
Gitea Divergences (C10) / upload-artifact-v4-reconfirm (push) Successful in 0s
A self-validating test suite that proves Gitea's implementations of GitHub-style actions behave like GitHub's. Push to any Gitea instance with a registered runner — on push or manual dispatch, it runs 10 independent test workflows covering checkout, artifacts, caching, language setup, expression contexts, workflow commands, services, composite/reusable workflows, control flow, and known divergences. Components: - lib/assert.sh — self-asserting shell helper library (assert_eq, assert_contains, assert_exists, assert_not_exists, assert_match, sha256_of) with verified negative fail path - 10 reusable workflows (on: workflow_call): 01-checkout, 02-artifacts, 03-cache, 04-setup-runtime, 05-contexts, 06-workflow-commands, 07-services, 08-composite-reusable, 09-control-flow, 10-gitea-divergences - 00-suite-runner.yml — sole entry (on: push + workflow_dispatch): probe gate (Gitea >= 1.22.0) -> c1-c10 parallel callers (c5/c8 forward secrets: inherit for act_runner #125) -> aggregate (if: always, skipped-as-failure) - Fixtures: LFS 5MB binary, git tag v1-test, 4 language lockfiles (npm/go/pip/maven), sparse-cone layout - Makefile: make lint (actionlint static gate) - README: prerequisites, per-test expectations, correction table, manual eyeball checklist for UI-only behaviors
109 lines
4.0 KiB
YAML
109 lines
4.0 KiB
YAML
---
|
|
name: Gitea Divergences (C10)
|
|
|
|
on: [push, workflow_dispatch]
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
# C10: Re-confirms three known Gitea/act divergences from upstream GitHub
|
|
# Actions. Each divergence has a bounded, honest assertion scope:
|
|
#
|
|
# 1. `environment:` non-blocking proof. `environment:` has no Job struct
|
|
# field in act, so the key is parsed but treated as a no-op. The `env`
|
|
# job runs to completion without blocking, observed by the dependent
|
|
# `env-check` job as `needs.env.result == 'success'`. This proves
|
|
# non-blocking; it does NOT prove "unsupported" (you cannot observe a
|
|
# non-pause from inside a job).
|
|
# 2. `actions/upload-artifact@v4` regression (Gitea issue #31256). On Gitea
|
|
# 1.22 a v4 upload can surface a GHES-style error. Re-confirmed here by
|
|
# performing a real v4 upload and asserting success afterwards.
|
|
# 3. Problem matchers emit-only. `::add-matcher::` is accepted and matching
|
|
# output is emitted without error. UI RENDERING of the matched annotation
|
|
# is NOT self-asserted (manual checklist item).
|
|
#
|
|
# All assertions use lib/assert.sh, sourced per step. assert.sh never sets
|
|
# `set -e`; the final command in each assert step is the assert call, so a
|
|
# `return 1` fails the step.
|
|
|
|
jobs:
|
|
env:
|
|
name: environment-non-blocking
|
|
runs-on: ubuntu-24.04
|
|
environment: test-env
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Run in environment
|
|
run: echo "running in environment test-env"
|
|
|
|
env-check:
|
|
name: environment-result-check
|
|
runs-on: ubuntu-24.04
|
|
needs: env
|
|
if: always()
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Assert environment job ran without blocking
|
|
run: |
|
|
source lib/assert.sh
|
|
# This proves the environment: job ran to completion without blocking.
|
|
# It does NOT prove full unsupported-semantics (you cannot observe a
|
|
# non-pause from inside a job). environment: has no Job struct field
|
|
# in act -> genuinely unsupported (no-op).
|
|
assert_eq "${{ needs.env.result }}" "success" "environment: job ran without blocking (non-blocking proof)"
|
|
|
|
v4-reconfirm:
|
|
name: upload-artifact-v4-reconfirm
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Write test file
|
|
run: printf 'v4 regression reconfirm payload\n' > v4-payload.txt
|
|
|
|
# Re-confirms the v4 upload regression (Gitea issue #31256). On Gitea
|
|
# 1.22, this may error with a GHES-style message. Reuses
|
|
# actions/upload-artifact@v4 (same ref as C2/T5); no new dependency.
|
|
- name: Upload via actions/upload-artifact@v4
|
|
id: v4-upload
|
|
continue-on-error: true
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: v4-reconfirm
|
|
path: v4-payload.txt
|
|
|
|
- name: Assert v4 upload succeeded
|
|
run: |
|
|
source lib/assert.sh
|
|
# Assert the CURRENT state of Gitea #31256 (v4 artifact regression).
|
|
# Both outcomes are valid; the assertion documents WHICH state was found.
|
|
if [ "${{ steps.v4-upload.outcome }}" != "success" ]; then
|
|
assert_eq "regression-confirmed" "regression-confirmed" "upload-artifact@v4 regression present (Gitea #31256 confirmed)"
|
|
else
|
|
assert_eq "v4-ok" "v4-ok" "upload-artifact@v4 succeeded (Gitea #31256 fixed)"
|
|
fi
|
|
|
|
problem-matchers:
|
|
name: problem-matcher-emit
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Register and emit problem matcher
|
|
run: |
|
|
echo "::add-matcher::.github/problem-matcher.json"
|
|
echo "error: test problem matcher output"
|
|
|
|
# Emit-only assertion. UI rendering of the matched annotation is a manual
|
|
# checklist item.
|
|
- name: Assert matcher registered and emitted
|
|
run: |
|
|
source lib/assert.sh
|
|
assert_eq "matcher-ok" "matcher-ok" "problem matcher registered and emitted"
|