Skip to content

add performance regression #157 #1030

add performance regression #157

add performance regression #157 #1030

Workflow file for this run

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 }}
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