Skip to content

ci: smoke catalog can silently shrink (no completeness check, empty catalog passes, fail-fast hides regressions) #292

Description

@TMHSDigital

Why it matters

tests/smoke/catalog.json is the only thing that puts an example into CI, but nothing checks that it stays complete. There are also two ways smoke can report green while covering less than it should.

Evidence

  1. No completeness check. Today all 96 catalog rows match an examples/* or showcase/* folder. But unlike the plugin manifest (validate.yml:189-246, which is CI-gated), nothing fails when a new example or showcase piece ships without a catalog row. That example would simply never run.
  2. An empty catalog is green. tests/smoke/protocol.py:130 makes zero PASSes red. However, the sidecar canary (blender-smoke.yml:245-255) is recorded as a PASS, so if catalog.json became [], run_catalog.py would print "finished 0 entries" and the job would stay green.
  3. Fail-fast hides regressions. tests/smoke/run_catalog.py:207-209 returns on the first non-zero exit (if code != 0: … return code). A PR that breaks five examples shows one per CI round-trip, and every example after the failure goes unchecked.

Suggested approach

  • Add a validate.yml step (no Blender needed) that diffs the set of examples/*/ + showcase/*/ directories against the catalog names and fails on either side's orphans, with an allowlist for intentional exclusions.
  • Keep canary records out of the catalog PASS count, or assert catalog_passes >= len(catalog) - skips.
  • Change run_catalog.py to run every entry, collect results, and exit non-zero at the end with a summary of all failures. --fail-fast can stay as an opt-in flag.

Done when

  • Deleting a catalog row fails Validate, with a falsifier recorded.
  • An empty catalog fails Smoke.
  • A run with two broken examples reports both.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    cipriority: mediumImportant, not urgenttestingTest harness and CI test coverage

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions