diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index b015ea59..dd9d2ad7 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -55,13 +55,21 @@ jobs: with: name: rgbds-canary-${{ matrix.os }}-${{ matrix.cc }}-${{ matrix.buildsys }} path: bins + - name: Compute test dependency cache params + id: test-deps-cache-params + shell: bash + run: | + paths=$(test/fetch-test-deps.sh --get-paths) + hash=$(test/fetch-test-deps.sh --get-hash) + tee -a <<<"paths=\"${paths//,/\\n}\"" $GITHUB_OUTPUT + tee -a <<<"hash=${hash%-}" $GITHUB_OUTPUT - name: Check test dependency repositories cache id: test-deps-cache uses: actions/cache@v3 with: - path: test - key: ${{ matrix.os }}-${{ hashFiles('test/fetch-test-deps.sh') }} - - if: ${{ steps.test-deps-cache.outputs.cache-hit != 'true' }} + path: ${{ fromJSON(steps.test-deps-cache-params.outputs.paths) }} + key: ${{ matrix.os }}-${{ steps.test-deps-cache-params.outputs.hash }} + - if: steps.test-deps-cache.outputs.cache-hit != 'true' name: Fetch test dependency repositories continue-on-error: true run: | @@ -127,16 +135,21 @@ jobs: with: name: rgbds-canary-win${{ matrix.bits }} path: bins + - name: Compute test dependency cache params + id: test-deps-cache-params + shell: bash + run: | + paths=$(test/fetch-test-deps.sh --get-paths) + hash=$(test/fetch-test-deps.sh --get-hash) + tee -a <<<"paths=\"${paths//,/\\n}\"" $GITHUB_OUTPUT + tee -a <<<"hash=${hash%-}" $GITHUB_OUTPUT - name: Check test dependency repositories cache id: test-deps-cache uses: actions/cache@v3 with: - path: test - # Intentionally using matrix.bits instead matrix.arch as it's fine to share a cache - # with a different job below that also runs on Windows but doesn't have arch property - # defined. - key: ${{ matrix.os }}-${{ matrix.bits }}-${{ hashFiles('test/fetch-test-deps.sh') }} - - if: ${{ steps.test-deps-cache.outputs.cache-hit != 'true' }} + path: ${{ fromJSON(steps.test-deps-cache-params.outputs.paths) }} + key: ${{ matrix.os }}-${{ matrix.bits }}-${{ steps.test-deps-cache-params.outputs.hash }} + - if: steps.test-deps-cache.outputs.cache-hit != 'true' name: Fetch test dependency repositories shell: bash continue-on-error: true @@ -224,13 +237,21 @@ jobs: run: | cp bins/* . cp bins/*.dll test/gfx + - name: Compute test dependency cache params + id: test-deps-cache-params + shell: bash + run: | + paths=$(test/fetch-test-deps.sh --get-paths) + hash=$(test/fetch-test-deps.sh --get-hash) + tee -a <<<"paths=\"${paths//,/\\n}\"" $GITHUB_OUTPUT + tee -a <<<"hash=${hash%-}" $GITHUB_OUTPUT - name: Check test dependency repositories cache id: test-deps-cache uses: actions/cache@v3 with: - path: test - key: ${{ matrix.os }}-${{ matrix.bits }}-${{ hashFiles('test/fetch-test-deps.sh') }} - - if: ${{ steps.test-deps-cache.outputs.cache-hit != 'true' }} + path: ${{ fromJSON(steps.test-deps-cache-params.outputs.paths) }} + key: mingw-${{ matrix.bits }}-${{ steps.test-deps-cache-params.outputs.hash }} + - if: steps.test-deps-cache.outputs.cache-hit != 'true' name: Fetch test dependency repositories shell: bash continue-on-error: true diff --git a/test/fetch-test-deps.sh b/test/fetch-test-deps.sh index 0025d85a..20f9c614 100755 --- a/test/fetch-test-deps.sh +++ b/test/fetch-test-deps.sh @@ -4,20 +4,35 @@ set -e cd "$(dirname "$0")" -echo "Fetching test dependency repositories" +case "$1" in + --get-hash) + action() { # owner/repo shallow-since commit + printf "%s@%s-" "${1##*/}" "$3" + } + ;; -fetch_downstream() { # owner/repo shallow-since commit - if [ ! -d ${1##*/} ]; then - git clone https://github.com/$1.git --shallow-since=$2 --single-branch - fi - pushd ${1##*/} - git checkout -f $3 - if [ -f ../patches/${1##*/}.patch ]; then - git apply --ignore-whitespace ../patches/${1##*/}.patch - fi - popd -} + --get-paths) + action() { # owner/repo shallow-since commit + printf "test/%s," "${1##*/}" + } + ;; -fetch_downstream pret/pokecrystal 2022-09-29 70a3ec1accb6de1c1c273470af0ddfa2edc1b0a9 -fetch_downstream pret/pokered 2022-09-29 2b52ceb718b55dce038db24d177715ae4281d065 -fetch_downstream AntonioND/ucity 2022-04-20 d8878233da7a6569f09f87b144cb5bf140146a0f + *) + echo "Fetching test dependency repositories" + + action() { # owner/repo shallow-since commit + if [ ! -d ${1##*/} ]; then + git clone https://github.com/$1.git --shallow-since=$2 --single-branch + fi + pushd ${1##*/} + git checkout -f $3 + if [ -f ../patches/${1##*/}.patch ]; then + git apply --ignore-whitespace ../patches/${1##*/}.patch + fi + popd + } +esac + +action pret/pokecrystal 2022-09-29 70a3ec1accb6de1c1c273470af0ddfa2edc1b0a9 +action pret/pokered 2022-09-29 2b52ceb718b55dce038db24d177715ae4281d065 +action AntonioND/ucity 2022-04-20 d8878233da7a6569f09f87b144cb5bf140146a0f