Skip to content

[pigeon] Rework test distribution in CI #115393

@stuartmorgan-g

Description

@stuartmorgan-g

(This has come up in discussions, but it looks like it was never filed, so capturing here.)

Currently the state of CI testing for Pigeon is:

  • When run on macOS hosts, it runs everything exception Windows tests (because originally the script was only run on macOS in CI).
  • When run on Windows hosts, it runs only Windows tests.
  • We don't run it on Linux, because the script predates being run on Linux in CI, and it tries to run all tests, including macOS and iOS tests, which won't work. (This is also what happens if run locally with no arguments, which is not a great experience.)

We should instead have two different entry points for the overall test script, one for CI (run_tests.dart (and for now (.sh)), and one for individual developers, both driving the same shared test script code:

  • The CI entry point should slice the targets among hosts (with no duplication), ideally the same way we do our usual plugins tests:
    • Linux hosts should run Dart and Android tests (since Linux machines are generally the cheapest/easiest to run in CI)
    • macOS hosts should run iOS and macOS tests (since they can't run anywhere else)
    • Windows hosts should run Windows tests (since they can't run anywhere else)
  • The developer entry point—which could either be a separate script, or just a simple flag (like --all) to the CI script (the way the CI works is that it run run_tests without arguments, so it can't be the reverse) should run everything it can for the given host:
    • Linux should run Dart and Android
    • macOS should run everything but Windows
    • Windows should run everything but iOS/macOS

We should do this after #85068 so that we're not adding even more complexity to the shell script.

Metadata

Metadata

Labels

P2Important issues not at the top of the work listc: contributor-productivityTeam-specific productivity, code health, technical debt.p: pigeonrelated to pigeon messaging codegen toolpackageflutter/packages repository. See also p: labels.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions