-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
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
PR: CI: Add workflow to run tests with PyQt6/PySide6 #23118
base: master
Are you sure you want to change the base?
Changes from all commits
314c3d1
cf811cf
ddc4d66
6ab0f8c
e7e3433
6face7a
241fc9f
0ea8522
feb140e
84a22a0
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,160 @@ | ||
name: Linux tests with PyQt6/PySide6 | ||
|
||
on: | ||
push: | ||
branches: | ||
- master | ||
- qt6_ci # for testing only | ||
paths: | ||
- '.github/scripts/*.sh' | ||
- '.github/workflows/*.yml' | ||
- 'requirements/*.yml' | ||
- 'MANIFEST.in' | ||
- '**.bat' | ||
- '**.py' | ||
- '**.sh' | ||
- '!installers-conda/**' | ||
- '!.github/workflows/installers-conda.yml' | ||
- '!.github/workflows/build-subrepos.yml' | ||
- '!.github/workflows/purge-cache.yml' | ||
- '!.github/scripts/installer_test.sh' | ||
|
||
workflow_call: | ||
|
||
workflow_dispatch: | ||
inputs: | ||
ssh: | ||
# github_cli: gh workflow run test-linux.yml --ref <branch> -f ssh=true | ||
description: 'Enable ssh debugging' | ||
required: false | ||
default: false | ||
type: boolean | ||
|
||
concurrency: | ||
group: test-linux-${{ github.ref }} | ||
cancel-in-progress: true | ||
|
||
env: | ||
ENABLE_SSH: ${{ github.event_name == 'workflow_dispatch' && inputs.ssh }} | ||
|
||
jobs: | ||
build: | ||
# Use this to disable the workflow | ||
# if: false | ||
name: Linux - Py${{ matrix.PYTHON_VERSION }}, ${{ matrix.SPYDER_QT_BINDING }}, ${{ matrix.INSTALL_TYPE }}, ${{ matrix.TEST_TYPE }} | ||
runs-on: ubuntu-20.04 | ||
env: | ||
CI: 'true' | ||
QTCONSOLE_TESTING: 'true' | ||
CODECOV_TOKEN: "56731c25-9b1f-4340-8b58-35739bfbc52d" | ||
OS: 'linux' | ||
PYTHON_VERSION: ${{ matrix.PYTHON_VERSION }} | ||
RUN_SLOW: ${{ matrix.TEST_TYPE == 'slow' }} | ||
USE_CONDA: ${{ matrix.INSTALL_TYPE == 'conda' }} | ||
USE_GDB: 'false' | ||
SPYDER_QT_BINDING: ${{ matrix.SPYDER_QT_BINDING }} | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
INSTALL_TYPE: ['pip'] # conda has no PyQt6 package | ||
PYTHON_VERSION: ['3.10'] | ||
TEST_TYPE: ['fast', 'slow'] | ||
SPYDER_QT_BINDING: ['pyqt6'] # TODO add 'pyside6' once Spyder supports it | ||
timeout-minutes: 90 | ||
steps: | ||
- name: Setup Remote SSH Connection | ||
if: env.ENABLE_SSH == 'true' | ||
uses: mxschmitt/action-tmate@v3 | ||
timeout-minutes: 60 | ||
with: | ||
detached: true | ||
- name: Checkout Pull Requests | ||
if: github.event_name == 'pull_request' | ||
uses: actions/checkout@v4 | ||
with: | ||
ref: ${{ github.event.pull_request.head.sha }} | ||
- name: Checkout Push | ||
if: github.event_name != 'pull_request' | ||
uses: actions/checkout@v4 | ||
- name: Fetch branches | ||
run: git fetch --prune --unshallow | ||
- name: Install dependencies | ||
shell: bash | ||
run: | | ||
sudo apt-get update --fix-missing | ||
sudo apt-get install -qq pyqt5-dev-tools libxcb-xinerama0 libxcb-cursor0 xterm --fix-missing | ||
- name: Cache conda | ||
uses: actions/cache@v4 | ||
env: | ||
# Increase this value to reset cache if requirements/*.txt has not changed | ||
CACHE_NUMBER: 1 | ||
with: | ||
path: ~/conda_pkgs_dir | ||
key: ${{ runner.os }}-cacheconda-install${{ matrix.INSTALL_TYPE }}-${{ matrix.PYTHON_VERSION }}-${{ env.CACHE_NUMBER }}-${{ hashFiles('requirements/*.yml') }} | ||
- name: Cache pip | ||
uses: actions/cache@v4 | ||
with: | ||
path: ~/.cache/pip | ||
key: ${{ runner.os }}-cachepip-install${{ matrix.INSTALL_TYPE }}-${{ env.CACHE_NUMBER }}-${{ hashFiles('setup.py') }} | ||
- name: Create conda test environment | ||
if: env.USE_CONDA == 'true' | ||
uses: mamba-org/setup-micromamba@v1 | ||
with: | ||
micromamba-version: '1.5.10-0' | ||
environment-file: requirements/main.yml | ||
environment-name: test | ||
cache-downloads: true | ||
create-args: python=${{ matrix.PYTHON_VERSION }} | ||
- name: Create pip test environment | ||
if: env.USE_CONDA != 'true' | ||
uses: mamba-org/setup-micromamba@v1 | ||
with: | ||
micromamba-version: '1.5.10-0' | ||
environment-name: test | ||
cache-downloads: true | ||
create-args: python=${{ matrix.PYTHON_VERSION }} | ||
condarc: | | ||
channels: | ||
- conda-forge | ||
- name: Install additional dependencies | ||
shell: bash -l {0} | ||
run: bash -l .github/scripts/install.sh | ||
- name: Show conda test environment | ||
if: env.USE_CONDA == 'true' | ||
shell: bash -l {0} | ||
run: | | ||
micromamba info | ||
micromamba list | ||
- name: Show pip test environment | ||
if: env.USE_CONDA != 'true' | ||
shell: bash -l {0} | ||
run: | | ||
micromamba info | ||
micromamba list | ||
pip list | ||
- name: Run manifest checks | ||
shell: bash -l {0} | ||
run: check-manifest | ||
- name: Run tests with gdb | ||
if: env.USE_GDB == 'true' | ||
shell: bash -l {0} | ||
# env: | ||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
Comment on lines
+141
to
+142
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. For testing only, will be re-added |
||
run: xvfb-run --auto-servernum gdb -return-child-result -batch -ex r -ex py-bt --args python runtests.py -s | ||
- name: Run tests | ||
shell: bash -l {0} | ||
env: | ||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. For testing only, will be re-added |
||
QT_API: ${{ matrix.SPYDER_QT_BINDING }} | ||
PYTEST_QT_API: ${{ matrix.SPYDER_QT_BINDING }} | ||
run: | | ||
rm -f pytest_log.txt # Must remove any log file from a previous run | ||
# .github/scripts/run_tests.sh || \ | ||
# .github/scripts/run_tests.sh || \ | ||
# .github/scripts/run_tests.sh || \ | ||
.github/scripts/run_tests.sh | ||
Comment on lines
+152
to
+155
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Commented out for faster testing. |
||
- name: Coverage | ||
uses: codecov/codecov-action@v4 | ||
with: | ||
fail_ci_if_error: false | ||
verbose: true |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Using a cron-based trigger is probably more sensible for now?
The
qt6_ci
is for testing only and will be removedThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think so. We should run the Qt6 slots as we do for other ones so we know when we break things for that version.
Ok, no problem.