Skip to content

Commit

Permalink
Test running tests directly on action runner
Browse files Browse the repository at this point in the history
To be able to test on different systems.
  • Loading branch information
erijo committed Nov 7, 2024
1 parent d74a41b commit 5dcea9a
Show file tree
Hide file tree
Showing 4 changed files with 88 additions and 7 deletions.
87 changes: 83 additions & 4 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,92 @@
---
name: Tests

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

env:
SC_VER: "0.9.0"
ESH_VER: "0.3.2"

jobs:
Tests:
runs-on: ubuntu-latest
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-24.04
- macos-13
python-version:
- "3.11"
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
- name: Install dependencies on macOS
if: ${{ runner.os == 'macOS' }}
run: |
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 ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -r test/requirements.txt
- name: Run tests
run: |
git config --global user.email [email protected]
git config --global user.name "Yadm Test"
pytest -v --color=yes
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@
.testyadm
_site
testenv
__pycache__/
3 changes: 2 additions & 1 deletion test/test_syntax.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,8 @@ def test_yamllint(pytestconfig, runner, yamllint_version):

def test_man(runner):
"""Check for warnings from man"""
run = runner(command=["man.REAL", "--warnings", "./yadm.1"])
man = "man.REAL" if runner(command=["man.REAL", "-V"]).success else "man"
run = runner(command=[man, "--warnings", "./yadm.1"])
assert run.success
assert run.err == ""
assert "yadm - Yet Another Dotfiles Manager" in run.out
4 changes: 2 additions & 2 deletions test/test_upgrade.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
],
)
@pytest.mark.parametrize("submodule", [False, True], ids=["no submodule", "with submodules"])
def test_upgrade(tmpdir, runner, versions, submodule):
def test_upgrade(tmpdir, runner, paths, versions, submodule):
"""Upgrade tests"""
# pylint: disable=too-many-statements
home = tmpdir.mkdir("HOME")
Expand All @@ -39,7 +39,7 @@ def test_upgrade(tmpdir, runner, versions, submodule):
os.environ.pop("XDG_DATA_HOME", None)

def run_version(version, *args, check_stderr=True):
yadm = f"yadm-{version}" if version else "/yadm/yadm"
yadm = f"yadm-{version}" if version else paths.pgm
run = runner([yadm, *args], shell=True, cwd=str(home), env=env)
assert run.success
if check_stderr:
Expand Down

0 comments on commit 5dcea9a

Please sign in to comment.