Skip to content

Test action

Test action #30

Workflow file for this run

# This workflow runs CI tests for the main package and Examples package
name: CI
# Trigger the workflow on push to main, any pull request, or manual dispatch
on:
push:
branches:
- main
pull_request:
branches:
- '*'
workflow_dispatch:
# Ensure only one workflow per ref is running at a time
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
macos:
name: macOS - ${{ matrix.package }} (Xcode ${{ matrix.xcode }})
runs-on: macos-14
strategy:
matrix:
xcode:
- '15.4'
- '15.0'
package:
- 'main'
- 'Examples'
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Select Xcode ${{ matrix.xcode }}
run: sudo xcode-select -s /Applications/Xcode_${{ matrix.xcode }}.app
- name: Print Swift version
run: swift --version
# Set working directory to Examples if testing the examples package
- name: Set working directory
run: |
if [ "${{ matrix.package }}" = "Examples" ]; then
cd Examples
fi
- name: Build package
run: swift build
- name: Run tests
run: swift test
# linux:
# name: Ubuntu - ${{ matrix.package }} (Swift ${{ matrix.swift }})
# runs-on: ubuntu-latest
# strategy:
# matrix:
# swift:
# - '5.10'
# - '5.9'
# package:
# - 'main'
# - 'Examples'
# container: swift:${{ matrix.swift }}
# steps:
# - name: Checkout repository
# uses: actions/checkout@v4
# # Set working directory to Examples if testing the examples package
# - name: Set working directory
# run: |
# if [ "${{ matrix.package }}" = "Examples" ]; then
# cd Examples
# fi
# - name: Build package
# run: swift build
# - name: Run tests
# run: swift test
# windows:
# name: Windows - ${{ matrix.package }} (Swift ${{ matrix.swift }})
# runs-on: windows-latest
# strategy:
# matrix:
# swift:
# - '5.10'
# - '5.9.1' # Macros has been added to Swift on Windows in 5.9.1 version
# package:
# - 'main'
# - 'Examples'
# steps:
# - name: Checkout repository
# uses: actions/checkout@v4
# - name: Install Swift
# uses: compnerd/gha-setup-swift@main
# with:
# branch: swift-${{ matrix.swift }}-release
# tag: ${{ matrix.swift }}-RELEASE
# # Set working directory to Examples if testing the examples package
# - name: Set working directory
# run: |
# if ("${{ matrix.package }}" -eq "Examples") {
# cd Examples
# }
# - name: Build package
# run: swift build
# # Looks like tests don't work on Windows
# # - name: Run tests
# # run: swift test
# code-coverage:
# name: Gather Code Coverage
# needs: macos
# runs-on: macos-14
# steps:
# - name: Checkout repository
# uses: actions/checkout@v4
# - name: Select latest Xcode
# run: sudo xcode-select -s /Applications/Xcode_15.4.app
# - name: Build and test with coverage
# run: swift test -Xswiftc -Xfrontend -Xswiftc -dump-macro-expansions --enable-code-coverage
# - name: Gather code coverage
# run: |
# BUILD_PATH=$(swift build --show-bin-path)
# xcrun llvm-cov report \
# $BUILD_PATH/swift-spyablePackageTests.xctest/Contents/MacOS/swift-spyablePackageTests \
# -instr-profile=$BUILD_PATH/codecov/default.profdata \
# -ignore-filename-regex=".build|Tests" -use-color
# xcrun llvm-cov export -format="lcov" \
# $BUILD_PATH/swift-spyablePackageTests.xctest/Contents/MacOS/swift-spyablePackageTests \
# -instr-profile=$BUILD_PATH/codecov/default.profdata \
# -ignore-filename-regex=".build|Tests" > coverage_report.lcov
# - name: Upload coverage reports to Codecov
# uses: codecov/codecov-action@v4
# with:
# token: ${{ secrets.CODECOV_TOKEN }}
# files: ./coverage_report.lcov
check-compatibility:
strategy:
matrix:
swift-syntax-version: ['508.0.0', '509.0.0', '510.0.0']
fail-fast: false
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Run Macro Compatibility Check
uses: Matejkob/swift-macro-compatibility-check@v1
with:
swift-syntax-version: ${{ matrix.swift-syntax-version }}