Skip to content

feat(hang): add json and binary data tracks to the catalog #286

feat(hang): add json and binary data tracks to the catalog

feat(hang): add json and binary data tracks to the catalog #286

Workflow file for this run

name: Smoke
# Cross-language interop smoke test built from THIS checkout (not the published
# packages, unlike the moq-dev/smoke repo). Stands up a relay and runs the
# publish x subscribe matrix across rust / python / browser / native-js / c,
# then the TS/IRD compliance harness over the exporter's output.
on:
# Manual on-demand runs.
workflow_dispatch:
# Nightly: catch an interop regression in the current tree before a user does.
schedule:
- cron: "0 8 * * *"
# On PRs that touch the harness itself, so a change to the smoke test is
# validated before it merges. Source regressions still surface nightly.
pull_request:
paths:
- "test/smoke/**"
# The TS/IRD compliance harness runs in the same job (see below).
- "test/ts/**"
# The smoke job also depends on the recipe that invokes it and the
# workspace membership that links the JS clients to source.
- "test/justfile"
- "package.json"
- ".github/workflows/smoke.yml"
concurrency:
group: smoke-${{ github.ref }}
cancel-in-progress: true
permissions:
id-token: write
contents: read
jobs:
smoke:
name: Smoke
runs-on: ubuntu-latest
# The matrix runs in real time (ffmpeg -re pacing + per-subscriber timeouts);
# this is a safety net against a hung relay/client plus a cold first build.
timeout-minutes: 60
steps:
- name: Free disk space
uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # main
with:
tool-cache: false
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- uses: DeterminateSystems/nix-installer-action@1d87d45818068401a10cf16bdc5f00b24994a83f # main
with:
determinate: false
# Reuse ~/.cargo + ./target across nightly runs so only changed crates
# recompile (the relay, cli, moq-ffi, and libmoq all build from source).
- name: Rust cache
uses: Swatinem/rust-cache@f0d9c3887740aee45f6153b24b3a6b815192ec16 # v2
with:
cache-on-failure: true
# Playwright's Chromium isn't in the nix devShell. Install it plus its apt
# runtime libs (`--with-deps` needs the host package manager) so the
# browser client can launch headless Chromium. smoke.sh's own
# `playwright install` then no-ops.
- name: Playwright Chromium
run: nix develop --command bash -c "bun install --frozen-lockfile && bunx playwright install --with-deps chromium"
shell: bash -leo pipefail {0}
- name: Smoke (full matrix)
run: nix develop --command just test smoke-full
shell: bash -leo pipefail {0}
- name: Negative control
run: nix develop --command just test smoke-negative
shell: bash -leo pipefail {0}
# Round-trips a PCR-paced TS through a relay and checks the subscriber's
# `export ts` output with TSDuck (tsp/tsanalyze from the nix devShell).
- name: TS compliance
run: nix develop --command just test ts
shell: bash -leo pipefail {0}
# Builds the sparse-EPG and pending-version fixtures and round-trips
# them, asserting the schedule survives and pending sections are dropped.
- name: EIT fixtures
run: nix develop --command just test ts-eit
shell: bash -leo pipefail {0}