Skip to content

Add CI to ensure all requires_ tests are run at least once #11273

@VeckoTheGecko

Description

@VeckoTheGecko

What is your issue?

I was looking at #11251 and realised that we have tests marked as requires_cupy yet in CI have no environment providing cupy meaning these tests are (I assume) always skipped.

I think that all tests that are skipped due to a requires_ condition should either:

  • pass once in one of the environments, or
  • be skipped for another reason that isn't a requires_ reason

I think this can be achieved by using the existing pytest-reportlog extension, saving the resulting files, and then having a job afterwards that combines all these artifacts together again to ensure that these conditions are held. This will have informative error messaging to mention which test is never run in CI.

This will change our testing graph structure

flowchart LR
    Lock --> T1["Test (env 1)"]
    Lock --> T2["Test (env 2)"]
    Lock --> T3["Test (env ...)"]
    T1 --> c["Combine results and report status"]
    T2 --> c
    T3 --> c
Loading

which also means we can have a single required check on "Combine results and report status"

Other concerns:

  • Can we use Pixi to define environments that only work on certain platforms? (e.g., cupy isn't available on Mac, but we shouldn't drop mac from the pixi.toml:workspace.platforms
  • Are there certain things that we want to test against that aren't possible due to GHA not having compatible runners?

cc @keewis (since I've mainly worked with you on ci tooling)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions