relax perf regression threshold b/c CI is hitting it #1053
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 | |
on: | |
push: | |
# branches: main | |
pull_request: | |
workflow_dispatch: | |
inputs: | |
debug: | |
description: 'Open ssh debug session.' | |
required: true | |
default: false | |
type: boolean | |
schedule: | |
- cron: '0 13 * * SUN' # Runs at 6 am pacific every sunday | |
env: | |
ENABLE_CI_ONLY_TESTS: "1" | |
jobs: | |
test-linux: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] | |
django-version: | |
- '3.2' # LTS April 2024 | |
- '4.2' # LTS April 2026 | |
- '5.0' # April 2025 | |
- '5.1' # December 2025 | |
exclude: | |
- python-version: '3.9' | |
django-version: '5.0' | |
- python-version: '3.11' | |
django-version: '3.2' | |
- python-version: '3.12' | |
django-version: '3.2' | |
- python-version: '3.9' | |
django-version: '5.1' | |
- python-version: '3.13' | |
django-version: '3.2' | |
- python-version: '3.13' | |
django-version: '4.2' | |
- python-version: '3.13' | |
django-version: '5.0' | |
env: | |
COVERAGE_FILE: py${{ matrix.python-version }}-linux-dj${{ matrix.django-version }}.coverage | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: install-emacs-linux | |
if: ${{ github.event.inputs.debug == 'true' }} | |
run: | | |
sudo apt install emacs | |
- name: setup-ssh-debug | |
if: ${{ github.event.inputs.debug == 'true' }} | |
uses: mxschmitt/action-tmate@v3 | |
with: | |
detached: true | |
timeout-minutes: 60 | |
- name: Setup Just | |
uses: extractions/setup-just@v2 | |
- name: Install | |
run: | | |
just init | |
just install | |
just pin-dependency Django~=${{ matrix.django-version }} | |
sudo apt remove powershell | |
- name: Run Unit Tests | |
run: | | |
just test-all | |
- name: Store coverage files | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.COVERAGE_FILE }} | |
path: ${{ env.COVERAGE_FILE }} | |
test-windows: | |
runs-on: windows-latest | |
defaults: | |
run: | |
shell: pwsh | |
strategy: | |
matrix: | |
python-version: ['3.9', '3.13'] | |
django-version: | |
- '3.2' # LTS April 2024 | |
- '5.1' # December 2025 | |
exclude: | |
- python-version: '3.9' | |
django-version: '5.1' | |
- python-version: '3.13' | |
django-version: '3.2' | |
env: | |
COVERAGE_FILE: py${{ matrix.python-version }}-windows-dj${{ matrix.django-version }}.coverage | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: setup-ssh-debug | |
if: ${{ github.event.inputs.debug == 'true' }} | |
uses: mxschmitt/action-tmate@v3 | |
with: | |
detached: true | |
- name: install-vim-windows | |
if: ${{ github.event.inputs.debug == 'true' }} | |
uses: rhysd/action-setup-vim@v1 | |
- name: Setup Just | |
uses: extractions/setup-just@v2 | |
- name: Install | |
run: | | |
just init | |
just install | |
just pin-dependency Django~=${{ matrix.django-version }} | |
- name: Run Unit Tests | |
run: | | |
just test-all | |
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } | |
- name: Store coverage files | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.COVERAGE_FILE }} | |
path: ${{ env.COVERAGE_FILE }} | |
test-macos: | |
runs-on: macos-latest | |
strategy: | |
matrix: | |
python-version: ['3.9', '3.13'] | |
django-version: | |
- '3.2' # LTS April 2024 | |
- '5.1' # December 2025 | |
exclude: | |
- python-version: '3.9' | |
django-version: '5.1' | |
- python-version: '3.13' | |
django-version: '3.2' | |
env: | |
COVERAGE_FILE: py${{ matrix.python-version }}-macos-dj${{ matrix.django-version }}.coverage | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: install-emacs-macos | |
if: ${{ github.event.inputs.debug == 'true' }} | |
run: | | |
brew install emacs | |
- name: setup-ssh-debug | |
if: ${{ github.event.inputs.debug == 'true' }} | |
uses: mxschmitt/action-tmate@v3 | |
with: | |
detached: true | |
- name: Setup Just | |
run: | | |
brew install just | |
- name: Install | |
run: | | |
just init | |
just install | |
just pin-dependency Django~=${{ matrix.django-version }} | |
- name: Run Unit Tests | |
run: | | |
just test-all | |
- name: Store coverage files | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.COVERAGE_FILE }} | |
path: ${{ env.COVERAGE_FILE }} | |
postgres: | |
runs-on: ubuntu-latest | |
# Service containers to run with `container-job` | |
env: | |
RDBMS: postgres | |
POSTGRES_PASSWORD: postgres | |
POSTGRES_USER: postgres | |
POSTGRES_HOST: localhost | |
POSTGRES_PORT: 5432 | |
COVERAGE_FILE: postgres-py${{ matrix.python-version }}-dj${{ matrix.django-version }}.coverage | |
strategy: | |
matrix: | |
python-version: ['3.13'] | |
postgres-version: ['latest'] | |
django-version: | |
- '5.1' # December 2025 | |
# Service containers to run with `runner-job` | |
services: | |
# Label used to access the service container | |
postgres: | |
# Docker Hub image | |
image: postgres:${{ matrix.postgres-version }} | |
# Provide the password for postgres | |
env: | |
POSTGRES_PASSWORD: postgres | |
# Set health checks to wait until postgres has started | |
options: >- | |
--health-cmd pg_isready | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
ports: | |
# Maps tcp port 5432 on service container to the host | |
- 5432:5432 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: install-emacs-macos | |
if: ${{ github.event.inputs.debug == 'true' }} | |
run: | | |
sudo apt install emacs | |
- name: setup-ssh-debug | |
if: ${{ github.event.inputs.debug == 'true' }} | |
uses: mxschmitt/action-tmate@v3 | |
with: | |
detached: true | |
- name: Setup Just | |
uses: extractions/setup-just@v2 | |
- name: Install | |
run: | | |
just init | |
just install --with psycopg3 | |
just pin-dependency Django~=${{ matrix.django-version }} | |
- name: Run Unit Tests | |
run: | | |
just test-all | |
- name: Store coverage files | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.COVERAGE_FILE }} | |
path: ${{ env.COVERAGE_FILE }} | |
linux-bash-complete: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python-version: ['3.9', '3.13'] | |
django-version: | |
- '3.2' # LTS April 2024 | |
- '5.1' # December 2025 | |
exclude: | |
- python-version: '3.9' | |
django-version: '5.1' | |
- python-version: '3.13' | |
django-version: '3.2' | |
env: | |
COVERAGE_FILE: linux-bash-py${{ matrix.python-version }}-dj${{ matrix.django-version }}.coverage | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: install-emacs-linux | |
if: ${{ github.event.inputs.debug == 'true' }} | |
run: | | |
sudo apt install emacs | |
- name: setup-ssh-debug | |
if: ${{ github.event.inputs.debug == 'true' }} | |
uses: mxschmitt/action-tmate@v3 | |
with: | |
detached: true | |
- name: Setup Just | |
uses: extractions/setup-just@v2 | |
- name: Install | |
run: | | |
just init | |
just install | |
just pin-dependency Django~=${{ matrix.django-version }} | |
- name: Test Tab Completion | |
run: | | |
just test-bash || exit 1 | |
- name: Store coverage files | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.COVERAGE_FILE }} | |
path: ${{ env.COVERAGE_FILE }} | |
linux-fish-complete: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python-version: ['3.9', '3.13'] | |
django-version: | |
- '3.2' # LTS April 2024 | |
- '5.1' # December 2025 | |
exclude: | |
- python-version: '3.9' | |
django-version: '5.1' | |
- python-version: '3.13' | |
django-version: '3.2' | |
env: | |
COVERAGE_FILE: linux-fish-py${{ matrix.python-version }}-dj${{ matrix.django-version }}.coverage | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: install-emacs-linux | |
if: ${{ github.event.inputs.debug == 'true' }} | |
run: | | |
sudo apt install emacs | |
- name: setup-ssh-debug | |
if: ${{ github.event.inputs.debug == 'true' }} | |
uses: mxschmitt/action-tmate@v3 | |
with: | |
detached: true | |
- name: Setup Just | |
uses: extractions/setup-just@v2 | |
- name: Install | |
run: | | |
just init | |
just install | |
just pin-dependency Django~=${{ matrix.django-version }} | |
- name: Install Fish shell | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y fish | |
- name: Test Tab Completion | |
run: | | |
just test-fish | |
shell: fish {0} | |
- name: Store coverage files | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.COVERAGE_FILE }} | |
path: ${{ env.COVERAGE_FILE }} | |
macos-zsh-complete: | |
runs-on: macos-latest | |
strategy: | |
matrix: | |
python-version: ['3.9', '3.13'] | |
django-version: | |
- '3.2' # LTS April 2024 | |
- '5.1' # December 2025 | |
exclude: | |
- python-version: '3.9' | |
django-version: '5.1' | |
- python-version: '3.13' | |
django-version: '3.2' | |
env: | |
COVERAGE_FILE: macos-zsh-py${{ matrix.python-version }}-dj${{ matrix.django-version }}.coverage | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: install-emacs-macos | |
if: ${{ github.event.inputs.debug == 'true' }} | |
run: | | |
brew install emacs | |
- name: setup-ssh-debug | |
if: ${{ github.event.inputs.debug == 'true' }} | |
uses: mxschmitt/action-tmate@v3 | |
with: | |
detached: true | |
- name: Setup Just | |
run: | | |
brew install just | |
- name: Install Homebrew and Zshell Completion | |
shell: zsh {0} | |
run: | | |
brew install zsh-completions | |
chmod go-w /opt/homebrew/share | |
chmod -R go-w /opt/homebrew/share/zsh | |
sudo chsh -s /bin/zsh runner | |
- name: Set SHELL variable | |
run: echo "SHELL=$(which zsh)" >> $GITHUB_ENV | |
- name: Install | |
run: | | |
just init | |
just install | |
just pin-dependency Django~=${{ matrix.django-version }} | |
- name: Run Unit Tests | |
shell: zsh {0} | |
run: | | |
just test-zsh || exit 1 | |
- name: Store coverage files | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.COVERAGE_FILE }} | |
path: ${{ env.COVERAGE_FILE }} | |
macos-bash-complete: | |
runs-on: macos-latest | |
strategy: | |
matrix: | |
python-version: ['3.9', '3.13'] | |
django-version: | |
- '3.2' # LTS April 2024 | |
- '5.1' # December 2025 | |
exclude: | |
- python-version: '3.9' | |
django-version: '5.1' | |
- python-version: '3.13' | |
django-version: '3.2' | |
env: | |
COVERAGE_FILE: macos-bash-py${{ matrix.python-version }}-dj${{ matrix.django-version }}.coverage | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: install-emacs-macos | |
if: ${{ github.event.inputs.debug == 'true' }} | |
run: | | |
brew install emacs | |
- name: setup-ssh-debug | |
if: ${{ github.event.inputs.debug == 'true' }} | |
uses: mxschmitt/action-tmate@v3 | |
with: | |
detached: true | |
- name: Setup Just | |
run: | | |
brew install just | |
- name: Install | |
run: | | |
just init | |
just install | |
just pin-dependency Django~=${{ matrix.django-version }} | |
- name: Run Unit Tests | |
run: | | |
just test-bash || exit 1 | |
- name: Store coverage files | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.COVERAGE_FILE }} | |
path: ${{ env.COVERAGE_FILE }} | |
macos-fish-complete: | |
runs-on: macos-latest | |
strategy: | |
matrix: | |
python-version: ['3.9', '3.13'] | |
django-version: | |
- '3.2' # LTS April 2024 | |
- '5.1' # December 2025 | |
exclude: | |
- python-version: '3.9' | |
django-version: '5.1' | |
- python-version: '3.13' | |
django-version: '3.2' | |
env: | |
COVERAGE_FILE: macos-fish-py${{ matrix.python-version }}-dj${{ matrix.django-version }}.coverage | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: install-emacs-macos | |
if: ${{ github.event.inputs.debug == 'true' }} | |
run: | | |
brew install emacs | |
- name: setup-ssh-debug | |
if: ${{ github.event.inputs.debug == 'true' }} | |
uses: mxschmitt/action-tmate@v3 | |
with: | |
detached: true | |
- name: Setup Just | |
run: | | |
brew install just | |
- name: Install Fish | |
run: | | |
brew install fish | |
sudo bash -c 'echo $(which fish) >> /etc/shells' | |
sudo chsh -s $(which fish) | |
- name: Set SHELL variable | |
run: echo "SHELL=$(which fish)" >> $GITHUB_ENV | |
- name: Install | |
run: | | |
just init | |
just install | |
just pin-dependency Django~=${{ matrix.django-version }} | |
- name: Run Tab Completion Tests | |
shell: fish {0} | |
run: | | |
just test-fish || exit 1 | |
- name: Store coverage files | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.COVERAGE_FILE }} | |
path: ${{ env.COVERAGE_FILE }} | |
windows-powershell-complete: | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
python-version: ['3.9', '3.13'] | |
django-version: | |
- '3.2' # LTS April 2024 | |
- '5.0' # April 2025 | |
exclude: | |
- python-version: '3.9' | |
django-version: '5.0' | |
- python-version: '3.13' | |
django-version: '3.2' | |
env: | |
COVERAGE_FILE: windows-powershell-py${{ matrix.python-version }}-dj${{ matrix.django-version }}.coverage | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: install-vim-windows | |
if: ${{ github.event.inputs.debug == 'true' }} | |
uses: rhysd/action-setup-vim@v1 | |
- name: setup-ssh-debug | |
if: ${{ github.event.inputs.debug == 'true' }} | |
uses: mxschmitt/action-tmate@v3 | |
with: | |
detached: true | |
- name: Add to Poetry to PATH | |
run: echo "C:\Users\runneradmin\.local\bin" >> $env:GITHUB_PATH | |
shell: powershell | |
- name: Setup Just | |
uses: extractions/setup-just@v2 | |
- name: Install Release Dependencies | |
run: | | |
just init | |
just install | |
just pin-dependency Django~=${{ matrix.django-version }} | |
shell: powershell | |
- name: Run Powershell Tab Completion Tests | |
run: | | |
just test-powershell | |
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } | |
just test-pwsh | |
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } | |
shell: powershell | |
- name: Test CMD shell failure | |
run: | | |
poetry run pytest --cov-append ./tests/shellcompletion/test_shell_resolution.py::test_get_win_shell_failure | |
shell: cmd | |
- name: Store coverage files | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.COVERAGE_FILE }} | |
path: ${{ env.COVERAGE_FILE }} | |
coverage-combine: | |
needs: [ | |
test-linux, | |
test-windows, | |
test-macos, | |
linux-bash-complete, | |
linux-fish-complete, | |
macos-zsh-complete, | |
macos-bash-complete, | |
macos-fish-complete, | |
windows-powershell-complete | |
] | |
runs-on: ubuntu-latest | |
steps: | |
- name: install-emacs-linux | |
if: ${{ github.event.inputs.debug == 'true' }} | |
run: | | |
sudo apt install emacs | |
- name: setup-ssh-debug | |
if: ${{ github.event.inputs.debug == 'true' }} | |
uses: mxschmitt/action-tmate@v3 | |
with: | |
detached: true | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
- name: Setup Just | |
uses: extractions/setup-just@v2 | |
- name: Install Release Dependencies | |
run: | | |
just init | |
just install | |
- name: Get coverage files | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: "*.coverage" | |
merge-multiple: true | |
- run: ls -la *.coverage | |
- run: just coverage | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
file: ./coverage.xml | |
verbose: true |