cargo-semver-checks/.github/workflows/test-cache.yml
Mieszko Grodzicki 461983b3bb
Add test for baseline caching (#33)
* Cache test

* Baseline caching - initial work

* Add comment explaining the change of CARGO_TARGET_DIR.

* Update README.md

Co-authored-by: Predrag Gruevski <2348618+obi1kenobi@users.noreply.github.com>

* Refactor getRustcVersion and getCargoSemverChecksVersion

* Move helper functions outside RustdocCache class.

* cachePath passed in constructor

* workspaceRoot as constructor argument

* Inline getManifestDir

* Change target to semver-checks/target

* Fix missing hash-files

* Add workflow testing caching

* New line

* Add checking the updated cache

* Missing semicolon

* Bad job name in cache key

* Upload cache if its hash changes

* Test options cache-key and prefix-key

* Need to use restore-keys

* Is path a problem?

* Absolute path

* Move

* Fix restore inputs

* Verify

* Revert debug

* Rustc and semver-checks versions should not be fixed!

* debug test

* key not being a prefix

* Missing outputs

* Revert letter change in hash

* Update CI README

* TODO comments, shorter names

* Better names

* check the key

* Missing '

* Remove space

* Missing outputs

* Remove hash check

---------

Co-authored-by: Predrag Gruevski <2348618+obi1kenobi@users.noreply.github.com>

* Remove inconsistent newlines from workflows README

---------

Co-authored-by: Predrag Gruevski <2348618+obi1kenobi@users.noreply.github.com>
2023-04-07 10:54:46 -04:00

62 lines
2.4 KiB
YAML

name: Test rustdoc caching
# Assumes that the latest published normal version of `ref_slice` smaller
# than 1.2.2 is 1.2.1.
# TODO: Change the crate version in the corresponding branches `patch_change`
# and `major_change` to 1.2.1 once new logic of choosing baseline is adapted.
# Otherwise if new version 1.2.2 of `ref_slice` is released, the tests might
# stop working correctly.
on:
workflow_call:
jobs:
test-cache-exists:
name: Check if the cache exists after running the action
runs-on: ubuntu-latest
steps:
- name: Checkout the test repository and test with patch change and patch version bump
uses: actions/checkout@v3
with:
path: 'ref_slice'
repository: mgr0dzicki/cargo-semver-action-ref-slice
ref: patch_change
- name: Checkout the action
uses: actions/checkout@v3
with:
path: action
- name: Run the action
uses: ./action/
with:
manifest-path: 'ref_slice/Cargo.toml'
cache-key: testkey
prefix-key: testprefix
- name: Check if the cache directory exists
run: |
if ! grep -q "ref_slice-1.2.1/src/lib.rs" "semver-checks/target/semver-checks/cache/registry-ref_slice-1_2_1.json"; then
echo "Non-existent or invalid cache file!"
exit 1
fi
- name: Move the cache created by the action
run: |
mv semver-checks/target/semver-checks/cache action-cache
- name: Generate primary cache key
id: generate_key
run: |
RUSTC=$(rustc --version | sed -e 's/\s\+/-/g')
SEMVER_CHECKS=$(cargo semver-checks --version | sed -e 's/\s\+/-/g')
echo "KEY=testprefix-testkey-linux-$RUSTC-$SEMVER_CHECKS-da39a3ee5e6b4b0d3255bfef95601890afd80709-semver-checks-rustdoc" >> $GITHUB_OUTPUT
- name: Download saved cache
uses: actions/cache/restore@v3
with:
path: ${{ github.workspace }}/semver-checks/target/semver-checks/cache
fail-on-cache-miss: true
key: not_a_prefix
restore-keys: |
${{ steps.generate_key.outputs.KEY }}
- name: Compare local and downloaded cache files
run: |
if ! diff -r "semver-checks/target/semver-checks/cache" "action-cache"; then
echo "Downloaded cache does not match the local version!"
exit 1
fi