leap: sync #652
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Exercise CI | |
on: | |
workflow_dispatch: | |
push: | |
branches: | |
- main | |
paths: | |
- "exercises/**" | |
- "runtests.jl" | |
- ".github/workflows/exercise-tests.yml" | |
pull_request: | |
paths: | |
- "exercises/**" | |
- "runtests.jl" | |
- ".github/workflows/exercise-tests.yml" | |
jobs: | |
test: | |
name: Julia ${{ matrix.julia-version }} - ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
julia-version: ["1.6", "1", nightly] | |
os: [ubuntu-22.04, windows-2022, macOS-latest] | |
steps: | |
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
- uses: julia-actions/setup-julia@f40c4b69330df1d22e7590c12e76dc2f9c66e0bc | |
with: | |
version: ${{ matrix.julia-version }} | |
- uses: julia-actions/cache@569d290d51d6c22c1cd4ceec591a1bf112aab9c0 | |
- name: Install test dependencies | |
run: julia --color=yes --project -e "using Pkg; Pkg.instantiate()" | |
- name: Test exercises | |
run: julia --color=yes --project runtests.jl | |
test-runner: | |
name: Julia Test Runner | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
- name: Pull julia-test-runner image | |
run: docker pull exercism/julia-test-runner | |
- name: Install Julia dependencies | |
run: julia --color=yes --project -e "using Pkg; Pkg.instantiate()" | |
- name: Generate test reports using julia-test-runner | |
id: generate-reports | |
run: julia --color=yes --project runtestrunner.jl | |
- name: Upload reports as artifact | |
uses: actions/upload-artifact@1eb3cb2b3e0f29609092a73eb033bb759a334595 | |
with: | |
name: test-reports | |
path: ${{ steps.generate-reports.outputs.results-path }} | |
- name: Check if all tests passed | |
run: | | |
using JSON | |
any_errors = false | |
for report in readdir(ENV["RESULTS"]) | |
result = JSON.parsefile(joinpath(ENV["RESULTS"], report)) | |
if result["status"] != "pass" | |
global any_errors = true | |
@error "Exercise failed tests" report | |
run(`jq -C '.' $(joinpath(ENV["RESULTS"], report))`) | |
end | |
end | |
any_errors && exit(1) | |
env: | |
RESULTS: ${{ steps.generate-reports.outputs.results-path }} | |
shell: julia --color=yes --project {0} |