shithub: rgbds

Download patch

ref: 03b6dd93214f0af3aaa0176725e5e7cdac002dac
parent: a16d3d640512b4bec17eaafa3ea4a216f71bc551
author: ISSOtm <[email protected]>
date: Sat Nov 12 09:03:35 EST 2022

Only cache dependency directories instead of whole test/

Otherwise, changes made to the test suite are not picked up

--- a/.github/workflows/testing.yml
+++ b/.github/workflows/testing.yml
@@ -55,13 +55,21 @@
         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 @@
         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 @@
         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
--- a/test/fetch-test-deps.sh
+++ b/test/fetch-test-deps.sh
@@ -4,20 +4,35 @@
 
 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