mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-07-09 20:11:29 +00:00
* ci: run unit tests on Windows and macOS The Unit Tests CI job only ran on Linux, so platform-specific bugs invisible to a Linux build could land undetected (e.g. the MSVC-only NfpPlacer crash fixed in #14267). The full non-[NotWorking] suite already builds and passes on every shipped arch, so this wires them into CI. A reusable unit_tests.yml, called once per built arch, downloads that arch's test artifact and runs ctest. Each build leg builds the test executables and uploads them; a single publish_test_results job on Linux aggregates the JUnit results into one check. Coverage: Linux x86_64 + aarch64, Windows x64 + arm64, macOS arm64. macOS x86_64 is deferred (cross-built on arm64, needs Rosetta). - build_release_vs.bat: "tests" token enables BUILD_TESTS - build_release_macos.sh: -T builds and runs tests; ORCA_TESTS_BUILD_ONLY builds them without running (used by CI) - scripts/run_unit_tests.sh: parameterized test dir and build config Addresses #11273. * ci: bump actions/checkout to v7 in reusable unit_tests workflow Match the actions/checkout v6->v7 bump (#14517) that upstream applied to the inline test job this reusable workflow replaces.
74 lines
2.4 KiB
YAML
74 lines
2.4 KiB
YAML
name: Unit Tests
|
|
|
|
# Download a platform's test artifact, run ctest, and upload the JUnit
|
|
# results for aggregation. Called once per arch from build_all.yml.
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
os:
|
|
required: true
|
|
type: string
|
|
artifact:
|
|
description: Test artifact uploaded by the build leg
|
|
required: true
|
|
type: string
|
|
test-dir:
|
|
description: Built tests dir; defaults to build/tests, override for arch-separated builds
|
|
required: false
|
|
type: string
|
|
default: build/tests
|
|
|
|
jobs:
|
|
unit_tests:
|
|
# Static "Unit Tests"; the per-arch label is the caller's job name, so the
|
|
# graph shows e.g. "Windows x64 / Unit Tests".
|
|
name: Unit Tests
|
|
runs-on: ${{ inputs.os }}
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v7
|
|
with:
|
|
# tests/data is referenced by absolute path (TEST_DATA_DIR).
|
|
sparse-checkout: |
|
|
.github
|
|
scripts
|
|
tests
|
|
- name: Apt-Install Dependencies
|
|
if: runner.os == 'Linux' && !vars.SELF_HOSTED
|
|
uses: ./.github/actions/apt-install-deps
|
|
- name: Restore Test Artifact
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: ${{ inputs.artifact }}
|
|
- uses: lukka/get-cmake@latest
|
|
with:
|
|
cmakeVersion: "~4.3.0" # use most recent 4.3.x version
|
|
useLocalCache: true
|
|
useCloudCache: true
|
|
- name: Unpackage and Run Unit Tests
|
|
timeout-minutes: 20
|
|
shell: bash
|
|
run: |
|
|
tar -xvf build_tests.tar
|
|
# Multi-config generators (Windows/macOS) need a config; Linux is single-config.
|
|
scripts/run_unit_tests.sh "${{ inputs.test-dir }}" "${{ runner.os != 'Linux' && 'Release' || '' }}"
|
|
- name: Upload Test Logs
|
|
if: ${{ failure() }}
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: unit-test-logs-${{ inputs.artifact }}
|
|
path: ${{ inputs.test-dir }}/**/*.log
|
|
- name: Upload Test Results
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: test-results-${{ inputs.artifact }}
|
|
path: ctest_results.xml
|
|
retention-days: 5
|
|
if-no-files-found: warn
|
|
- name: Delete Test Artifact
|
|
if: success()
|
|
uses: geekyeggo/delete-artifact@v6
|
|
with:
|
|
name: ${{ inputs.artifact }}
|