Optimize array usage, plus other minor tweaks #172
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: Build | |
on: [ push, pull_request ] | |
env: | |
MONO_TAG: "6.0.0.334" | |
jobs: | |
build-and-test: | |
name: Build and test | |
strategy: | |
matrix: | |
os: [ ubuntu-latest, windows-latest, macos-13 ] | |
# NOTE: If we wanted to use `macos-latest` we would have to move the .NET Core 2.1 and 3.1 builds and test runs | |
# to a separate job. This is because `macos-14` and newer are ARM-only and those target frameworks don't support | |
# that architecture, causing `dotnet` to want to fall back to X64. However, once we install .NET 6 or newer, | |
# we get a toolchain that only has ARM support and no X64 support, so that fallback will no longer work. | |
# Using `macos-13` is (for the time being, while still available) the simpler solution as it is not ARM-based yet, | |
# so there won't be any architecture mismatch in the first place. | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
# Several .NET Core versions will be used during the test run. | |
# The lowest version gets installed first in order to prevent | |
# "a newer version is already installed" install errors. | |
- name: Install .NET Core 2.1 | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: 2.1.x | |
- name: Install .NET Core 3.1 | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: 3.1.x | |
- name: Install .NET 6.0 | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: 6.0.x | |
# Building requires an up-to-date .NET SDK. | |
- name: Install .NET 7.0 | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: 7.0.x | |
# ----- | |
# Build | |
# ----- | |
- name: Restore NuGet packages | |
run: dotnet restore | |
- name: Build all targets | |
run: dotnet build -c Release --no-restore | |
# ---- | |
# Test | |
# ---- | |
- name: Test on .NET Core 2.1 | |
run: dotnet test -c Release -f netcoreapp2.1 --no-build --no-restore -l "console;verbosity=detailed" | |
- name: Test on .NET Core 3.1 | |
run: dotnet test -c Release -f netcoreapp3.1 --no-build --no-restore -l "console;verbosity=detailed" | |
- name: Test on .NET 6.0 | |
run: dotnet test -c Release -f net6.0 --no-build --no-restore -l "console;verbosity=detailed" | |
- name: Test on .NET Framework 4.6.2 (Windows only) | |
if: matrix.os == 'windows-latest' | |
run: dotnet test -c Release -f net462 --no-build --no-restore -l "console;verbosity=detailed" | |
- name: Test on .NET Framework 4.6.2 using Mono (Linux only) | |
if: matrix.os == 'ubuntu-latest' | |
run: | | |
docker run --rm -v "$PWD":'/project' -w='/project' mono:$MONO_TAG bash -c 'mono ./src/Castle.Core.Tests/bin/Release/net462/Castle.Core.Tests.exe && mono ./src/Castle.Core.Tests.WeakNamed/bin/Release/net462/Castle.Core.Tests.WeakNamed.exe' |