add performance regression #157 #1030
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 }} | |
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 |