Implement testcase caching for GitHub Actions by moving storage from /tmp to project directory #163
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
The
oj_test
tool currently saves downloaded test cases to the/tmp
directory, which means test cases are re-downloaded on every GitHub Actions run. This leads to:Solution
This PR implements testcase caching by moving test case storage from
/tmp
to a project-localtestcases/
directory and adding GitHub Actions cache configuration.Changes Made
Modified test case storage location (
tool/oj_test/src/lib.rs
):Added
.gitignore
entry to exclude test cases from version control:Enhanced GitHub Actions workflow (
.github/workflows/rust.yml
) with caching:Benefits
Testing
.gitignore
correctly excludestestcases/
directoryThe cache will be populated on the first workflow run and reused on subsequent runs, significantly improving CI performance for this competitive programming repository.
This pull request was created as a result of the following prompt from Copilot chat.
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.