--- 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: ${{ matrix.os }} strategy: fail-fast: false matrix: os: - ubuntu-20.04 - ubuntu-24.04 - macos-13 - macos-15 steps: - 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: 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"