Remove temporary test jobs (testing complete) #2765
This file contains hidden or 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-cygwin | |
| on: [push, pull_request, workflow_dispatch] | |
| permissions: | |
| contents: read | |
| jobs: | |
| test: | |
| strategy: | |
| matrix: | |
| selection: [fast, perf] | |
| include: | |
| - selection: fast | |
| additional-pytest-args: --ignore=test/performance | |
| - selection: perf | |
| additional-pytest-args: test/performance | |
| fail-fast: false | |
| runs-on: windows-latest | |
| env: | |
| CHERE_INVOKING: "1" | |
| CYGWIN_NOWINPATH: "1" | |
| defaults: | |
| run: | |
| shell: C:\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr "{0}" | |
| steps: | |
| - name: Force LF line endings | |
| run: | | |
| git config --global core.autocrlf false # Affects the non-Cygwin git. | |
| shell: pwsh # Do this outside Cygwin, to affect actions/checkout. | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - name: Install Cygwin | |
| uses: cygwin/cygwin-install-action@v6 | |
| with: | |
| packages: git python39 python-pip-wheel python-setuptools-wheel python-wheel-wheel | |
| add-to-path: false # No need to change $PATH outside the Cygwin environment. | |
| - name: Arrange for verbose output | |
| run: | | |
| # Arrange for verbose output but without shell environment setup details. | |
| echo 'set -x' >~/.bash_profile | |
| - name: Special configuration for Cygwin git | |
| run: | | |
| git config --global --add safe.directory "$(pwd)" | |
| git config --global --add safe.directory "$(pwd)/.git" | |
| git config --global --add safe.directory "$(pwd)/git/ext/gitdb" | |
| git config --global --add safe.directory "$(pwd)/git/ext/gitdb/gitdb/ext/smmap" | |
| git config --global core.autocrlf false | |
| - name: Prepare this repo for tests | |
| run: | | |
| ./init-tests-after-clone.sh | |
| - name: Set git user identity and command aliases for the tests | |
| run: | | |
| git config --global user.email "travis@ci.com" | |
| git config --global user.name "Travis Runner" | |
| # If we rewrite the user's config by accident, we will mess it up | |
| # and cause subsequent tests to fail | |
| cat test/fixtures/.gitconfig >> ~/.gitconfig | |
| - name: Set up virtual environment | |
| run: | | |
| python3.9 -m venv .venv | |
| echo 'BASH_ENV=.venv/bin/activate' >>"$GITHUB_ENV" | |
| - name: Update PyPA packages | |
| run: | | |
| python -m pip install -U pip 'setuptools; python_version<"3.12"' wheel | |
| - name: Install project and test dependencies | |
| run: | | |
| pip install '.[test]' | |
| - name: Show file ownership and safe.directory entries | |
| run: | | |
| echo "==================== File ownership (Cygwin view, ls -ld) ====================" | |
| for p in \ | |
| "$(pwd)" \ | |
| "$(pwd)/.git" \ | |
| "$(pwd)/git/ext/gitdb" \ | |
| "$(pwd)/git/ext/gitdb/.git" \ | |
| "$(pwd)/.git/modules/gitdb" \ | |
| "$(pwd)/git/ext/gitdb/gitdb/ext/smmap" \ | |
| "$(pwd)/git/ext/gitdb/gitdb/ext/smmap/.git" \ | |
| "$(pwd)/.git/modules/gitdb/modules/smmap" \ | |
| "${HOME:-}" \ | |
| "${HOME:-}/.gitconfig"; do | |
| if [ -n "$p" ]; then | |
| ls -ld -- "$p" 2>/dev/null || echo "(missing: $p)" | |
| fi | |
| done | |
| echo | |
| echo "==================== File ownership (Win32 view, Get-Acl) ====================" | |
| # Cygwin's ls -ld and stat go through Cygwin's SID-to-uid mapping | |
| # (well-known SIDs by their RID, machine-local accounts by 0x30000+RID). | |
| # The mapping is deterministic, but going via Win32 Get-Acl gives the | |
| # NTAccount form of the NTFS Owner SID directly, with no Cygwin layer | |
| # in between -- useful for confirming that what Cygwin reports as | |
| # "Administrators" really is the BUILTIN\Administrators SID (S-1-5-32-544) | |
| # rather than some local-machine account that Cygwin happens to map to | |
| # the same uid. The workflow sets CYGWIN_NOWINPATH=1, so Windows paths | |
| # are not on Cygwin's $PATH; invoke powershell.exe by absolute path. | |
| ps_exe=/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe | |
| if [ -x "$ps_exe" ]; then | |
| for p in \ | |
| "$(pwd)" \ | |
| "$(pwd)/.git" \ | |
| "$(pwd)/git/ext/gitdb" \ | |
| "$(pwd)/git/ext/gitdb/.git" \ | |
| "$(pwd)/.git/modules/gitdb" \ | |
| "$(pwd)/git/ext/gitdb/gitdb/ext/smmap" \ | |
| "$(pwd)/git/ext/gitdb/gitdb/ext/smmap/.git" \ | |
| "$(pwd)/.git/modules/gitdb/modules/smmap" \ | |
| "${HOME:-}/.gitconfig"; do | |
| if [ -n "$p" ] && [ -e "$p" ]; then | |
| wp=$(cygpath -w "$p") | |
| # Escape single-quotes for PowerShell single-quoted string literal: ' -> '' | |
| wp_escaped=${wp//\'/\'\'} | |
| owner=$("$ps_exe" -NoProfile -NonInteractive -Command \ | |
| "try { (Get-Acl -LiteralPath '${wp_escaped}').Owner } catch { 'ERROR: ' + \$_.Exception.Message }" \ | |
| 2>/dev/null | tr -d '\r') | |
| printf " %-44s %s\n" "$owner" "$wp" | |
| fi | |
| done | |
| else | |
| echo "($ps_exe not found -- skipping Win32 view)" | |
| fi | |
| echo | |
| echo "==================== safe.directory entries ====================" | |
| git config --global --get-all safe.directory 2>&1 || echo "(none)" | |
| - name: Show version and platform information | |
| run: | | |
| uname -a | |
| command -v git python | |
| git version | |
| python --version | |
| python -c 'import os, sys; print(f"sys.platform={sys.platform!r}, os.name={os.name!r}")' | |
| - name: Test with pytest (${{ matrix.additional-pytest-args }}) | |
| run: | | |
| pytest --color=yes -p no:sugar --instafail -vv ${{ matrix.additional-pytest-args }} |