Fix test_all_plugins
workflow
#198
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Test all plugins | |
on: | |
# To run this workflow, trigger it manually, or add the label 'test-all-plugins' to a pull request | |
pull_request: | |
types: [ labeled ] | |
workflow_dispatch: | |
concurrency: | |
group: test-plugins-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
get-plugins: | |
if: github.event.label.name == 'test-all-plugins' || github.event_name == 'workflow_dispatch' | |
runs-on: ubuntu-latest | |
steps: | |
- id: plugin_names | |
# Query npe2api for index of all plugins, select the keys, turn them into an array, select 10 random | |
# names from that array, convert the "one per line" output back into a string array | |
# save the string array of 10 plugins into the output from this step | |
run: | | |
set -eux | |
DATA=$(echo $(curl -s https://npe2api.vercel.app/api/plugins | jq -c 'keys' | jq -r '.[]' | shuf -n 10 | jq -R -s 'split("\n") | map(select(. != ""))')) | |
echo "plugins=$DATA" >> "$GITHUB_OUTPUT" | |
outputs: | |
plugins: ${{ steps.plugin_names.outputs.plugins }} | |
test_all: | |
needs: get-plugins | |
name: ${{ matrix.plugin }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
plugin: ${{ fromJson(needs.get-plugins.outputs.plugins) }} | |
defaults: | |
run: | |
shell: bash -l {0} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: tlambert03/setup-qt-libs@v1 | |
- uses: conda-incubator/setup-miniconda@v3 | |
with: | |
python-version: '3.10' | |
miniforge-variant: Miniforge3 | |
miniforge-version: latest | |
use-mamba: true | |
- name: Install npe2 | |
run: pip install -e .[testing] | |
- run: sudo apt-get install -y xvfb | |
- name: Run tests | |
run: xvfb-run --auto-servernum pytest tests/test_all_plugins.py -s -v --color=yes | |
env: | |
TEST_PACKAGE_NAME: ${{ matrix.plugin }} |