Skip to content

test(ci): the public authoring crate's tests reach CI — app_sugar_test runs nowhere today #2062

Description

@tato123

What & why

sdk/streamlib-sdk is the public Rust authoring crate (streamlib). Its nine tests in sdk/streamlib-sdk/tests/app_sugar_test.rs have never run in CI, and after #2052 deleted the example-coupled E2E the crate's --lib slice runs zero tests — so .github/workflows/test.yml's -p streamlib half is compile coverage only.

The tests are real coverage of the authoring surface: App::add matching Runner::add_processor snapshot-for-snapshot, App::connect passing the runtime's typed ProcessorPortNotFound through unmasked, config-serialization rejection, and display-name assignment/disambiguation.

What we want: the public authoring crate's behaviour gated by CI like every other crate's.

What exists today: test.yml:121 runs cargo test --locked -p streamlib -p streamlib-macros -p streamlib-processor-schema --lib. --lib excludes tests/, so app_sugar_test.rs is compiled by nothing and run by nothing. No xtask mirror names it either.

Why it moves now: #2052 removed the crate's only lib test, so the gap is no longer masked by a passing invocation.

Design

Add cargo test --locked -p streamlib --tests as its own step in test.yml's unit-test block, and mirror the name in xtask if the mirror covers this crate (engine lib tests reach CI by name only — verify whether the same holds here).

No GPU is required, verified against the tree 2026-08-30: GpuContext::init_for_platform_sync() is called from Runner::start() (runtime/streamlib-engine/src/core/runtime/runtime.rs:354), not Runner::new(). None of the nine tests calls start() or run() — they are graph-construction only.

The one unknown to settle in the ticket: App::new() creates an iceoryx2 node and binds a surface-share unix socket under /run/user/<uid>. Confirm CI's container provides a usable runtime dir; if it does not, that — not the GPU — is what needs solving, and the fix belongs here rather than in a skip.

Constraints

  • Test-only and CI-only. No library code changes.
  • Do not re-add a test that reaches into examples/ or packages/docs/plan/ARCHITECTURE.md §Consumers forbids a consumer as a contract source, which is why the deleted E2E was not replaced.

Done means

  • app_sugar_test.rs's nine tests execute in CI and are red when the authoring surface regresses.
  • §Product's Rust-authoring DECIDED bullet (docs/plan/ARCHITECTURE.md:41-44) regains a verify: anchor, or the PR states why it stays anchor-free.

Validation shape

One real CI run is the proof — the container's iceoryx2/runtime-dir behaviour cannot be established locally. No rig needed.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions