Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Support index diffs against the empty tree #1745

Support index diffs against the empty tree

Support index diffs against the empty tree #1745

Workflow file for this run

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 POSIX file ownership
# Cygwin's `ls -ld` reports the NTFS Owner SID via Cygwin's SID-to-uid
# mapping (well-known SIDs by their RID, machine-local accounts by
# 0x30000+RID). That mapping is what Cygwin git's
# `is_path_owned_by_current_user` reduces to, so this is the view that
# determines whether `safe.directory` is consulted.
run: |
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 is not set}/.gitconfig"
do
ls -ld -- "$p" 2>/dev/null || echo "(missing: $p)"
done
- name: Show NTFS file ownership
# Authoritative NTFS Owner via Get-Acl, with no Cygwin SID-to-uid layer
# in between -- useful for confirming what the Cygwin view reports as
# "Administrators" is the BUILTIN\Administrators SID (S-1-5-32-544).
shell: pwsh
run: |
$paths = @(
"$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",
"$env:USERPROFILE\.gitconfig"
)
foreach ($p in $paths) {
if (Test-Path -LiteralPath $p) {
try {
$owner = (Get-Acl -LiteralPath $p).Owner
} catch {
$owner = "ERROR: $($_.Exception.Message)"
}
"{0,-44} {1}" -f $owner, $p
} else {
"(missing: $p)"
}
}
- name: Show safe.directory entries
run: git config --global --get-all safe.directory
- 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 }}
Morty Proxy This is a proxified and sanitized view of the page, visit original site.