Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 24 additions & 13 deletions .github/workflows/build-macos-arm64.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ env:
jobs:
build-package:
runs-on: macos-15
if: false # TEMP: skip whole macOS ARM64 workflow to isolate Windows test-extra flakiness
outputs:
build-version: ${{ steps.build-version.outputs.version }}
steps:
Expand Down Expand Up @@ -337,7 +338,11 @@ jobs:

See <https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}> for more information.

test-annex-more:
test-extra:
# Runs the pytest extra-tests suite in tests/extra/pytest/. Each
# test declares its own skip conditions, so the default is: run on
# every platform, skip only where an individual test's dependencies
# aren't available (e.g. dynlibs needs strace).
runs-on: macos-15
needs: build-package
steps:
Expand All @@ -350,7 +355,7 @@ jobs:
.github/workflows/tools/set-pr-status \
"${{ github.event.inputs.pr }}" \
macOS ARM64 \
test-annex-more \
test-extra \
pending
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -367,29 +372,35 @@ jobs:
hdiutil detach /Volumes/git-annex/
echo /Applications/git-annex.app/Contents/MacOS >> "$GITHUB_PATH"

- name: Seek of dynlibs

- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: '3.12'

- name: Install pytest
run: python -m pip install --upgrade pip pytest

- name: Configure git identity
run: |
mkdir /tmp/testrepo; cd /tmp/testrepo; git init
function nfailed() {
strace -f git-annex "$1" 2>&1 | awk "/$2.*ENOENT/{print}" | tee /dev/fd/2 | wc -l
}
# We should get some reasonable number (not 40) of directories look up for dynamic libraries
liblookups=
PS4='> '; set -x
test $(nfailed version "libpcre.*so") -lt 7
test $(nfailed init "libpcre.*so") -lt 260
git config --global user.email "test@github.land"
git config --global user.name "GitHub Almighty"

- name: Run pytest suite
run: python -m pytest -v tests/extra/pytest/

- name: Set final PR status
if: always() && github.event.inputs.pr != ''
run: |
.github/workflows/tools/set-pr-status \
"${{ github.event.inputs.pr }}" \
macOS ARM64 \
test-annex-more \
test-extra \
"${{ job.status }}"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}


test-datalad:
runs-on: macos-15
needs: build-package
Expand Down
37 changes: 24 additions & 13 deletions .github/workflows/build-macos.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ env:
jobs:
build-package:
runs-on: macos-15-intel
if: false # TEMP: skip whole macOS workflow to isolate Windows test-extra flakiness
outputs:
build-version: ${{ steps.build-version.outputs.version }}
steps:
Expand Down Expand Up @@ -336,7 +337,11 @@ jobs:

See <https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}> for more information.

test-annex-more:
test-extra:
# Runs the pytest extra-tests suite in tests/extra/pytest/. Each
# test declares its own skip conditions, so the default is: run on
# every platform, skip only where an individual test's dependencies
# aren't available (e.g. dynlibs needs strace).
runs-on: macos-15-intel
needs: build-package
steps:
Expand All @@ -349,7 +354,7 @@ jobs:
.github/workflows/tools/set-pr-status \
"${{ github.event.inputs.pr }}" \
macOS \
test-annex-more \
test-extra \
pending
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -366,29 +371,35 @@ jobs:
hdiutil detach /Volumes/git-annex/
echo /Applications/git-annex.app/Contents/MacOS >> "$GITHUB_PATH"

- name: Seek of dynlibs

- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: '3.12'

- name: Install pytest
run: python -m pip install --upgrade pip pytest

- name: Configure git identity
run: |
mkdir /tmp/testrepo; cd /tmp/testrepo; git init
function nfailed() {
strace -f git-annex "$1" 2>&1 | awk "/$2.*ENOENT/{print}" | tee /dev/fd/2 | wc -l
}
# We should get some reasonable number (not 40) of directories look up for dynamic libraries
liblookups=
PS4='> '; set -x
test $(nfailed version "libpcre.*so") -lt 7
test $(nfailed init "libpcre.*so") -lt 260
git config --global user.email "test@github.land"
git config --global user.name "GitHub Almighty"

- name: Run pytest suite
run: python -m pytest -v tests/extra/pytest/

- name: Set final PR status
if: always() && github.event.inputs.pr != ''
run: |
.github/workflows/tools/set-pr-status \
"${{ github.event.inputs.pr }}" \
macOS \
test-annex-more \
test-extra \
"${{ job.status }}"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}


test-datalad:
runs-on: macos-15-intel
needs: build-package
Expand Down
40 changes: 27 additions & 13 deletions .github/workflows/build-ubuntu.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,7 @@ jobs:
test-annex:
runs-on: ${{ matrix.os }}
needs: build-package
if: false # TEMP: skip to isolate test-extra flakiness
strategy:
matrix:
flavor: ["normal", "crippled-tmp", "crippled-home", "nfs-home", "custom-config1"]
Expand Down Expand Up @@ -377,7 +378,11 @@ jobs:

See <https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}> for more information.

test-annex-more:
test-extra:
# Runs the pytest extra-tests suite in tests/extra/pytest/. Each
# test declares its own skip conditions, so the default is: run on
# every platform, skip only where an individual test's dependencies
# aren't available (e.g. dynlibs needs strace).
runs-on: ubuntu-24.04
needs: build-package
steps:
Expand All @@ -390,7 +395,7 @@ jobs:
.github/workflows/tools/set-pr-status \
"${{ github.event.inputs.pr }}" \
Ubuntu \
test-annex-more \
test-extra \
pending
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -404,32 +409,41 @@ jobs:
run: |
sudo dpkg -i git-annex*.deb

- name: Seek of dynlibs
- name: Install strace
run: sudo apt-get update -qq && sudo apt-get install -y strace

- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: '3.12'

- name: Install pytest
run: python -m pip install --upgrade pip pytest

- name: Configure git identity
run: |
mkdir /tmp/testrepo; cd /tmp/testrepo; git init
function nfailed() {
strace -f git-annex "$1" 2>&1 | awk "/$2.*ENOENT/{print}" | tee /dev/fd/2 | wc -l
}
# We should get some reasonable number (not 40) of directories look up for dynamic libraries
liblookups=
PS4='> '; set -x
test $(nfailed version "libpcre.*so") -lt 7
test $(nfailed init "libpcre.*so") -lt 260
git config --global user.email "test@github.land"
git config --global user.name "GitHub Almighty"

- name: Run pytest suite
run: python -m pytest -v tests/extra/pytest/

- name: Set final PR status
if: always() && github.event.inputs.pr != ''
run: |
.github/workflows/tools/set-pr-status \
"${{ github.event.inputs.pr }}" \
Ubuntu \
test-annex-more \
test-extra \
"${{ job.status }}"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}


test-datalad:
runs-on: ubuntu-24.04
needs: build-package
if: false # TEMP: skip to isolate test-extra flakiness
strategy:
matrix:
version: [master, maint, release]
Expand Down
81 changes: 81 additions & 0 deletions .github/workflows/build-windows.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,7 @@ jobs:
test-annex:
runs-on: ${{ matrix.os }}
needs: build-package
if: false # TEMP: skip to isolate test-extra flakiness
strategy:
matrix:
flavor: ["normal", "custom-config1"]
Expand Down Expand Up @@ -322,9 +323,89 @@ jobs:

See <https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}> for more information.

test-extra:
# Runs the pytest extra-tests suite in tests/extra/pytest/. Each
# test declares its own skip conditions, so the default is: run on
# every platform, skip only where an individual test's dependencies
# aren't available (e.g. dynlibs needs strace).
runs-on: windows-2025
needs: build-package
# Windows: point TMP/TEMP at a short root so any test that shells
# out to `git clone` on repos with long annex-object paths (e.g.
# the ReproTube DataLad dataset in test_url_backend) stays under
# MAX_PATH. The default runner tempdir under
# C:\Users\runneradmin\AppData\Local\Temp is ~65 chars, plus
# pytest's per-run subdir pushes total prefix past ~90 chars —
# combined with SHA256E annex-object paths (~200 chars) that
# crosses 260 and git checkout fails with "Filename too long".
env:
TMP: C:\t
TEMP: C:\t
steps:
- name: Checkout this repository
uses: actions/checkout@v6

- name: Prepare short TMPDIR
shell: bash
run: mkdir -p /c/t

- name: Handle long filenames
run: git config --system core.longpaths true

- name: Create pending PR status
if: github.event.inputs.pr != ''
run: |
.github/workflows/tools/set-pr-status \
"${{ github.event.inputs.pr }}" \
Windows \
test-extra \
pending
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Download git-annex package
uses: actions/download-artifact@v8
with:
name: git-annex-windows-installer_${{ needs.build-package.outputs.build-version }}

- name: Install git-annex package
shell: powershell
run: |
Start-Process -FilePath (Get-Item ./git-annex-installer_*.exe).FullName -ArgumentList '/S' -Wait -NoNewWindow


- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: '3.12'

- name: Install pytest
run: python -m pip install --upgrade pip pytest

- name: Configure git identity
run: |
git config --global user.email "test@github.land"
git config --global user.name "GitHub Almighty"

- name: Run pytest suite
run: python -m pytest -v tests/extra/pytest/

- name: Set final PR status
if: always() && github.event.inputs.pr != ''
run: |
.github/workflows/tools/set-pr-status \
"${{ github.event.inputs.pr }}" \
Windows \
test-extra \
"${{ job.status }}"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}


test-datalad:
runs-on: windows-2025
needs: build-package
if: false # TEMP: skip to isolate test-extra flakiness
strategy:
matrix:
version: [master, maint, release]
Expand Down
Loading
Loading