Skip to content

Commit

Permalink
Run tests directly on github runner instead of in the docker image
Browse files Browse the repository at this point in the history
As this makes it possible to run the tests on different systems. Initially
ubuntu (20.04 and 24.04) and macOs (13 and 15).
  • Loading branch information
erijo committed Nov 25, 2024
1 parent c1ce345 commit e4ea9ea
Showing 1 changed file with 96 additions and 4 deletions.
100 changes: 96 additions & 4 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,105 @@
---
name: Tests

on: # yamllint disable-line rule:truthy
- push
- pull_request
- workflow_dispatch

env:
SC_VER: "0.10.0"
ESH_VER: "0.3.2"

jobs:
Tests:
runs-on: ubuntu-latest
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-20.04
- ubuntu-24.04
- macos-13
- macos-15
steps:
- uses: actions/checkout@v2
- name: Tests
run: make test
- uses: actions/checkout@v4

- name: Install dependencies on Linux
if: ${{ runner.os == 'Linux' }}
run: |
sudo apt-get update
sudo apt-get install -y expect
if [ "${{ matrix.os }}" != "ubuntu-20.04" ]; then
sudo apt-get install -y j2cli
fi
- name: Install dependencies on macOS
if: ${{ runner.os == 'macOS' }}
run: |
command -v expect || brew install expect
- name: Prepare tools directory
run: |
mkdir "$RUNNER_TEMP/tools"
echo "$RUNNER_TEMP/tools" >> "$GITHUB_PATH"
- name: Install shellcheck
run: |
if [ "$RUNNER_OS" = "macOS" ]; then
OS=darwin
else
OS=linux
fi
if [ "$RUNNER_ARCH" = "ARM64" ]; then
ARCH=aarch64
else
ARCH=x86_64
fi
cd "$RUNNER_TEMP"
BASE_URL="https://github.com/koalaman/shellcheck/releases/download"
SC="v$SC_VER/shellcheck-v$SC_VER.$OS.$ARCH.tar.xz"
curl -L "$BASE_URL/$SC" | tar Jx shellcheck-v$SC_VER/shellcheck
mv shellcheck-v$SC_VER/shellcheck tools
- name: Install esh
run: |
cd "$RUNNER_TEMP/tools"
BASE_URL="https://github.com/jirutka/esh/raw/refs/tags"
curl -L -o esh "$BASE_URL/v$ESH_VER/esh"
chmod +x esh
- name: Add old yadm versions # to test upgrades
run: |
for version in 1.12.0 2.5.0; do
git fetch origin $version:refs/tags/$version
git cat-file blob $version:yadm > "$RUNNER_TEMP/tools/yadm-$version"
chmod +x "$RUNNER_TEMP/tools/yadm-$version"
done
- name: Set up Python 3.11
if: ${{ runner.os == 'macOS' || matrix.os == 'ubuntu-20.04' }}
uses: actions/setup-python@v5
with:
python-version: 3.11

- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -r test/requirements.txt
- name: Test contrib
run: |
mkdir contrib/bootstrap/bootstrap-in-dir.d
echo 'test -t 0 && echo tty || echo no-tty' > contrib/bootstrap/bootstrap-in-dir.d/test

Check failure on line 97 in .github/workflows/test.yml

View workflow job for this annotation

GitHub Actions / Tests (ubuntu-20.04)

97:81 [line-length] line too long (97 > 80 characters)

Check failure on line 97 in .github/workflows/test.yml

View workflow job for this annotation

GitHub Actions / Tests (ubuntu-24.04)

97:81 [line-length] line too long (97 > 80 characters)

Check failure on line 97 in .github/workflows/test.yml

View workflow job for this annotation

GitHub Actions / Tests (macos-13)

97:81 [line-length] line too long (97 > 80 characters)

Check failure on line 97 in .github/workflows/test.yml

View workflow job for this annotation

GitHub Actions / Tests (macos-15)

97:81 [line-length] line too long (97 > 80 characters)
chmod +x contrib/bootstrap/bootstrap-in-dir.d/test
bash -x ./contrib/bootstrap/bootstrap-in-dir
- name: Run tests
run: |
git config --global user.email test@yadm.io
git config --global user.name "Yadm Test"
pytest -v --color=yes --basetemp="$RUNNER_TEMP/pytest"

0 comments on commit e4ea9ea

Please sign in to comment.