Skip to content

build(deps): bump @iconify-icons/vscode-icons in /apps/inspector #370

build(deps): bump @iconify-icons/vscode-icons in /apps/inspector

build(deps): bump @iconify-icons/vscode-icons in /apps/inspector #370

Workflow file for this run

name: CI
on:
workflow_call:
push:
pull_request:
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
build-and-test:
name: Build and test
runs-on: ubuntu-latest
steps:
- name: Check out source
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ github.sha }}
fetch-depth: 0
- name: Set up .NET
uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6.0.0
with:
global-json-file: global.json
cache: true
cache-dependency-path: "**/*.csproj"
- name: Verify .sln project-list parity
run: node tools/quality/solution-parity.mjs
- name: Restore .NET tools
run: dotnet tool restore
- name: Set up Node.js for repository tooling
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 26.5.0
- name: Verify managed API baseline
env:
# PublicApiGenerator.Tool targets net6.0; the runner only has 8.x/9.x/10.x shared runtimes installed.
DOTNET_ROLL_FORWARD: LatestMajor
run: node tools/quality/managed-api-baseline.mjs compare
- name: Check changed C# documentation
env:
DIFF_BASE: ${{ github.event.pull_request.base.sha || github.event.before }}
run: |
if [ -z "$DIFF_BASE" ] || [ "$DIFF_BASE" = "0000000000000000000000000000000000000000" ]; then DIFF_BASE=$(git rev-parse HEAD^); fi
node tools/quality/changed-documentation.mjs --base "$DIFF_BASE" --language csharp
- name: Restore dependencies
run: dotnet restore ./CStructSharp.NonWeb.sln
- name: Build
run: dotnet build ./CStructSharp.NonWeb.sln -c Release --no-restore
- name: Verify formatting and analyzer style
run: dotnet format ./CStructSharp.NonWeb.sln --verify-no-changes --severity warn --no-restore
- name: Run synthetic memory consumer on both frameworks
run: |
dotnet run --project docs/examples/memory-analysis -c Release -f net8.0 --no-build
dotnet run --project docs/examples/memory-analysis -c Release -f net10.0 --no-build
- name: Test .NET 8
run: >-
dotnet test ./tests/CStructSharpTests/CStructSharpTests.csproj
-c Release
-f net8.0
--no-build
--logger trx
--results-directory ./artifacts/test-results
- name: Test .NET 10 suites and enforce whole-library coverage
run: |
node tools/quality/collect-library-coverage.mjs
node tools/quality/coverage-risk.mjs --coverage-path artifacts/test-results/library-coverage/coverage.cobertura.xml --collection-manifest artifacts/test-results/library-coverage/collection.json --population-policy contracts/quality/coverage-population.json --output-directory artifacts/test-results/library-risk --minimum-line-percent 78 --minimum-branch-percent 80 --maximum-high-risk-files 0 --maximum-critical-risk-files 0
- name: Check generated fixtures and .NET 8 parity
run: |
node tools/quality/generate-parity-layouts.mjs --check
dotnet test ./tests/CStructSharp.Generated.Parity/CStructSharp.Generated.Parity.csproj -c Release -f net8.0 --no-build --logger trx --results-directory ./artifacts/test-results/parity
- name: Generate README quality badges
run: >-
node tools/quality/readme-badges.mjs
--results-directory artifacts/test-results/library-coverage/badge-input
--output-directory artifacts/readme-badges
--run-url "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
- name: Test memory coverage
run: |
dotnet test tests/CStructSharpTests/CStructSharpTests.csproj -c Release -f net10.0 --no-build --filter FullyQualifiedName~Memory --collect:"XPlat Code Coverage" --results-directory artifacts/test-results/memory -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Include="[CStructSharp]CStructSharp.Memory.*"
coverage=$(find artifacts/test-results/memory -name coverage.cobertura.xml | head -n 1)
node tools/quality/coverage-risk.mjs --coverage-path "$coverage" --output-directory artifacts/test-results/memory-risk --minimum-line-percent 78 --minimum-branch-percent 80 --maximum-high-risk-files 0 --maximum-critical-risk-files 0
- name: Upload README quality badges
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: readme-badges
path: artifacts/readme-badges
- name: Verify quality contracts
run: |
node --test tools/quality/*.test.mjs
node tools/quality/browser-contract.mjs
node tools/quality/fuzz-corpus.mjs
node tools/quality/compiler-fixture.mjs validate
node tools/quality/compiler-fixture.mjs table --check
node tools/quality/non-web-release-budgets.mjs --self-test
node tools/quality/render-performance-table.mjs --self-test
- name: Pack and verify actual NuGet consumers
run: |
dotnet pack src/CStructSharp/CStructSharp.csproj -c Release -o artifacts/package
node tools/packaging/validate-package.mjs --package-path artifacts/package/*.nupkg --symbol-package-path artifacts/package/*.snupkg
node tools/packaging/test-package-consumer.mjs --package-directory artifacts/package
node tools/packaging/test-onboarding-package.mjs --package-directory artifacts/package
node tools/packaging/test-memory-package-consumer.mjs --package-directory artifacts/package
- name: Publish and run the Native AOT consumer
run: |
dotnet publish tests/CStructSharp.AotConsumer/CStructSharp.AotConsumer.csproj -c Release -r linux-x64 -p:CppCompilerAndLinker=clang
./tests/CStructSharp.AotConsumer/bin/Release/net10.0/linux-x64/publish/CStructSharp.AotConsumer
- name: Upload test results
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: test-results
path: |
artifacts/test-results/**/*.trx
artifacts/test-results/**/coverage.cobertura.xml
artifacts/test-results/library-coverage/**
artifacts/test-results/library-risk/**
if-no-files-found: warn
# Windows and macOS run the managed suite only (no coverage, packaging, or AOT); the Linux job above stays the
# full gate. Path separators, CR/LF layout text, culture, and Stream behaviors differ per platform.
cross-platform-tests:
name: Managed tests on ${{ matrix.os }}
needs: build-and-test
strategy:
fail-fast: false
matrix:
os: [windows-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Check out source
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Set up .NET
uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6.0.0
with:
global-json-file: global.json
- name: Restore dependencies
run: dotnet restore ./CStructSharp.NonWeb.sln
- name: Build
run: dotnet build ./CStructSharp.NonWeb.sln -c Release --no-restore
- name: Test .NET 8 and .NET 10
run: dotnet test ./tests/CStructSharpTests/CStructSharpTests.csproj -c Release --no-build --logger trx --results-directory ./artifacts/test-results/${{ matrix.os }}
# Generated code is platform-neutral; this leg checks the netstandard2.0 generator's load path on each host's compiler.
- name: Test generated parity
run: dotnet test ./tests/CStructSharp.Generated.Parity/CStructSharp.Generated.Parity.csproj -c Release --no-build --logger trx --results-directory ./artifacts/test-results/${{ matrix.os }}
- name: Upload test results
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: test-results-${{ matrix.os }}
path: artifacts/test-results/**/*.trx
if-no-files-found: warn