Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mark one test from docker backend as platform-specific behaviour #21621

Draft
wants to merge 5 commits into
base: main
Choose a base branch
from

Conversation

huonw
Copy link
Contributor

@huonw huonw commented Nov 6, 2024

Continuing #21610 and #21620.

@huonw
Copy link
Contributor Author

huonw commented Nov 7, 2024

actions/runner#1456 might have some useful tips for how to install docker properly, although might be best to wait for #21623 and then the switch back to GitHub-hosted runners (in 2.25) before landing this.

huonw added a commit that referenced this pull request Nov 8, 2024
…haviour, test on macOS (#21610)

This goes through many backends and marks one test as
`platform_specific_behavior` to ensure the backends have some testing on
platforms other than x86-64 Linux (macOS, and arm64 Linux).

The particular value in doing this is validating the set-up code, e.g.
got the right configuration for installing/downloading the tool, rather
than validating the details of the behaviour. I think we generally
assume most tools behave similar across platforms, once they're up and
running.

This PR focuses on non-JVM and non-JS backends, meaning raw binaries
(`ExternalTool`m `TemplatedExternalTool`) and Python tools installed
from PyPI (`PythonToolBase`, `PythonToolRequirementsBase`). It
particularly focuses on the backends that don't require installing any
additional software in CI, see #21620 and #21621 for additional backends
that do require installing Go and Docker respectively.

The impression I get is the JVM and JS tools are more
platform-independent, often? For instance, their lockfiles/artifacts
don't mention specific platforms, unlike Python wheels.

I found these backends via the following shell command, plus other
exploration:

```shell
for file in $(rg --files-with-matches "class.*(PythonTool.*Base|ExternalTool)" --glob '*.py' . | sed 's@/[^/]*$@@' | sort | uniq); do
  rg -q "platform_specific_behavior" $file || echo $file
done
```

I may've missed some!

This increases the time to run tests in CI on the relevant platforms, by
slight more than 2×.

| platform     | before                 | after         |
|--------------|------------------------|---------------|
| Linux x86-64 | runs all tests always  | no change     |
| Linux arm64  | ~3:30                  | ~7:30         |
| macOS x86-64 | ~5:30                  | 12:00 - 13:30 |
| macOS arm64  | not run in CI (#20993) | no change     |

Related: #21608, #20193, #20993
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
release-notes:not-required PR doesn't require mention in release notes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant