mirror of
https://github.com/Smaug123/unofficial-nunit-runner
synced 2025-10-05 17:38:40 +00:00
Add Actions (#1)
This commit is contained in:
16
.github/dependabot.yml
vendored
Normal file
16
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# yaml-language-server: $schema=https://json.schemastore.org/dependabot-2.0.json
|
||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
|
||||||
|
- package-ecosystem: "github-actions"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: "weekly"
|
||||||
|
|
||||||
|
- package-ecosystem: "nuget"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: "weekly"
|
||||||
|
ignore:
|
||||||
|
# Target the lowest version of FSharp.Core, for max compat
|
||||||
|
- dependency-name: "FSharp.Core"
|
133
.github/workflows/dotnet.yaml
vendored
Normal file
133
.github/workflows/dotnet.yaml
vendored
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/SchemaStore/schemastore/master/src/schemas/json/github-workflow.json
|
||||||
|
name: .NET
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ main ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ main ]
|
||||||
|
|
||||||
|
env:
|
||||||
|
DOTNET_NOLOGO: true
|
||||||
|
DOTNET_CLI_TELEMETRY_OPTOUT: true
|
||||||
|
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
|
||||||
|
NUGET_XMLDOC_MODE: ''
|
||||||
|
DOTNET_MULTILEVEL_LOOKUP: 0
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
config:
|
||||||
|
- Release
|
||||||
|
- Debug
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0 # so that NerdBank.GitVersioning has access to history
|
||||||
|
- name: Install Nix
|
||||||
|
uses: cachix/install-nix-action@V27
|
||||||
|
with:
|
||||||
|
extra_nix_config: |
|
||||||
|
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- name: Restore dependencies
|
||||||
|
run: nix develop --command dotnet restore
|
||||||
|
- name: Build
|
||||||
|
run: nix develop --command dotnet build --no-restore --configuration ${{matrix.config}}
|
||||||
|
- name: Test
|
||||||
|
run: nix develop --command dotnet test --no-build --verbosity normal --configuration ${{matrix.config}}
|
||||||
|
|
||||||
|
analyzers:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
security-events: write
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0 # so that NerdBank.GitVersioning has access to history
|
||||||
|
- name: Install Nix
|
||||||
|
uses: cachix/install-nix-action@V27
|
||||||
|
with:
|
||||||
|
extra_nix_config: |
|
||||||
|
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- name: Prepare analyzers
|
||||||
|
run: nix develop --command dotnet restore analyzers/analyzers.fsproj
|
||||||
|
- name: Build project
|
||||||
|
run: nix develop --command dotnet build ./TestRunner/TestRunner.fsproj
|
||||||
|
- name: Run analyzers
|
||||||
|
run: nix run .#fsharp-analyzers -- --project ./TestRunner/TestRunner.fsproj --analyzers-path ./.analyzerpackages/g-research.fsharp.analyzers/*/ --verbosity detailed --report ./analysis.sarif --treat-as-error GRA-STRING-001 GRA-STRING-002 GRA-STRING-003 GRA-UNIONCASE-001 GRA-INTERPOLATED-001 GRA-TYPE-ANNOTATE-001 GRA-VIRTUALCALL-001 GRA-IMMUTABLECOLLECTIONEQUALITY-001 GRA-JSONOPTS-001 GRA-LOGARGFUNCFULLAPP-001 GRA-DISPBEFOREASYNC-001 --exclude-analyzers PartialAppAnalyzer
|
||||||
|
|
||||||
|
build-nix:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Install Nix
|
||||||
|
uses: cachix/install-nix-action@V27
|
||||||
|
with:
|
||||||
|
extra_nix_config: |
|
||||||
|
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- name: Build
|
||||||
|
run: nix build
|
||||||
|
|
||||||
|
check-dotnet-format:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Install Nix
|
||||||
|
uses: cachix/install-nix-action@V27
|
||||||
|
with:
|
||||||
|
extra_nix_config: |
|
||||||
|
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- name: Run Fantomas
|
||||||
|
run: nix run .#fantomas -- --check .
|
||||||
|
|
||||||
|
check-nix-format:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Install Nix
|
||||||
|
uses: cachix/install-nix-action@V27
|
||||||
|
with:
|
||||||
|
extra_nix_config: |
|
||||||
|
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- name: Run Alejandra
|
||||||
|
run: nix develop --command alejandra --check .
|
||||||
|
|
||||||
|
linkcheck:
|
||||||
|
name: Check links
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@master
|
||||||
|
- name: Install Nix
|
||||||
|
uses: cachix/install-nix-action@V27
|
||||||
|
with:
|
||||||
|
extra_nix_config: |
|
||||||
|
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- name: Run link checker
|
||||||
|
run: nix develop --command markdown-link-check README.md
|
||||||
|
|
||||||
|
flake-check:
|
||||||
|
name: Check flake
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@master
|
||||||
|
- name: Install Nix
|
||||||
|
uses: cachix/install-nix-action@V27
|
||||||
|
with:
|
||||||
|
extra_nix_config: |
|
||||||
|
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- name: Flake check
|
||||||
|
run: nix flake check
|
||||||
|
|
||||||
|
all-required-checks-complete:
|
||||||
|
needs: [check-dotnet-format, check-nix-format, build, build-nix, linkcheck, flake-check, analyzers]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- run: echo "All required checks complete."
|
@@ -161,7 +161,7 @@ module FilterIntermediate =
|
|||||||
ConsumeBeforeInitialToken = false
|
ConsumeBeforeInitialToken = false
|
||||||
ConsumeAfterFinalToken = false
|
ConsumeAfterFinalToken = false
|
||||||
BoundaryTokens = [ TokenType.CloseParen ]
|
BoundaryTokens = [ TokenType.CloseParen ]
|
||||||
Construct = Seq.exactlyOne
|
Construct = List.exactlyOne
|
||||||
}
|
}
|
||||||
|
|
||||||
let parse (s : string) : FilterIntermediate =
|
let parse (s : string) : FilterIntermediate =
|
||||||
|
@@ -129,6 +129,11 @@ type TestFailure =
|
|||||||
| TestReturnedNonUnit of obj
|
| TestReturnedNonUnit of obj
|
||||||
| TestThrew of exn
|
| TestThrew of exn
|
||||||
|
|
||||||
|
override this.ToString () =
|
||||||
|
match this with
|
||||||
|
| TestFailure.TestReturnedNonUnit ret -> $"Test returned a non-unit: %O{ret}"
|
||||||
|
| TestFailure.TestThrew exc -> $"Test threw: %s{exc.Message}\n %s{exc.StackTrace}"
|
||||||
|
|
||||||
[<RequireQualifiedAccess>]
|
[<RequireQualifiedAccess>]
|
||||||
module TestFixture =
|
module TestFixture =
|
||||||
let private runOne (test : MethodInfo) (args : obj[]) : Result<unit, TestFailure> =
|
let private runOne (test : MethodInfo) (args : obj[]) : Result<unit, TestFailure> =
|
||||||
@@ -229,7 +234,7 @@ module TestFixture =
|
|||||||
for result in results do
|
for result in results do
|
||||||
match result with
|
match result with
|
||||||
| Error exc ->
|
| Error exc ->
|
||||||
eprintfn $"Test failed: {exc}"
|
eprintfn $"Test failed: %O{exc}"
|
||||||
Interlocked.Increment testFailures |> ignore<int>
|
Interlocked.Increment testFailures |> ignore<int>
|
||||||
| Ok () -> Interlocked.Increment testSuccess |> ignore<int>
|
| Ok () -> Interlocked.Increment testSuccess |> ignore<int>
|
||||||
|
|
||||||
|
16
analyzers/analyzers.fsproj
Normal file
16
analyzers/analyzers.fsproj
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<Project Sdk="Microsoft.Build.NoTargets/1.0.80"> <!-- This is not a project we want to build. -->
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<IsPackable>false</IsPackable>
|
||||||
|
<IsPublishable>false</IsPublishable>
|
||||||
|
<RestorePackagesPath>../.analyzerpackages/</RestorePackagesPath>
|
||||||
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
|
<DisableImplicitNuGetFallbackFolder>true</DisableImplicitNuGetFallbackFolder>
|
||||||
|
<AutomaticallyUseReferenceAssemblyPackages>false</AutomaticallyUseReferenceAssemblyPackages> <!-- We don't want to build this project, so we do not need the reference assemblies for the framework we chose.-->
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageDownload Include="G-Research.FSharp.Analyzers" Version="[0.10.0]" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
Reference in New Issue
Block a user