mirror of
https://github.com/Smaug123/unofficial-nunit-runner
synced 2025-10-07 02:08:40 +00:00
Compare commits
53 Commits
WoofWare.N
...
WoofWare.N
Author | SHA1 | Date | |
---|---|---|---|
|
f264fca446 | ||
|
8dd18603d6 | ||
|
012b4a6e03 | ||
|
51918f6d35 | ||
|
225b2645b0 | ||
|
5c05d29917 | ||
|
33aa337598 | ||
|
daa53a84a5 | ||
|
4c9568819a | ||
|
6ab8316b2b | ||
|
600772a81f | ||
|
c6b735816e | ||
|
29c3c17bc0 | ||
|
512b41d7c1 | ||
|
f920e597bd | ||
|
226da02b1b | ||
|
e9b9366b90 | ||
|
e7c31b5366 | ||
|
9d26610384 | ||
|
61fbb5f55b | ||
|
d9938d96a3 | ||
|
874a367ce3 | ||
|
4300fbe6b8 | ||
|
402b98f85c | ||
|
a795d6222c | ||
|
cf482b677b | ||
|
db27a7acc8 | ||
|
99826df864 | ||
|
1c93b2c4b2 | ||
|
4369b35dd1 | ||
|
a183455f55 | ||
|
de5f5a64ef | ||
|
fdddbf828b | ||
|
67d9d71100 | ||
|
c39745280b | ||
|
26c29d63bc | ||
|
78f7f76074 | ||
|
c2401207c4 | ||
|
46e097a02e | ||
|
7c23c3bb1c | ||
|
ace1417de6 | ||
|
a694637958 | ||
|
8626cc1252 | ||
|
0287a6b7eb | ||
|
8579ee8f8b | ||
|
debda1a557 | ||
|
bf7d846f61 | ||
|
4690bf23ad | ||
|
04283ee961 | ||
|
6c61c2cbf1 | ||
|
2a0cabd3a9 | ||
|
111e019a83 | ||
|
16d353e8df |
@@ -3,13 +3,13 @@
|
|||||||
"isRoot": true,
|
"isRoot": true,
|
||||||
"tools": {
|
"tools": {
|
||||||
"fantomas": {
|
"fantomas": {
|
||||||
"version": "6.3.15",
|
"version": "7.0.0",
|
||||||
"commands": [
|
"commands": [
|
||||||
"fantomas"
|
"fantomas"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"fsharp-analyzers": {
|
"fsharp-analyzers": {
|
||||||
"version": "0.27.0",
|
"version": "0.29.0",
|
||||||
"commands": [
|
"commands": [
|
||||||
"fsharp-analyzers"
|
"fsharp-analyzers"
|
||||||
]
|
]
|
||||||
|
1
.fantomasignore
Normal file
1
.fantomasignore
Normal file
@@ -0,0 +1 @@
|
|||||||
|
.direnv/
|
177
.github/workflows/dotnet.yaml
vendored
177
.github/workflows/dotnet.yaml
vendored
@@ -29,7 +29,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
fetch-depth: 0 # so that NerdBank.GitVersioning has access to history
|
fetch-depth: 0 # so that NerdBank.GitVersioning has access to history
|
||||||
- name: Install Nix
|
- name: Install Nix
|
||||||
uses: cachix/install-nix-action@V28
|
uses: cachix/install-nix-action@v30
|
||||||
with:
|
with:
|
||||||
extra_nix_config: |
|
extra_nix_config: |
|
||||||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
||||||
@@ -38,7 +38,30 @@ jobs:
|
|||||||
- name: Build
|
- name: Build
|
||||||
run: 'nix develop --command dotnet build --no-restore --configuration ${{matrix.config}}'
|
run: 'nix develop --command dotnet build --no-restore --configuration ${{matrix.config}}'
|
||||||
- name: Test
|
- name: Test
|
||||||
run: 'nix develop --command dotnet test --no-build --verbosity normal --configuration ${{matrix.config}} --framework net8.0'
|
run: |
|
||||||
|
nix develop --command dotnet test --no-build --verbosity normal --configuration ${{matrix.config}} --framework net8.0 --filter 'FullyQualifiedName !~ FailingConsumer'
|
||||||
|
|
||||||
|
selftest-intended-failures:
|
||||||
|
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@v30
|
||||||
|
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 Release'
|
||||||
|
- name: Test using self
|
||||||
|
run: 'nix develop --command dotnet exec ./WoofWare.NUnitTestRunner/bin/Release/net6.0/WoofWare.NUnitTestRunner.dll ./FailingConsumer/bin/Release/net8.0/FailingConsumer.dll --trx TrxOut/out.trx || true'
|
||||||
|
- name: Munge output
|
||||||
|
run: 'nix develop --command xmlstarlet sel -N x="http://microsoft.com/schemas/VisualStudio/TeamTest/2010" -t -m "//x:UnitTestResult" -v "@testName" -o ": " -v ".//x:ErrorInfo/x:Message" -n TrxOut/out.trx > snapshot.txt'
|
||||||
|
- name: Check output matches expected
|
||||||
|
run: 'actual=$(cat snapshot.txt | sort) expected=$(cat FailingConsumer/expected.txt | sort) [ "$expected" == "$actual" ]'
|
||||||
|
|
||||||
selftest:
|
selftest:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -62,7 +85,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
fetch-depth: 0 # so that NerdBank.GitVersioning has access to history
|
fetch-depth: 0 # so that NerdBank.GitVersioning has access to history
|
||||||
- name: Install Nix
|
- name: Install Nix
|
||||||
uses: cachix/install-nix-action@V28
|
uses: cachix/install-nix-action@v30
|
||||||
with:
|
with:
|
||||||
extra_nix_config: |
|
extra_nix_config: |
|
||||||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
||||||
@@ -80,48 +103,6 @@ jobs:
|
|||||||
TRX_PATH: ${{ github.workspace }}/TrxOut
|
TRX_PATH: ${{ github.workspace }}/TrxOut
|
||||||
REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
selftest-net6:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
actions: none
|
|
||||||
checks: write
|
|
||||||
contents: read
|
|
||||||
deployments: none
|
|
||||||
id-token: none
|
|
||||||
issues: none
|
|
||||||
discussions: none
|
|
||||||
packages: none
|
|
||||||
pages: none
|
|
||||||
pull-requests: read
|
|
||||||
repository-projects: none
|
|
||||||
security-events: none
|
|
||||||
statuses: read
|
|
||||||
|
|
||||||
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@V28
|
|
||||||
with:
|
|
||||||
extra_nix_config: |
|
|
||||||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
|
||||||
- name: Restore dependencies
|
|
||||||
run: nix develop --command dotnet restore
|
|
||||||
- name: Build runner
|
|
||||||
run: 'nix develop --command dotnet build WoofWare.NUnitTestRunner --configuration Release'
|
|
||||||
- name: Build target
|
|
||||||
run: 'nix develop --command dotnet build Consumer --configuration Release'
|
|
||||||
- name: Test using self
|
|
||||||
run: 'nix develop .#net6 --command ./WoofWare.NUnitTestRunner/bin/Release/net6.0/WoofWare.NUnitTestRunner ./Consumer/bin/Release/net6.0/Consumer.dll --trx TrxOut/out.trx'
|
|
||||||
- name: Parse Trx files
|
|
||||||
uses: NasAmin/trx-parser@v0.6.0
|
|
||||||
if: always()
|
|
||||||
id: trx-parser
|
|
||||||
with:
|
|
||||||
TRX_PATH: ${{ github.workspace }}/TrxOut
|
|
||||||
REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
analyzers:
|
analyzers:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
permissions:
|
||||||
@@ -132,7 +113,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
fetch-depth: 0 # so that NerdBank.GitVersioning has access to history
|
fetch-depth: 0 # so that NerdBank.GitVersioning has access to history
|
||||||
- name: Install Nix
|
- name: Install Nix
|
||||||
uses: cachix/install-nix-action@V28
|
uses: cachix/install-nix-action@v30
|
||||||
with:
|
with:
|
||||||
extra_nix_config: |
|
extra_nix_config: |
|
||||||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
||||||
@@ -149,7 +130,7 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
- name: Install Nix
|
- name: Install Nix
|
||||||
uses: cachix/install-nix-action@V28
|
uses: cachix/install-nix-action@v30
|
||||||
with:
|
with:
|
||||||
extra_nix_config: |
|
extra_nix_config: |
|
||||||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
||||||
@@ -164,7 +145,7 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
- name: Install Nix
|
- name: Install Nix
|
||||||
uses: cachix/install-nix-action@V28
|
uses: cachix/install-nix-action@v30
|
||||||
with:
|
with:
|
||||||
extra_nix_config: |
|
extra_nix_config: |
|
||||||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
||||||
@@ -177,7 +158,7 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
- name: Install Nix
|
- name: Install Nix
|
||||||
uses: cachix/install-nix-action@V28
|
uses: cachix/install-nix-action@v30
|
||||||
with:
|
with:
|
||||||
extra_nix_config: |
|
extra_nix_config: |
|
||||||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
||||||
@@ -190,7 +171,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@master
|
- uses: actions/checkout@master
|
||||||
- name: Install Nix
|
- name: Install Nix
|
||||||
uses: cachix/install-nix-action@V28
|
uses: cachix/install-nix-action@v30
|
||||||
with:
|
with:
|
||||||
extra_nix_config: |
|
extra_nix_config: |
|
||||||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
||||||
@@ -203,7 +184,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@master
|
- uses: actions/checkout@master
|
||||||
- name: Install Nix
|
- name: Install Nix
|
||||||
uses: cachix/install-nix-action@V28
|
uses: cachix/install-nix-action@v30
|
||||||
with:
|
with:
|
||||||
extra_nix_config: |
|
extra_nix_config: |
|
||||||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
||||||
@@ -217,7 +198,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
fetch-depth: 0 # so that NerdBank.GitVersioning has access to history
|
fetch-depth: 0 # so that NerdBank.GitVersioning has access to history
|
||||||
- name: Install Nix
|
- name: Install Nix
|
||||||
uses: cachix/install-nix-action@V28
|
uses: cachix/install-nix-action@v30
|
||||||
with:
|
with:
|
||||||
extra_nix_config: |
|
extra_nix_config: |
|
||||||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
||||||
@@ -259,28 +240,9 @@ jobs:
|
|||||||
# Verify that there is exactly one nupkg in the artifact that would be NuGet published
|
# Verify that there is exactly one nupkg in the artifact that would be NuGet published
|
||||||
run: if [[ $(find packed-tool -maxdepth 1 -name 'WoofWare.NUnitTestRunner.*.nupkg' -printf c | wc -c) -ne "1" ]]; then exit 1; fi
|
run: if [[ $(find packed-tool -maxdepth 1 -name 'WoofWare.NUnitTestRunner.*.nupkg' -printf c | wc -c) -ne "1" ]]; then exit 1; fi
|
||||||
|
|
||||||
github-release-tool-dry-run:
|
|
||||||
needs: [nuget-pack]
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- name: Download NuGet artifact (lib)
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: nuget-package-lib
|
|
||||||
- name: Download NuGet artifact (tool)
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: nuget-package-tool
|
|
||||||
- name: Tag and release tool
|
|
||||||
env:
|
|
||||||
DRY_RUN: 1
|
|
||||||
GITHUB_TOKEN: mock-token
|
|
||||||
run: sh .github/workflows/tag.sh
|
|
||||||
|
|
||||||
all-required-checks-complete:
|
all-required-checks-complete:
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
needs: [check-dotnet-format, check-nix-format, build, build-nix, linkcheck, flake-check, analyzers, nuget-pack, expected-pack, github-release-tool-dry-run]
|
needs: [github-release-dry-run, check-dotnet-format, check-nix-format, build, build-nix, linkcheck, flake-check, analyzers, nuget-pack, expected-pack, selftest-intended-failures, selftest]
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: G-Research/common-actions/check-required-lite@2b7dc49cb14f3344fbe6019c14a31165e258c059
|
- uses: G-Research/common-actions/check-required-lite@2b7dc49cb14f3344fbe6019c14a31165e258c059
|
||||||
@@ -302,7 +264,7 @@ jobs:
|
|||||||
name: nuget-package-lib
|
name: nuget-package-lib
|
||||||
path: packed
|
path: packed
|
||||||
- name: Attest Build Provenance
|
- name: Attest Build Provenance
|
||||||
uses: actions/attest-build-provenance@1c608d11d69870c2092266b3f9a6f3abbf17002c # v1.4.3
|
uses: actions/attest-build-provenance@520d128f165991a6c774bcb264f323e3d70747f4 # v2.2.0
|
||||||
with:
|
with:
|
||||||
subject-path: "packed/*.nupkg"
|
subject-path: "packed/*.nupkg"
|
||||||
|
|
||||||
@@ -321,7 +283,7 @@ jobs:
|
|||||||
name: nuget-package-tool
|
name: nuget-package-tool
|
||||||
path: packed
|
path: packed
|
||||||
- name: Attest Build Provenance
|
- name: Attest Build Provenance
|
||||||
uses: actions/attest-build-provenance@1c608d11d69870c2092266b3f9a6f3abbf17002c # v1.4.3
|
uses: actions/attest-build-provenance@520d128f165991a6c774bcb264f323e3d70747f4 # v2.2.0
|
||||||
with:
|
with:
|
||||||
subject-path: "packed/*.nupkg"
|
subject-path: "packed/*.nupkg"
|
||||||
|
|
||||||
@@ -337,7 +299,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- name: Install Nix
|
- name: Install Nix
|
||||||
uses: cachix/install-nix-action@V28
|
uses: cachix/install-nix-action@v30
|
||||||
with:
|
with:
|
||||||
extra_nix_config: |
|
extra_nix_config: |
|
||||||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
||||||
@@ -369,7 +331,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- name: Install Nix
|
- name: Install Nix
|
||||||
uses: cachix/install-nix-action@V28
|
uses: cachix/install-nix-action@v30
|
||||||
with:
|
with:
|
||||||
extra_nix_config: |
|
extra_nix_config: |
|
||||||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
||||||
@@ -389,7 +351,44 @@ jobs:
|
|||||||
nupkg-dir: packed/
|
nupkg-dir: packed/
|
||||||
dotnet: ${{ steps.identify-dotnet.outputs.dotnet }}
|
dotnet: ${{ steps.identify-dotnet.outputs.dotnet }}
|
||||||
|
|
||||||
github-release-tool:
|
github-release-dry-run:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
artifact:
|
||||||
|
- nuget-package-tool
|
||||||
|
- nuget-package-lib
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [nuget-pack]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Download NuGet artifact (tool)
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
name: ${{ matrix.artifact }}
|
||||||
|
- name: Compute package path
|
||||||
|
id: compute-path
|
||||||
|
run: |
|
||||||
|
find . -maxdepth 1 -type f -name 'WoofWare.NUnitTestRunner.*.nupkg' -exec sh -c 'echo "output=$(basename "$1")" >> $GITHUB_OUTPUT' shell {} \;
|
||||||
|
- name: Compute tag name
|
||||||
|
id: compute-tag
|
||||||
|
env:
|
||||||
|
NUPKG_PATH: ${{ steps.compute-path.outputs.output }}
|
||||||
|
run: echo "output=$(basename "$NUPKG_PATH" .nupkg)" >> $GITHUB_OUTPUT
|
||||||
|
- name: Tag and release
|
||||||
|
uses: G-Research/common-actions/github-release@19d7281a0f9f83e13c78f99a610dbc80fc59ba3b
|
||||||
|
with:
|
||||||
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
target-commitish: ${{ github.sha }}
|
||||||
|
tag: ${{ steps.compute-tag.outputs.output }}
|
||||||
|
binary-contents: ${{ steps.compute-path.outputs.output }}
|
||||||
|
dry-run: true
|
||||||
|
|
||||||
|
github-release:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
artifact:
|
||||||
|
- nuget-package-tool
|
||||||
|
- nuget-package-lib
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: ${{ !github.event.repository.fork && github.ref == 'refs/heads/main' }}
|
if: ${{ !github.event.repository.fork && github.ref == 'refs/heads/main' }}
|
||||||
needs: [all-required-checks-complete]
|
needs: [all-required-checks-complete]
|
||||||
@@ -401,12 +400,20 @@ jobs:
|
|||||||
- name: Download NuGet artifact (tool)
|
- name: Download NuGet artifact (tool)
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: nuget-package-tool
|
name: ${{ matrix.artifact }}
|
||||||
- name: Download NuGet artifact (lib)
|
- name: Compute package path
|
||||||
uses: actions/download-artifact@v4
|
id: compute-path
|
||||||
with:
|
run: |
|
||||||
name: nuget-package-lib
|
find . -maxdepth 1 -type f -name 'WoofWare.NUnitTestRunner.*.nupkg' -exec sh -c 'echo "output=$(basename "$1")" >> $GITHUB_OUTPUT' shell {} \;
|
||||||
- name: Tag and release plugin
|
- name: Compute tag name
|
||||||
|
id: compute-tag
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
NUPKG_PATH: ${{ steps.compute-path.outputs.output }}
|
||||||
run: sh .github/workflows/tag.sh
|
run: echo "output=$(basename "$NUPKG_PATH" .nupkg)" >> $GITHUB_OUTPUT
|
||||||
|
- name: Tag and release
|
||||||
|
uses: G-Research/common-actions/github-release@19d7281a0f9f83e13c78f99a610dbc80fc59ba3b
|
||||||
|
with:
|
||||||
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
target-commitish: ${{ github.sha }}
|
||||||
|
tag: ${{ steps.compute-tag.outputs.output }}
|
||||||
|
binary-contents: ${{ steps.compute-path.outputs.output }}
|
||||||
|
8
.github/workflows/flake_update.yaml
vendored
8
.github/workflows/flake_update.yaml
vendored
@@ -21,11 +21,11 @@ jobs:
|
|||||||
- name: Update Nix flake
|
- name: Update Nix flake
|
||||||
run: 'nix flake update'
|
run: 'nix flake update'
|
||||||
|
|
||||||
- name: Build passthru
|
- name: Build fetch-deps
|
||||||
run: 'nix build ".#default.passthru.fetch-deps"'
|
run: 'nix build ".#default.fetch-deps"'
|
||||||
|
|
||||||
- name: Run passthru
|
- name: Run fetch-deps
|
||||||
run: ./result nix/deps.nix
|
run: ./result nix/deps.json
|
||||||
|
|
||||||
- name: Format
|
- name: Format
|
||||||
run: 'nix develop --command alejandra .'
|
run: 'nix develop --command alejandra .'
|
||||||
|
124
.github/workflows/tag.sh
vendored
124
.github/workflows/tag.sh
vendored
@@ -1,124 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
echo "Dry-run? $DRY_RUN!"
|
|
||||||
|
|
||||||
find . -maxdepth 1 -type f ! -name "$(printf "*\n*")" -name '*.nupkg' | while IFS= read -r file
|
|
||||||
do
|
|
||||||
tag=$(basename "$file" .nupkg)
|
|
||||||
git tag "$tag"
|
|
||||||
${DRY_RUN:+echo} git push origin "$tag"
|
|
||||||
done
|
|
||||||
|
|
||||||
export TAG
|
|
||||||
TAG=$(find . -maxdepth 1 -type f -name 'WoofWare.NUnitTestRunner.*.nupkg' -exec sh -c 'basename "$1" .nupkg' shell {} \; | grep -v Lib)
|
|
||||||
|
|
||||||
case "$TAG" in
|
|
||||||
*"
|
|
||||||
"*)
|
|
||||||
echo "Error: TAG contains a newline; multiple tools found."
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# target_commitish empty indicates the repo default branch
|
|
||||||
IS_PRERELEASE="false"
|
|
||||||
if [ "${TAG#*prerelease}" != "$TAG" ]; then
|
|
||||||
IS_PRERELEASE="true"
|
|
||||||
fi
|
|
||||||
curl_body='{"tag_name":"'"$TAG"'","target_commitish":"","name":"'"$TAG"'","draft":false,"prerelease":'"$IS_PRERELEASE"',"generate_release_notes":false}'
|
|
||||||
|
|
||||||
echo "cURL body: $curl_body"
|
|
||||||
|
|
||||||
failed_output=$(cat <<'EOF'
|
|
||||||
{
|
|
||||||
"message": "Validation Failed",
|
|
||||||
"errors": [
|
|
||||||
{
|
|
||||||
"resource": "Release",
|
|
||||||
"code": "already_exists",
|
|
||||||
"field": "tag_name"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"documentation_url": "https://docs.github.com/rest/releases/releases#create-a-release"
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
)
|
|
||||||
|
|
||||||
success_output=$(cat <<'EOF'
|
|
||||||
{
|
|
||||||
"url": "https://api.github.com/repos/Smaug123/unofficial-nunit-runner/releases/158152116",
|
|
||||||
"assets_url": "https://api.github.com/repos/Smaug123/unofficial-nunit-runner/releases/158152116/assets",
|
|
||||||
"upload_url": "https://uploads.github.com/repos/Smaug123/unofficial-nunit-runner/releases/158152116/assets{?name,label}",
|
|
||||||
"html_url": "https://github.com/Smaug123/unofficial-nunit-runner/releases/tag/WoofWare.NUnitTestRunner.2.1.30",
|
|
||||||
"id": 158152116,
|
|
||||||
"author": {
|
|
||||||
"login": "github-actions[bot]",
|
|
||||||
"id": 41898282,
|
|
||||||
"node_id": "MDM6Qm90NDE4OTgyODI=",
|
|
||||||
"avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4",
|
|
||||||
"gravatar_id": "",
|
|
||||||
"url": "https://api.github.com/users/github-actions%5Bbot%5D",
|
|
||||||
"html_url": "https://github.com/apps/github-actions",
|
|
||||||
"followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers",
|
|
||||||
"following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}",
|
|
||||||
"gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}",
|
|
||||||
"starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}",
|
|
||||||
"subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions",
|
|
||||||
"organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs",
|
|
||||||
"repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos",
|
|
||||||
"events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}",
|
|
||||||
"received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events",
|
|
||||||
"type": "Bot",
|
|
||||||
"site_admin": false
|
|
||||||
},
|
|
||||||
"node_id": "RE_kwDOJfksgc4JbTW0",
|
|
||||||
"tag_name": "WoofWare.NUnitTestRunner.2.1.30",
|
|
||||||
"target_commitish": "main",
|
|
||||||
"name": "WoofWare.NUnitTestRunner.2.1.30",
|
|
||||||
"draft": false,
|
|
||||||
"prerelease": false,
|
|
||||||
"created_at": "2024-05-30T11:00:55Z",
|
|
||||||
"published_at": "2024-05-30T11:03:02Z",
|
|
||||||
"assets": [
|
|
||||||
|
|
||||||
],
|
|
||||||
"tarball_url": "https://api.github.com/repos/Smaug123/unofficial-nunit-runner/tarball/WoofWare.NUnitTestRunner.2.1.30",
|
|
||||||
"zipball_url": "https://api.github.com/repos/Smaug123/unofficial-nunit-runner/zipball/WoofWare.NUnitTestRunner.2.1.30",
|
|
||||||
"body": null
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
)
|
|
||||||
|
|
||||||
HANDLE_OUTPUT=''
|
|
||||||
handle_error() {
|
|
||||||
ERROR_OUTPUT="$1"
|
|
||||||
exit_message=$(echo "$ERROR_OUTPUT" | jq -r --exit-status 'if .errors | length == 1 then .errors[0].code else null end')
|
|
||||||
if [ "$exit_message" = "already_exists" ] ; then
|
|
||||||
HANDLE_OUTPUT="Did not create GitHub release because it already exists at this version."
|
|
||||||
else
|
|
||||||
echo "Unexpected error output from curl: $(cat curl_output.json)"
|
|
||||||
echo "JQ output: $(exit_message)"
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
run_tests() {
|
|
||||||
handle_error "$failed_output"
|
|
||||||
if [ "$HANDLE_OUTPUT" != "Did not create GitHub release because it already exists at this version." ]; then
|
|
||||||
echo "Bad output from handler: $HANDLE_OUTPUT"
|
|
||||||
exit 3
|
|
||||||
fi
|
|
||||||
HANDLE_OUTPUT=''
|
|
||||||
echo "Tests passed."
|
|
||||||
}
|
|
||||||
|
|
||||||
run_tests
|
|
||||||
|
|
||||||
if [ "$DRY_RUN" != 1 ] ; then
|
|
||||||
if curl --fail-with-body -L -X POST -H "Accept: application/vnd.github+json" -H "Authorization: Bearer $GITHUB_TOKEN" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/repos/Smaug123/unofficial-nunit-runner/releases -d "$curl_body" > curl_output.json; then
|
|
||||||
echo "Curl succeeded."
|
|
||||||
else
|
|
||||||
handle_error "$(cat curl_output.json)"
|
|
||||||
echo "$HANDLE_OUTPUT"
|
|
||||||
fi
|
|
||||||
fi
|
|
@@ -1,7 +1,7 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFrameworks>net6.0;net8.0</TargetFrameworks>
|
<TargetFrameworks>net8.0</TargetFrameworks>
|
||||||
<IsPackable>false</IsPackable>
|
<IsPackable>false</IsPackable>
|
||||||
<IsTestProject>true</IsTestProject>
|
<IsTestProject>true</IsTestProject>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
@@ -12,6 +12,7 @@
|
|||||||
<Compile Include="RunSubProcess.fs" />
|
<Compile Include="RunSubProcess.fs" />
|
||||||
<Compile Include="TestNonParallel.fs" />
|
<Compile Include="TestNonParallel.fs" />
|
||||||
<Compile Include="TestParallel.fs" />
|
<Compile Include="TestParallel.fs" />
|
||||||
|
<Compile Include="TestParallelIndividualTest.fs" />
|
||||||
<Compile Include="TestStdout.fs" />
|
<Compile Include="TestStdout.fs" />
|
||||||
<Compile Include="TestParameterisedFixture.fs" />
|
<Compile Include="TestParameterisedFixture.fs" />
|
||||||
<Compile Include="TestSetUp.fs" />
|
<Compile Include="TestSetUp.fs" />
|
||||||
@@ -25,10 +26,10 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="FsUnit" Version="6.0.1" />
|
<PackageReference Include="FsUnit" Version="7.0.1" />
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1"/>
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0"/>
|
||||||
<PackageReference Include="NUnit" Version="4.2.2"/>
|
<PackageReference Include="NUnit" Version="4.3.2"/>
|
||||||
<PackageReference Include="NUnit3TestAdapter" Version="4.6.0"/>
|
<PackageReference Include="NUnit3TestAdapter" Version="5.0.0"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
59
Consumer/TestParallelIndividualTest.fs
Normal file
59
Consumer/TestParallelIndividualTest.fs
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
namespace Consumer
|
||||||
|
|
||||||
|
open System
|
||||||
|
open System.Collections.Concurrent
|
||||||
|
open System.Threading
|
||||||
|
open NUnit.Framework
|
||||||
|
open FsUnitTyped
|
||||||
|
|
||||||
|
// These tests are flaky if the bug https://github.com/Smaug123/unofficial-nunit-runner/issues/168 is unfixed.
|
||||||
|
[<TestFixture>]
|
||||||
|
module TestParallelIndividualTest =
|
||||||
|
|
||||||
|
type private Transitions =
|
||||||
|
| Started of int
|
||||||
|
| LockAcquired of int
|
||||||
|
| Exited of int
|
||||||
|
|
||||||
|
let locker = obj ()
|
||||||
|
let private sequence = ConcurrentQueue<Transitions> ()
|
||||||
|
|
||||||
|
[<Test>]
|
||||||
|
[<Parallelizable(ParallelScope.None)>]
|
||||||
|
let ``does not run in parallel`` () =
|
||||||
|
sequence.Enqueue (Transitions.Started 0)
|
||||||
|
let entered = Monitor.TryEnter (locker, TimeSpan.Zero)
|
||||||
|
|
||||||
|
if entered then
|
||||||
|
sequence.Enqueue (Transitions.LockAcquired 0)
|
||||||
|
Monitor.Exit locker
|
||||||
|
sequence.Enqueue (Transitions.Exited 0)
|
||||||
|
else
|
||||||
|
sequence.Enqueue (Transitions.Exited 0)
|
||||||
|
failwith "failed to acquire the lock"
|
||||||
|
|
||||||
|
[<Test>]
|
||||||
|
let ``unrestricted parallelism`` () =
|
||||||
|
sequence.Enqueue (Transitions.Started 1)
|
||||||
|
let entered = Monitor.TryEnter (locker, TimeSpan.Zero)
|
||||||
|
|
||||||
|
if entered then
|
||||||
|
sequence.Enqueue (Transitions.LockAcquired 1)
|
||||||
|
Monitor.Exit locker
|
||||||
|
sequence.Enqueue (Transitions.Exited 1)
|
||||||
|
else
|
||||||
|
sequence.Enqueue (Transitions.Exited 1)
|
||||||
|
failwith "failed to acquire the lock"
|
||||||
|
|
||||||
|
[<OneTimeTearDown>]
|
||||||
|
let ``It worked`` () =
|
||||||
|
let sequence = sequence |> Seq.toList
|
||||||
|
|
||||||
|
let allowed n =
|
||||||
|
[ Transitions.Started n ; Transitions.LockAcquired n ; Transitions.Exited n ]
|
||||||
|
|
||||||
|
if sequence <> allowed 0 @ allowed 1 && sequence <> allowed 1 @ allowed 0 then
|
||||||
|
let s = sequence |> Seq.map string<Transitions> |> String.concat "\n"
|
||||||
|
failwith $"Unexpected sequence!\n%s{s}"
|
||||||
|
|
||||||
|
()
|
@@ -10,7 +10,7 @@
|
|||||||
<WarnOn>FS3388,FS3559</WarnOn>
|
<WarnOn>FS3388,FS3559</WarnOn>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Nerdbank.GitVersioning" Version="3.6.143" PrivateAssets="all"/>
|
<PackageReference Include="Nerdbank.GitVersioning" Version="3.7.115" PrivateAssets="all"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<PropertyGroup Condition="'$(GITHUB_ACTION)' != ''">
|
<PropertyGroup Condition="'$(GITHUB_ACTION)' != ''">
|
||||||
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
|
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
|
||||||
|
20
FailingConsumer/FailingConsumer.fsproj
Normal file
20
FailingConsumer/FailingConsumer.fsproj
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<IsPackable>false</IsPackable>
|
||||||
|
<IsTestProject>true</IsTestProject>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="TestInsufficientArgs.fs" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="FsUnit" Version="7.0.1" />
|
||||||
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0"/>
|
||||||
|
<PackageReference Include="NUnit" Version="4.3.2"/>
|
||||||
|
<PackageReference Include="NUnit3TestAdapter" Version="5.0.0"/>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
9
FailingConsumer/TestInsufficientArgs.fs
Normal file
9
FailingConsumer/TestInsufficientArgs.fs
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
namespace FailingConsumer
|
||||||
|
|
||||||
|
open NUnit.Framework
|
||||||
|
|
||||||
|
[<TestFixture>]
|
||||||
|
module TestInsufficientArgs =
|
||||||
|
|
||||||
|
[<Test>]
|
||||||
|
let foo (_ : int) = ()
|
1
FailingConsumer/expected.txt
Normal file
1
FailingConsumer/expected.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
foo: had parameter count mismatch: expected 1, actual 0
|
@@ -12,5 +12,4 @@ However, we would recommend phrasing some of them differently, for maximum peace
|
|||||||
## Parallelism
|
## Parallelism
|
||||||
|
|
||||||
WoofWare.NUnitTestRunner has *limited* support for parallelism.
|
WoofWare.NUnitTestRunner has *limited* support for parallelism.
|
||||||
By default, we run tests serially; we may or may not respect the NUnit parallelism attributes to any given extent (but we will never incorrectly run tests in parallel).
|
By default, we run tests in parallel, taking half the available processors; we may or may not respect the NUnit parallelism attributes to any given extent that they tell us to be *more* parallel (but we will never incorrectly run tests in parallel).
|
||||||
For example, as of this writing, we do not run any tests in parallel (but the internal infrastructure is set up so that we will be able to do this soon).
|
|
||||||
|
@@ -41,12 +41,16 @@ module AssemblyLevelAttributes =
|
|||||||
| [ v ] ->
|
| [ v ] ->
|
||||||
match v.Value with
|
match v.Value with
|
||||||
| :? int as v ->
|
| :? int as v ->
|
||||||
match v with
|
match ParallelScope.ofInt v with
|
||||||
| 512 -> levelPar, Some (Parallelizable.Yes AssemblyParallelScope.Fixtures)
|
| ParallelScope.Fixtures ->
|
||||||
| 256 -> levelPar, Some (Parallelizable.Yes AssemblyParallelScope.Children)
|
levelPar, Some (Parallelizable.Yes AssemblyParallelScope.Fixtures)
|
||||||
| 257 -> failwith "ParallelScope.All is invalid on assemblies; only Fixtures or Children"
|
| ParallelScope.Children ->
|
||||||
| 1 -> failwith "ParallelScope.Self is invalid on assemblies; only Fixtures or Children"
|
levelPar, Some (Parallelizable.Yes AssemblyParallelScope.Children)
|
||||||
| v -> failwith $"Could not recognise value %i{v} of parallel scope on assembly"
|
| ParallelScope.None -> levelPar, Some Parallelizable.No
|
||||||
|
| ParallelScope.All ->
|
||||||
|
failwith "ParallelScope.All is invalid on assemblies; only Fixtures or Children"
|
||||||
|
| ParallelScope.Self ->
|
||||||
|
failwith "ParallelScope.Self is invalid on assemblies; only Fixtures or Children"
|
||||||
| v -> failwith $"Unexpectedly non-int value %O{v} of parallel scope on assembly"
|
| v -> failwith $"Unexpectedly non-int value %O{v} of parallel scope on assembly"
|
||||||
| _ -> failwith "unexpectedly got multiple args to Parallelizable on assembly"
|
| _ -> failwith "unexpectedly got multiple args to Parallelizable on assembly"
|
||||||
| _ -> levelPar, par
|
| _ -> levelPar, par
|
||||||
|
@@ -55,6 +55,7 @@ type private ThreadAwareWriter
|
|||||||
|> fun action -> ExecutionContext.Run (prev, action, ())
|
|> fun action -> ExecutionContext.Run (prev, action, ())
|
||||||
|
|
||||||
/// Wraps up the necessary context to intercept global state.
|
/// Wraps up the necessary context to intercept global state.
|
||||||
|
[<NoEquality ; NoComparison>]
|
||||||
type TestContexts =
|
type TestContexts =
|
||||||
private
|
private
|
||||||
{
|
{
|
||||||
|
@@ -164,6 +164,18 @@ module BuildTrxReport =
|
|||||||
| Some s -> s
|
| Some s -> s
|
||||||
|
|
||||||
(Some stackTrace, message)
|
(Some stackTrace, message)
|
||||||
|
| TestFailure.TestFailed (UserMethodFailure.BadParameters (_, expected, actual))
|
||||||
|
| TestFailure.SetUpFailed (UserMethodFailure.BadParameters (_, expected, actual))
|
||||||
|
| TestFailure.TearDownFailed (UserMethodFailure.BadParameters (_, expected, actual)) ->
|
||||||
|
let newMessage =
|
||||||
|
$"had parameter count mismatch: expected %i{expected.Length}, actual %i{actual.Length}"
|
||||||
|
|
||||||
|
let message =
|
||||||
|
match message with
|
||||||
|
| None -> newMessage
|
||||||
|
| Some message -> $"%s{message}\n%s{newMessage}"
|
||||||
|
|
||||||
|
(stackTrace, Some message)
|
||||||
| TestFailure.TestFailed (UserMethodFailure.ReturnedNonUnit (_, ret))
|
| TestFailure.TestFailed (UserMethodFailure.ReturnedNonUnit (_, ret))
|
||||||
| TestFailure.SetUpFailed (UserMethodFailure.ReturnedNonUnit (_, ret))
|
| TestFailure.SetUpFailed (UserMethodFailure.ReturnedNonUnit (_, ret))
|
||||||
| TestFailure.TearDownFailed (UserMethodFailure.ReturnedNonUnit (_, ret)) ->
|
| TestFailure.TearDownFailed (UserMethodFailure.ReturnedNonUnit (_, ret)) ->
|
||||||
@@ -188,6 +200,14 @@ module BuildTrxReport =
|
|||||||
Message = None
|
Message = None
|
||||||
}
|
}
|
||||||
|> Some
|
|> Some
|
||||||
|
| Choice3Of3 (UserMethodFailure.BadParameters (_, expected, actual)) ->
|
||||||
|
{
|
||||||
|
StackTrace = None
|
||||||
|
Message =
|
||||||
|
$"parameter count mismatch, expected %i{expected.Length}, actual %i{actual.Length}"
|
||||||
|
|> Some
|
||||||
|
}
|
||||||
|
|> Some
|
||||||
| Choice3Of3 (UserMethodFailure.ReturnedNonUnit (_, ret)) ->
|
| Choice3Of3 (UserMethodFailure.ReturnedNonUnit (_, ret)) ->
|
||||||
{
|
{
|
||||||
Message = $"returned non-unit value %O{ret}" |> Some
|
Message = $"returned non-unit value %O{ret}" |> Some
|
||||||
|
@@ -61,6 +61,24 @@ type Parallelizable<'scope> =
|
|||||||
/// This test must always be run on its own.
|
/// This test must always be run on its own.
|
||||||
| No
|
| No
|
||||||
|
|
||||||
|
[<RequireQualifiedAccess>]
|
||||||
|
module Parallelizable =
|
||||||
|
/// Functorial map.
|
||||||
|
let inline map<'a, 'b> ([<InlineIfLambda>] f : 'a -> 'b) (p : Parallelizable<'a>) : Parallelizable<'b> =
|
||||||
|
match p with
|
||||||
|
| Parallelizable.No -> Parallelizable.No
|
||||||
|
| Parallelizable.Yes a -> Parallelizable.Yes (f a)
|
||||||
|
|
||||||
|
/// Functorial bind.
|
||||||
|
let inline bind<'a, 'b>
|
||||||
|
([<InlineIfLambda>] f : 'a -> Parallelizable<'b>)
|
||||||
|
(p : Parallelizable<'a>)
|
||||||
|
: Parallelizable<'b>
|
||||||
|
=
|
||||||
|
match p with
|
||||||
|
| Parallelizable.No -> Parallelizable.No
|
||||||
|
| Parallelizable.Yes a -> f a
|
||||||
|
|
||||||
/// A single method or member which holds some tests. (Often such a member will represent only one test, but e.g.
|
/// A single method or member which holds some tests. (Often such a member will represent only one test, but e.g.
|
||||||
/// if it has [<TestCaseSource>] then it represents multiple tests.)
|
/// if it has [<TestCaseSource>] then it represents multiple tests.)
|
||||||
type SingleTestMethod =
|
type SingleTestMethod =
|
||||||
@@ -144,6 +162,8 @@ type UserMethodFailure =
|
|||||||
| ReturnedNonUnit of name : string * result : obj
|
| ReturnedNonUnit of name : string * result : obj
|
||||||
/// A method threw.
|
/// A method threw.
|
||||||
| Threw of name : string * exn
|
| Threw of name : string * exn
|
||||||
|
/// Parameter count mismatch.
|
||||||
|
| BadParameters of name : string * expected : Type[] * actual : obj[]
|
||||||
|
|
||||||
/// Human-readable representation of the user failure.
|
/// Human-readable representation of the user failure.
|
||||||
override this.ToString () =
|
override this.ToString () =
|
||||||
@@ -152,12 +172,22 @@ type UserMethodFailure =
|
|||||||
$"User-defined method '%s{method}' returned a non-unit: %O{ret}"
|
$"User-defined method '%s{method}' returned a non-unit: %O{ret}"
|
||||||
| UserMethodFailure.Threw (method, exc) ->
|
| UserMethodFailure.Threw (method, exc) ->
|
||||||
$"User-defined method '%s{method}' threw: %s{exc.Message}\n %s{exc.StackTrace}"
|
$"User-defined method '%s{method}' threw: %s{exc.Message}\n %s{exc.StackTrace}"
|
||||||
|
| UserMethodFailure.BadParameters (method, expected, actual) ->
|
||||||
|
let expectedStr = expected |> Seq.map (fun t -> t.Name) |> String.concat ", "
|
||||||
|
|
||||||
|
let actualStr =
|
||||||
|
actual
|
||||||
|
|> Seq.map (fun s -> if isNull s then "null" else s.ToString ())
|
||||||
|
|> String.concat ", "
|
||||||
|
|
||||||
|
$"User-defined method '%s{method}' had parameter count mismatch. Expected: (%s{expectedStr}) (%i{expected.Length} params). Actual: (%s{actualStr}) (%i{actual.Length} params)"
|
||||||
|
|
||||||
/// Name (not fully-qualified) of the method which failed.
|
/// Name (not fully-qualified) of the method which failed.
|
||||||
member this.Name =
|
member this.Name =
|
||||||
match this with
|
match this with
|
||||||
| UserMethodFailure.Threw (name, _)
|
| UserMethodFailure.Threw (name, _)
|
||||||
| UserMethodFailure.ReturnedNonUnit (name, _) -> name
|
| UserMethodFailure.ReturnedNonUnit (name, _) -> name
|
||||||
|
| UserMethodFailure.BadParameters (name, _, _) -> name
|
||||||
|
|
||||||
/// Represents the failure of a single run of one test. An error signalled this way is a user error: the unit under
|
/// Represents the failure of a single run of one test. An error signalled this way is a user error: the unit under
|
||||||
/// test has misbehaved.
|
/// test has misbehaved.
|
||||||
|
@@ -155,9 +155,7 @@ module internal Lexer =
|
|||||||
[<RequireQualifiedAccess>]
|
[<RequireQualifiedAccess>]
|
||||||
module internal ParsedFilter =
|
module internal ParsedFilter =
|
||||||
let private unescape (s : string) : string =
|
let private unescape (s : string) : string =
|
||||||
System.Xml.XmlReader
|
System.Xml.XmlReader.Create(new StringReader ("<r>" + s + "</r>")).ReadElementString ()
|
||||||
.Create(new StringReader ("<r>" + s + "</r>"))
|
|
||||||
.ReadElementString ()
|
|
||||||
|
|
||||||
let private atom (inputString : string) (token : Token) : ParsedFilter option =
|
let private atom (inputString : string) (token : Token) : ParsedFilter option =
|
||||||
let start, len = token.Trivia
|
let start, len = token.Trivia
|
||||||
|
@@ -314,7 +314,7 @@ type ParallelQueue
|
|||||||
let t () =
|
let t () =
|
||||||
{ new ThunkEvaluator<_> with
|
{ new ThunkEvaluator<_> with
|
||||||
member _.Eval<'b> (t : unit -> 'b) rc =
|
member _.Eval<'b> (t : unit -> 'b) rc =
|
||||||
let tcs = TaskCompletionSource ()
|
let tcs = TaskCompletionSource TaskCreationOptions.RunContinuationsAsynchronously
|
||||||
use ec = ExecutionContext.Capture ()
|
use ec = ExecutionContext.Capture ()
|
||||||
|
|
||||||
fun () ->
|
fun () ->
|
||||||
|
29
WoofWare.NUnitTestRunner.Lib/ParallelScope.fs
Normal file
29
WoofWare.NUnitTestRunner.Lib/ParallelScope.fs
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
namespace WoofWare.NUnitTestRunner
|
||||||
|
|
||||||
|
/// Our own strongly-typed rendering of the NUnit ParallelScope enum.
|
||||||
|
/// This is more tightly modelled by ClassParallelScope and AssemblyParallelScope in our own domain; this type exists
|
||||||
|
/// for the initial interop.
|
||||||
|
[<RequireQualifiedAccess>]
|
||||||
|
type ParallelScope =
|
||||||
|
/// Corresponds to NUnit's ParallelScope.Fixtures.
|
||||||
|
| Fixtures
|
||||||
|
/// Corresponds to NUnit's ParallelScope.Children.
|
||||||
|
| Children
|
||||||
|
/// Corresponds to NUnit's ParallelScope.All.
|
||||||
|
| All
|
||||||
|
/// Corresponds to NUnit's ParallelScope.Self.
|
||||||
|
| Self
|
||||||
|
/// Corresponds to NUnit's ParallelScope.None.
|
||||||
|
| None
|
||||||
|
|
||||||
|
[<RequireQualifiedAccess>]
|
||||||
|
module ParallelScope =
|
||||||
|
/// Convert the weakly-typed C# enum that is NUnit's `ParallelScope` to a strongly-typed representation.
|
||||||
|
let ofInt (n : int) =
|
||||||
|
match n with
|
||||||
|
| 512 -> ParallelScope.Fixtures
|
||||||
|
| 256 -> ParallelScope.Children
|
||||||
|
| 257 -> ParallelScope.All
|
||||||
|
| 1 -> ParallelScope.Self
|
||||||
|
| 2 -> ParallelScope.None
|
||||||
|
| _ -> failwith $"Unrecognised ParallelScope enum: %i{n}"
|
@@ -94,7 +94,27 @@ module SingleTestMethod =
|
|||||||
match par with
|
match par with
|
||||||
| Some _ -> failwith $"Got multiple parallelization attributes on %s{method.Name}"
|
| Some _ -> failwith $"Got multiple parallelization attributes on %s{method.Name}"
|
||||||
| None ->
|
| None ->
|
||||||
(remaining, isTest, sources, hasData, mods, cats, repeat, comb, Some (Parallelizable.Yes ()))
|
let arg =
|
||||||
|
match Seq.toList attr.ConstructorArguments with
|
||||||
|
| [] -> Parallelizable.Yes ()
|
||||||
|
| [ x ] ->
|
||||||
|
if x.ArgumentType.Name <> "ParallelScope" then
|
||||||
|
failwith
|
||||||
|
$"Got argument %O{x.Value} of unrecognised type %s{x.ArgumentType.Name} on [<Parallelizable>] attribute; expected ParallelScope"
|
||||||
|
|
||||||
|
match ParallelScope.ofInt (unbox<int> x.Value) with
|
||||||
|
| ParallelScope.Children ->
|
||||||
|
failwith
|
||||||
|
$"Unexpected ParallelScope.Children on test %s{method.Name}; this is not valid on individual tests"
|
||||||
|
| ParallelScope.Fixtures ->
|
||||||
|
failwith
|
||||||
|
$"Unexpected ParallelScope.Children on test %s{method.Name}; this is not valid on individual tests"
|
||||||
|
| ParallelScope.All
|
||||||
|
| ParallelScope.Self -> Parallelizable.Yes ()
|
||||||
|
| ParallelScope.None -> Parallelizable.No
|
||||||
|
| s -> failwith $"Got multiple arguments on a [<Parallelizable>] attribute: %O{s}"
|
||||||
|
|
||||||
|
(remaining, isTest, sources, hasData, mods, cats, repeat, comb, Some arg)
|
||||||
| s when s.StartsWith ("NUnit.Framework", StringComparison.Ordinal) ->
|
| s when s.StartsWith ("NUnit.Framework", StringComparison.Ordinal) ->
|
||||||
failwith $"Unrecognised attribute on function %s{method.Name}: %s{attr.AttributeType.FullName}"
|
failwith $"Unrecognised attribute on function %s{method.Name}: %s{attr.AttributeType.FullName}"
|
||||||
| _ -> (attr :: remaining, isTest, sources, hasData, mods, cats, repeat, comb, par)
|
| _ -> (attr :: remaining, isTest, sources, hasData, mods, cats, repeat, comb, par)
|
||||||
|
@@ -231,6 +231,9 @@ WoofWare.NUnitTestRunner.Modifier.IsIgnored [property]: [read-only] bool
|
|||||||
WoofWare.NUnitTestRunner.Modifier.NewExplicit [static method]: string option -> WoofWare.NUnitTestRunner.Modifier
|
WoofWare.NUnitTestRunner.Modifier.NewExplicit [static method]: string option -> WoofWare.NUnitTestRunner.Modifier
|
||||||
WoofWare.NUnitTestRunner.Modifier.NewIgnored [static method]: string option -> WoofWare.NUnitTestRunner.Modifier
|
WoofWare.NUnitTestRunner.Modifier.NewIgnored [static method]: string option -> WoofWare.NUnitTestRunner.Modifier
|
||||||
WoofWare.NUnitTestRunner.Modifier.Tag [property]: [read-only] int
|
WoofWare.NUnitTestRunner.Modifier.Tag [property]: [read-only] int
|
||||||
|
WoofWare.NUnitTestRunner.Parallelizable inherit obj
|
||||||
|
WoofWare.NUnitTestRunner.Parallelizable.bind [static method]: ('a -> 'b WoofWare.NUnitTestRunner.Parallelizable) -> 'a WoofWare.NUnitTestRunner.Parallelizable -> 'b WoofWare.NUnitTestRunner.Parallelizable
|
||||||
|
WoofWare.NUnitTestRunner.Parallelizable.map [static method]: ('a -> 'b) -> 'a WoofWare.NUnitTestRunner.Parallelizable -> 'b WoofWare.NUnitTestRunner.Parallelizable
|
||||||
WoofWare.NUnitTestRunner.Parallelizable`1 inherit obj, implements 'scope WoofWare.NUnitTestRunner.Parallelizable System.IEquatable, System.Collections.IStructuralEquatable, 'scope WoofWare.NUnitTestRunner.Parallelizable System.IComparable, System.IComparable, System.Collections.IStructuralComparable - union type with 2 cases
|
WoofWare.NUnitTestRunner.Parallelizable`1 inherit obj, implements 'scope WoofWare.NUnitTestRunner.Parallelizable System.IEquatable, System.Collections.IStructuralEquatable, 'scope WoofWare.NUnitTestRunner.Parallelizable System.IComparable, System.IComparable, System.Collections.IStructuralComparable - union type with 2 cases
|
||||||
WoofWare.NUnitTestRunner.Parallelizable`1+Tags inherit obj
|
WoofWare.NUnitTestRunner.Parallelizable`1+Tags inherit obj
|
||||||
WoofWare.NUnitTestRunner.Parallelizable`1+Tags.No [static field]: int = 1
|
WoofWare.NUnitTestRunner.Parallelizable`1+Tags.No [static field]: int = 1
|
||||||
@@ -255,6 +258,38 @@ WoofWare.NUnitTestRunner.ParallelQueue.Run [method]: WoofWare.NUnitTestRunner.Te
|
|||||||
WoofWare.NUnitTestRunner.ParallelQueue.RunTestSetup [method]: WoofWare.NUnitTestRunner.TestFixtureRunningToken -> (unit -> 'a) -> ('a * WoofWare.NUnitTestRunner.TestFixtureSetupToken) System.Threading.Tasks.Task
|
WoofWare.NUnitTestRunner.ParallelQueue.RunTestSetup [method]: WoofWare.NUnitTestRunner.TestFixtureRunningToken -> (unit -> 'a) -> ('a * WoofWare.NUnitTestRunner.TestFixtureSetupToken) System.Threading.Tasks.Task
|
||||||
WoofWare.NUnitTestRunner.ParallelQueue.RunTestTearDown [method]: WoofWare.NUnitTestRunner.TestFixtureSetupToken -> (unit -> 'a) -> ('a * WoofWare.NUnitTestRunner.TestFixtureTearDownToken) System.Threading.Tasks.Task
|
WoofWare.NUnitTestRunner.ParallelQueue.RunTestTearDown [method]: WoofWare.NUnitTestRunner.TestFixtureSetupToken -> (unit -> 'a) -> ('a * WoofWare.NUnitTestRunner.TestFixtureTearDownToken) System.Threading.Tasks.Task
|
||||||
WoofWare.NUnitTestRunner.ParallelQueue.StartTestFixture [method]: WoofWare.NUnitTestRunner.TestFixture -> WoofWare.NUnitTestRunner.TestFixtureRunningToken System.Threading.Tasks.Task
|
WoofWare.NUnitTestRunner.ParallelQueue.StartTestFixture [method]: WoofWare.NUnitTestRunner.TestFixture -> WoofWare.NUnitTestRunner.TestFixtureRunningToken System.Threading.Tasks.Task
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope inherit obj, implements WoofWare.NUnitTestRunner.ParallelScope System.IEquatable, System.Collections.IStructuralEquatable, WoofWare.NUnitTestRunner.ParallelScope System.IComparable, System.IComparable, System.Collections.IStructuralComparable - union type with 5 cases
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope+Tags inherit obj
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope+Tags.All [static field]: int = 2
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope+Tags.Children [static field]: int = 1
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope+Tags.Fixtures [static field]: int = 0
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope+Tags.None [static field]: int = 4
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope+Tags.Self [static field]: int = 3
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope.All [static property]: [read-only] WoofWare.NUnitTestRunner.ParallelScope
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope.Children [static property]: [read-only] WoofWare.NUnitTestRunner.ParallelScope
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope.Equals [method]: (WoofWare.NUnitTestRunner.ParallelScope, System.Collections.IEqualityComparer) -> bool
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope.Fixtures [static property]: [read-only] WoofWare.NUnitTestRunner.ParallelScope
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope.get_All [static method]: unit -> WoofWare.NUnitTestRunner.ParallelScope
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope.get_Children [static method]: unit -> WoofWare.NUnitTestRunner.ParallelScope
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope.get_Fixtures [static method]: unit -> WoofWare.NUnitTestRunner.ParallelScope
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope.get_IsAll [method]: unit -> bool
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope.get_IsChildren [method]: unit -> bool
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope.get_IsFixtures [method]: unit -> bool
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope.get_IsNone [method]: unit -> bool
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope.get_IsSelf [method]: unit -> bool
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope.get_None [static method]: unit -> WoofWare.NUnitTestRunner.ParallelScope
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope.get_Self [static method]: unit -> WoofWare.NUnitTestRunner.ParallelScope
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope.get_Tag [method]: unit -> int
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope.IsAll [property]: [read-only] bool
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope.IsChildren [property]: [read-only] bool
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope.IsFixtures [property]: [read-only] bool
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope.IsNone [property]: [read-only] bool
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope.IsSelf [property]: [read-only] bool
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope.None [static property]: [read-only] WoofWare.NUnitTestRunner.ParallelScope
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope.Self [static property]: [read-only] WoofWare.NUnitTestRunner.ParallelScope
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScope.Tag [property]: [read-only] int
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScopeModule inherit obj
|
||||||
|
WoofWare.NUnitTestRunner.ParallelScopeModule.ofInt [static method]: int -> WoofWare.NUnitTestRunner.ParallelScope
|
||||||
WoofWare.NUnitTestRunner.SingleTestMethod inherit obj, implements WoofWare.NUnitTestRunner.SingleTestMethod System.IEquatable, System.Collections.IStructuralEquatable
|
WoofWare.NUnitTestRunner.SingleTestMethod inherit obj, implements WoofWare.NUnitTestRunner.SingleTestMethod System.IEquatable, System.Collections.IStructuralEquatable
|
||||||
WoofWare.NUnitTestRunner.SingleTestMethod..ctor [constructor]: (System.Reflection.MethodInfo, WoofWare.NUnitTestRunner.TestKind, WoofWare.NUnitTestRunner.Modifier list, string list, int option, WoofWare.NUnitTestRunner.Combinatorial option, unit WoofWare.NUnitTestRunner.Parallelizable option)
|
WoofWare.NUnitTestRunner.SingleTestMethod..ctor [constructor]: (System.Reflection.MethodInfo, WoofWare.NUnitTestRunner.TestKind, WoofWare.NUnitTestRunner.Modifier list, string list, int option, WoofWare.NUnitTestRunner.Combinatorial option, unit WoofWare.NUnitTestRunner.Parallelizable option)
|
||||||
WoofWare.NUnitTestRunner.SingleTestMethod.Categories [property]: [read-only] string list
|
WoofWare.NUnitTestRunner.SingleTestMethod.Categories [property]: [read-only] string list
|
||||||
@@ -276,7 +311,7 @@ WoofWare.NUnitTestRunner.SingleTestMethod.Parallelize [property]: [read-only] un
|
|||||||
WoofWare.NUnitTestRunner.SingleTestMethod.Repeat [property]: [read-only] int option
|
WoofWare.NUnitTestRunner.SingleTestMethod.Repeat [property]: [read-only] int option
|
||||||
WoofWare.NUnitTestRunner.SingleTestMethodModule inherit obj
|
WoofWare.NUnitTestRunner.SingleTestMethodModule inherit obj
|
||||||
WoofWare.NUnitTestRunner.SingleTestMethodModule.parse [static method]: string list -> System.Reflection.MethodInfo -> System.Reflection.CustomAttributeData list -> (WoofWare.NUnitTestRunner.SingleTestMethod option * System.Reflection.CustomAttributeData list)
|
WoofWare.NUnitTestRunner.SingleTestMethodModule.parse [static method]: string list -> System.Reflection.MethodInfo -> System.Reflection.CustomAttributeData list -> (WoofWare.NUnitTestRunner.SingleTestMethod option * System.Reflection.CustomAttributeData list)
|
||||||
WoofWare.NUnitTestRunner.TestContexts inherit obj, implements WoofWare.NUnitTestRunner.TestContexts System.IEquatable, System.Collections.IStructuralEquatable, IDisposable
|
WoofWare.NUnitTestRunner.TestContexts inherit obj, implements IDisposable
|
||||||
WoofWare.NUnitTestRunner.TestContexts.Empty [static method]: unit -> WoofWare.NUnitTestRunner.TestContexts
|
WoofWare.NUnitTestRunner.TestContexts.Empty [static method]: unit -> WoofWare.NUnitTestRunner.TestContexts
|
||||||
WoofWare.NUnitTestRunner.TestContexts.get_Stderr [method]: unit -> System.IO.TextWriter
|
WoofWare.NUnitTestRunner.TestContexts.get_Stderr [method]: unit -> System.IO.TextWriter
|
||||||
WoofWare.NUnitTestRunner.TestContexts.get_Stdout [method]: unit -> System.IO.TextWriter
|
WoofWare.NUnitTestRunner.TestContexts.get_Stdout [method]: unit -> System.IO.TextWriter
|
||||||
@@ -668,13 +703,21 @@ WoofWare.NUnitTestRunner.TrxUnitTestResult.TestId [property]: [read-only] System
|
|||||||
WoofWare.NUnitTestRunner.TrxUnitTestResult.TestListId [property]: [read-only] System.Guid
|
WoofWare.NUnitTestRunner.TrxUnitTestResult.TestListId [property]: [read-only] System.Guid
|
||||||
WoofWare.NUnitTestRunner.TrxUnitTestResult.TestName [property]: [read-only] string
|
WoofWare.NUnitTestRunner.TrxUnitTestResult.TestName [property]: [read-only] string
|
||||||
WoofWare.NUnitTestRunner.TrxUnitTestResult.TestType [property]: [read-only] System.Guid
|
WoofWare.NUnitTestRunner.TrxUnitTestResult.TestType [property]: [read-only] System.Guid
|
||||||
WoofWare.NUnitTestRunner.UserMethodFailure inherit obj, implements WoofWare.NUnitTestRunner.UserMethodFailure System.IEquatable, System.Collections.IStructuralEquatable - union type with 2 cases
|
WoofWare.NUnitTestRunner.UserMethodFailure inherit obj, implements WoofWare.NUnitTestRunner.UserMethodFailure System.IEquatable, System.Collections.IStructuralEquatable - union type with 3 cases
|
||||||
|
WoofWare.NUnitTestRunner.UserMethodFailure+BadParameters inherit WoofWare.NUnitTestRunner.UserMethodFailure
|
||||||
|
WoofWare.NUnitTestRunner.UserMethodFailure+BadParameters.actual [property]: [read-only] obj []
|
||||||
|
WoofWare.NUnitTestRunner.UserMethodFailure+BadParameters.expected [property]: [read-only] System.Type []
|
||||||
|
WoofWare.NUnitTestRunner.UserMethodFailure+BadParameters.get_actual [method]: unit -> obj []
|
||||||
|
WoofWare.NUnitTestRunner.UserMethodFailure+BadParameters.get_expected [method]: unit -> System.Type []
|
||||||
|
WoofWare.NUnitTestRunner.UserMethodFailure+BadParameters.get_name [method]: unit -> string
|
||||||
|
WoofWare.NUnitTestRunner.UserMethodFailure+BadParameters.name [property]: [read-only] string
|
||||||
WoofWare.NUnitTestRunner.UserMethodFailure+ReturnedNonUnit inherit WoofWare.NUnitTestRunner.UserMethodFailure
|
WoofWare.NUnitTestRunner.UserMethodFailure+ReturnedNonUnit inherit WoofWare.NUnitTestRunner.UserMethodFailure
|
||||||
WoofWare.NUnitTestRunner.UserMethodFailure+ReturnedNonUnit.get_name [method]: unit -> string
|
WoofWare.NUnitTestRunner.UserMethodFailure+ReturnedNonUnit.get_name [method]: unit -> string
|
||||||
WoofWare.NUnitTestRunner.UserMethodFailure+ReturnedNonUnit.get_result [method]: unit -> obj
|
WoofWare.NUnitTestRunner.UserMethodFailure+ReturnedNonUnit.get_result [method]: unit -> obj
|
||||||
WoofWare.NUnitTestRunner.UserMethodFailure+ReturnedNonUnit.name [property]: [read-only] string
|
WoofWare.NUnitTestRunner.UserMethodFailure+ReturnedNonUnit.name [property]: [read-only] string
|
||||||
WoofWare.NUnitTestRunner.UserMethodFailure+ReturnedNonUnit.result [property]: [read-only] obj
|
WoofWare.NUnitTestRunner.UserMethodFailure+ReturnedNonUnit.result [property]: [read-only] obj
|
||||||
WoofWare.NUnitTestRunner.UserMethodFailure+Tags inherit obj
|
WoofWare.NUnitTestRunner.UserMethodFailure+Tags inherit obj
|
||||||
|
WoofWare.NUnitTestRunner.UserMethodFailure+Tags.BadParameters [static field]: int = 2
|
||||||
WoofWare.NUnitTestRunner.UserMethodFailure+Tags.ReturnedNonUnit [static field]: int = 0
|
WoofWare.NUnitTestRunner.UserMethodFailure+Tags.ReturnedNonUnit [static field]: int = 0
|
||||||
WoofWare.NUnitTestRunner.UserMethodFailure+Tags.Threw [static field]: int = 1
|
WoofWare.NUnitTestRunner.UserMethodFailure+Tags.Threw [static field]: int = 1
|
||||||
WoofWare.NUnitTestRunner.UserMethodFailure+Threw inherit WoofWare.NUnitTestRunner.UserMethodFailure
|
WoofWare.NUnitTestRunner.UserMethodFailure+Threw inherit WoofWare.NUnitTestRunner.UserMethodFailure
|
||||||
@@ -683,13 +726,16 @@ WoofWare.NUnitTestRunner.UserMethodFailure+Threw.get_name [method]: unit -> stri
|
|||||||
WoofWare.NUnitTestRunner.UserMethodFailure+Threw.Item2 [property]: [read-only] System.Exception
|
WoofWare.NUnitTestRunner.UserMethodFailure+Threw.Item2 [property]: [read-only] System.Exception
|
||||||
WoofWare.NUnitTestRunner.UserMethodFailure+Threw.name [property]: [read-only] string
|
WoofWare.NUnitTestRunner.UserMethodFailure+Threw.name [property]: [read-only] string
|
||||||
WoofWare.NUnitTestRunner.UserMethodFailure.Equals [method]: (WoofWare.NUnitTestRunner.UserMethodFailure, System.Collections.IEqualityComparer) -> bool
|
WoofWare.NUnitTestRunner.UserMethodFailure.Equals [method]: (WoofWare.NUnitTestRunner.UserMethodFailure, System.Collections.IEqualityComparer) -> bool
|
||||||
|
WoofWare.NUnitTestRunner.UserMethodFailure.get_IsBadParameters [method]: unit -> bool
|
||||||
WoofWare.NUnitTestRunner.UserMethodFailure.get_IsReturnedNonUnit [method]: unit -> bool
|
WoofWare.NUnitTestRunner.UserMethodFailure.get_IsReturnedNonUnit [method]: unit -> bool
|
||||||
WoofWare.NUnitTestRunner.UserMethodFailure.get_IsThrew [method]: unit -> bool
|
WoofWare.NUnitTestRunner.UserMethodFailure.get_IsThrew [method]: unit -> bool
|
||||||
WoofWare.NUnitTestRunner.UserMethodFailure.get_Name [method]: unit -> string
|
WoofWare.NUnitTestRunner.UserMethodFailure.get_Name [method]: unit -> string
|
||||||
WoofWare.NUnitTestRunner.UserMethodFailure.get_Tag [method]: unit -> int
|
WoofWare.NUnitTestRunner.UserMethodFailure.get_Tag [method]: unit -> int
|
||||||
|
WoofWare.NUnitTestRunner.UserMethodFailure.IsBadParameters [property]: [read-only] bool
|
||||||
WoofWare.NUnitTestRunner.UserMethodFailure.IsReturnedNonUnit [property]: [read-only] bool
|
WoofWare.NUnitTestRunner.UserMethodFailure.IsReturnedNonUnit [property]: [read-only] bool
|
||||||
WoofWare.NUnitTestRunner.UserMethodFailure.IsThrew [property]: [read-only] bool
|
WoofWare.NUnitTestRunner.UserMethodFailure.IsThrew [property]: [read-only] bool
|
||||||
WoofWare.NUnitTestRunner.UserMethodFailure.Name [property]: [read-only] string
|
WoofWare.NUnitTestRunner.UserMethodFailure.Name [property]: [read-only] string
|
||||||
|
WoofWare.NUnitTestRunner.UserMethodFailure.NewBadParameters [static method]: (string, System.Type [], obj []) -> WoofWare.NUnitTestRunner.UserMethodFailure
|
||||||
WoofWare.NUnitTestRunner.UserMethodFailure.NewReturnedNonUnit [static method]: (string, obj) -> WoofWare.NUnitTestRunner.UserMethodFailure
|
WoofWare.NUnitTestRunner.UserMethodFailure.NewReturnedNonUnit [static method]: (string, obj) -> WoofWare.NUnitTestRunner.UserMethodFailure
|
||||||
WoofWare.NUnitTestRunner.UserMethodFailure.NewThrew [static method]: (string, System.Exception) -> WoofWare.NUnitTestRunner.UserMethodFailure
|
WoofWare.NUnitTestRunner.UserMethodFailure.NewThrew [static method]: (string, System.Exception) -> WoofWare.NUnitTestRunner.UserMethodFailure
|
||||||
WoofWare.NUnitTestRunner.UserMethodFailure.Tag [property]: [read-only] int
|
WoofWare.NUnitTestRunner.UserMethodFailure.Tag [property]: [read-only] int
|
@@ -90,8 +90,15 @@ module TestFixture =
|
|||||||
let result =
|
let result =
|
||||||
try
|
try
|
||||||
head.Invoke (containingObject, args) |> Ok
|
head.Invoke (containingObject, args) |> Ok
|
||||||
with :? TargetInvocationException as e ->
|
with
|
||||||
Error (UserMethodFailure.Threw (head.Name, e.InnerException))
|
| :? TargetInvocationException as e -> Error (UserMethodFailure.Threw (head.Name, e.InnerException))
|
||||||
|
| :? TargetParameterCountException ->
|
||||||
|
UserMethodFailure.BadParameters (
|
||||||
|
head.Name,
|
||||||
|
head.GetParameters () |> Array.map (fun pm -> pm.ParameterType),
|
||||||
|
args
|
||||||
|
)
|
||||||
|
|> Error
|
||||||
|
|
||||||
match result with
|
match result with
|
||||||
| Error e -> Error (wrap e)
|
| Error e -> Error (wrap e)
|
||||||
@@ -620,14 +627,16 @@ module TestFixture =
|
|||||||
| [ v ] ->
|
| [ v ] ->
|
||||||
match v.Value with
|
match v.Value with
|
||||||
| :? int as v ->
|
| :? int as v ->
|
||||||
match v with
|
match ParallelScope.ofInt v with
|
||||||
| 512 -> categories, args, Some (Parallelizable.Yes ClassParallelScope.Fixtures)
|
| ParallelScope.Fixtures ->
|
||||||
| 256 -> categories, args, Some (Parallelizable.Yes ClassParallelScope.Children)
|
categories, args, Some (Parallelizable.Yes ClassParallelScope.Fixtures)
|
||||||
| 257 -> categories, args, Some (Parallelizable.Yes ClassParallelScope.All)
|
| ParallelScope.Children ->
|
||||||
| 1 -> categories, args, Some (Parallelizable.Yes ClassParallelScope.Self)
|
categories, args, Some (Parallelizable.Yes ClassParallelScope.Children)
|
||||||
| v ->
|
| ParallelScope.All ->
|
||||||
failwith
|
categories, args, Some (Parallelizable.Yes ClassParallelScope.All)
|
||||||
$"Could not recognise value %i{v} of parallel scope in %s{parentType.FullName}"
|
| ParallelScope.Self ->
|
||||||
|
categories, args, Some (Parallelizable.Yes ClassParallelScope.Self)
|
||||||
|
| ParallelScope.None -> categories, args, Some Parallelizable.No
|
||||||
| v ->
|
| v ->
|
||||||
failwith
|
failwith
|
||||||
$"Unexpectedly non-int value %O{v} of parallel scope in %s{parentType.FullName}"
|
$"Unexpectedly non-int value %O{v} of parallel scope in %s{parentType.FullName}"
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
<PackageId>WoofWare.NUnitTestRunner.Lib</PackageId>
|
<PackageId>WoofWare.NUnitTestRunner.Lib</PackageId>
|
||||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||||
<WarnOn>FS3559</WarnOn>
|
<WarnOn>FS3559</WarnOn>
|
||||||
<WoofWareMyriadPluginVersion>3.1.1</WoofWareMyriadPluginVersion>
|
<WoofWareMyriadPluginVersion>4.0.12</WoofWareMyriadPluginVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
<Compile Include="GeneratedRuntimeConfig.fs">
|
<Compile Include="GeneratedRuntimeConfig.fs">
|
||||||
<MyriadFile>RuntimeConfig.fs</MyriadFile>
|
<MyriadFile>RuntimeConfig.fs</MyriadFile>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="ParallelScope.fs" />
|
||||||
<Compile Include="DotnetRuntime.fs" />
|
<Compile Include="DotnetRuntime.fs" />
|
||||||
<Compile Include="Array.fs" />
|
<Compile Include="Array.fs" />
|
||||||
<Compile Include="List.fs" />
|
<Compile Include="List.fs" />
|
||||||
@@ -47,10 +48,10 @@
|
|||||||
<EmbeddedResource Include="version.json" />
|
<EmbeddedResource Include="version.json" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="WoofWare.PrattParser" Version="0.2.2" />
|
<PackageReference Include="WoofWare.PrattParser" Version="0.2.3" />
|
||||||
<PackageReference Update="FSharp.Core" Version="6.0.1" />
|
<PackageReference Update="FSharp.Core" Version="6.0.1" />
|
||||||
<PackageReference Include="WoofWare.DotnetRuntimeLocator" Version="0.1.9" />
|
<PackageReference Include="WoofWare.DotnetRuntimeLocator" Version="0.1.11" />
|
||||||
<PackageReference Include="WoofWare.Myriad.Plugins.Attributes" Version="3.6.2" />
|
<PackageReference Include="WoofWare.Myriad.Plugins.Attributes" Version="3.6.7" />
|
||||||
<PackageReference Include="Myriad.SDK" Version="0.8.3" PrivateAssets="all" />
|
<PackageReference Include="Myriad.SDK" Version="0.8.3" PrivateAssets="all" />
|
||||||
<PackageReference Include="WoofWare.Myriad.Plugins" Version="$(WoofWareMyriadPluginVersion)" PrivateAssets="all" />
|
<PackageReference Include="WoofWare.Myriad.Plugins" Version="$(WoofWareMyriadPluginVersion)" PrivateAssets="all" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"version": "0.17",
|
"version": "0.20",
|
||||||
"publicReleaseRefSpec": [
|
"publicReleaseRefSpec": [
|
||||||
"^refs/heads/main$"
|
"^refs/heads/main$"
|
||||||
],
|
],
|
||||||
@@ -8,4 +8,4 @@
|
|||||||
":/Directory.Build.props",
|
":/Directory.Build.props",
|
||||||
":/README.md"
|
":/README.md"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@@ -12,6 +12,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WoofWare.NUnitTestRunner.St
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WoofWare.NUnitTestRunner.StartupHookLogic", "WoofWare.NUnitTestRunner.StartupHookLogic\WoofWare.NUnitTestRunner.StartupHookLogic.csproj", "{A70627C8-9D19-42C2-AFEB-CFBDDDCE045D}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WoofWare.NUnitTestRunner.StartupHookLogic", "WoofWare.NUnitTestRunner.StartupHookLogic\WoofWare.NUnitTestRunner.StartupHookLogic.csproj", "{A70627C8-9D19-42C2-AFEB-CFBDDDCE045D}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FailingConsumer", "FailingConsumer\FailingConsumer.fsproj", "{DA7160F5-4C3C-4D2E-918B-7DCBA3F4272E}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
@@ -42,5 +44,9 @@ Global
|
|||||||
{A70627C8-9D19-42C2-AFEB-CFBDDDCE045D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{A70627C8-9D19-42C2-AFEB-CFBDDDCE045D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{A70627C8-9D19-42C2-AFEB-CFBDDDCE045D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{A70627C8-9D19-42C2-AFEB-CFBDDDCE045D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{A70627C8-9D19-42C2-AFEB-CFBDDDCE045D}.Release|Any CPU.Build.0 = Release|Any CPU
|
{A70627C8-9D19-42C2-AFEB-CFBDDDCE045D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{DA7160F5-4C3C-4D2E-918B-7DCBA3F4272E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{DA7160F5-4C3C-4D2E-918B-7DCBA3F4272E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{DA7160F5-4C3C-4D2E-918B-7DCBA3F4272E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{DA7160F5-4C3C-4D2E-918B-7DCBA3F4272E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
@@ -16,12 +16,12 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="ApiSurface" Version="4.1.5" />
|
<PackageReference Include="ApiSurface" Version="4.1.17" />
|
||||||
<PackageReference Include="FsCheck" Version="3.0.0-rc3" />
|
<PackageReference Include="FsCheck" Version="3.1.0" />
|
||||||
<PackageReference Include="FsUnit" Version="6.0.1" />
|
<PackageReference Include="FsUnit" Version="7.0.1" />
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0" />
|
||||||
<PackageReference Include="NUnit" Version="4.2.2" />
|
<PackageReference Include="NUnit" Version="4.3.2" />
|
||||||
<PackageReference Include="NUnit3TestAdapter" Version="4.6.0"/>
|
<PackageReference Include="NUnit3TestAdapter" Version="5.0.0"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@@ -4,13 +4,13 @@
|
|||||||
<IsPackable>false</IsPackable>
|
<IsPackable>false</IsPackable>
|
||||||
<IsPublishable>false</IsPublishable>
|
<IsPublishable>false</IsPublishable>
|
||||||
<RestorePackagesPath>../.analyzerpackages/</RestorePackagesPath>
|
<RestorePackagesPath>../.analyzerpackages/</RestorePackagesPath>
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<DisableImplicitNuGetFallbackFolder>true</DisableImplicitNuGetFallbackFolder>
|
<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.-->
|
<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>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageDownload Include="G-Research.FSharp.Analyzers" Version="[0.11.0]" />
|
<PackageDownload Include="G-Research.FSharp.Analyzers" Version="[0.13.0]" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
12
flake.lock
generated
12
flake.lock
generated
@@ -5,11 +5,11 @@
|
|||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1726560853,
|
"lastModified": 1731533236,
|
||||||
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -20,11 +20,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1726871744,
|
"lastModified": 1739451785,
|
||||||
"narHash": "sha256-V5LpfdHyQkUF7RfOaDPrZDP+oqz88lTJrMT1+stXNwo=",
|
"narHash": "sha256-3ebRdThRic9bHMuNi2IAA/ek9b32bsy8F5R4SvGTIog=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "a1d92660c6b3b7c26fb883500a80ea9d33321be2",
|
"rev": "1128e89fd5e11bb25aedbfc287733c6502202ea9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
20
flake.nix
20
flake.nix
@@ -14,7 +14,7 @@
|
|||||||
flake-utils.lib.eachDefaultSystem (system: let
|
flake-utils.lib.eachDefaultSystem (system: let
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
pname = "unofficial-nunit-runner";
|
pname = "unofficial-nunit-runner";
|
||||||
dotnet-sdk = pkgs.dotnet-sdk_8;
|
dotnet-sdk = pkgs.dotnetCorePackages.sdk_8_0;
|
||||||
dotnet-runtime = pkgs.dotnetCorePackages.runtime_8_0;
|
dotnet-runtime = pkgs.dotnetCorePackages.runtime_8_0;
|
||||||
version = "0.1";
|
version = "0.1";
|
||||||
dotnetTool = dllOverride: toolName: toolVersion: hash:
|
dotnetTool = dllOverride: toolName: toolVersion: hash:
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
pname = name;
|
pname = name;
|
||||||
version = version;
|
version = version;
|
||||||
hash = hash;
|
hash = hash;
|
||||||
installPhase = ''mkdir -p $out/bin && cp -r tools/net6.0/any/* $out/bin'';
|
installPhase = ''mkdir -p $out/bin && cp -r tools/net*/any/* $out/bin'';
|
||||||
};
|
};
|
||||||
installPhase = let
|
installPhase = let
|
||||||
dll =
|
dll =
|
||||||
@@ -42,9 +42,11 @@
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
packages = {
|
packages = let
|
||||||
fantomas = dotnetTool null "fantomas" (builtins.fromJSON (builtins.readFile ./.config/dotnet-tools.json)).tools.fantomas.version (builtins.head (builtins.filter (elem: elem.pname == "fantomas") ((import ./nix/deps.nix) {fetchNuGet = x: x;}))).hash;
|
deps = builtins.fromJSON (builtins.readFile ./nix/deps.json);
|
||||||
fsharp-analyzers = dotnetTool "FSharp.Analyzers.Cli" "fsharp-analyzers" (builtins.fromJSON (builtins.readFile ./.config/dotnet-tools.json)).tools.fsharp-analyzers.version (builtins.head (builtins.filter (elem: elem.pname == "fsharp-analyzers") ((import ./nix/deps.nix) {fetchNuGet = x: x;}))).hash;
|
in {
|
||||||
|
fantomas = dotnetTool null "fantomas" (builtins.fromJSON (builtins.readFile ./.config/dotnet-tools.json)).tools.fantomas.version (builtins.head (builtins.filter (elem: elem.pname == "fantomas") deps)).hash;
|
||||||
|
fsharp-analyzers = dotnetTool "FSharp.Analyzers.Cli" "fsharp-analyzers" (builtins.fromJSON (builtins.readFile ./.config/dotnet-tools.json)).tools.fsharp-analyzers.version (builtins.head (builtins.filter (elem: elem.pname == "fsharp-analyzers") deps)).hash;
|
||||||
default = pkgs.buildDotnetModule {
|
default = pkgs.buildDotnetModule {
|
||||||
inherit pname version dotnet-sdk dotnet-runtime;
|
inherit pname version dotnet-sdk dotnet-runtime;
|
||||||
name = "unofficial-nunit-runner";
|
name = "unofficial-nunit-runner";
|
||||||
@@ -52,7 +54,7 @@
|
|||||||
projectFile = "./WoofWare.NUnitTestRunner/WoofWare.NUnitTestRunner.fsproj";
|
projectFile = "./WoofWare.NUnitTestRunner/WoofWare.NUnitTestRunner.fsproj";
|
||||||
testProjectFile = "./WoofWare.NUnitTestRunner/WoofWare.NUnitTestRunner.Test/WoofWare.NUnitTestRunner.Test.fsproj";
|
testProjectFile = "./WoofWare.NUnitTestRunner/WoofWare.NUnitTestRunner.Test/WoofWare.NUnitTestRunner.Test.fsproj";
|
||||||
disabledTests = ["WoofWare.NUnitTestRunner.Test.TestSurface.EnsureVersionIsMonotonic"];
|
disabledTests = ["WoofWare.NUnitTestRunner.Test.TestSurface.EnsureVersionIsMonotonic"];
|
||||||
nugetDeps = ./nix/deps.nix; # `nix build .#default.passthru.fetch-deps && ./result nix/deps.nix`
|
nugetDeps = ./nix/deps.json; # `nix build .#default.fetch-deps && ./result nix/deps.json`
|
||||||
doCheck = true;
|
doCheck = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -63,11 +65,7 @@
|
|||||||
pkgs.alejandra
|
pkgs.alejandra
|
||||||
pkgs.nodePackages.markdown-link-check
|
pkgs.nodePackages.markdown-link-check
|
||||||
pkgs.shellcheck
|
pkgs.shellcheck
|
||||||
];
|
pkgs.xmlstarlet
|
||||||
};
|
|
||||||
net6 = pkgs.mkShell {
|
|
||||||
packages = [
|
|
||||||
pkgs.dotnetCorePackages.runtime_6_0
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
382
nix/deps.json
Normal file
382
nix/deps.json
Normal file
@@ -0,0 +1,382 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"pname": "ApiSurface",
|
||||||
|
"version": "4.1.17",
|
||||||
|
"hash": "sha256-ZYIW++7vXYV/7TTNUkV36QDN6yJbHymsKcxTUscTnvA="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "fantomas",
|
||||||
|
"version": "7.0.0",
|
||||||
|
"hash": "sha256-v4bXmvjZOYxl5RSIHuqVfDzBQdRz5SrmzZtD6SeEYTY="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Fantomas.Core",
|
||||||
|
"version": "6.1.1",
|
||||||
|
"hash": "sha256-FcTLHQFvKkQY/kV08jhhy/St/+FmXpp3epp/R3zUXMA="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Fantomas.FCS",
|
||||||
|
"version": "6.1.1",
|
||||||
|
"hash": "sha256-NuZ8msPEHYA8T3EYREB28F1RcNgUU8V54eg2+UttYxw="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "FsCheck",
|
||||||
|
"version": "3.1.0",
|
||||||
|
"hash": "sha256-u0Ha94EjClJ8evNSHu8d6+Dx9qYM3kV3sl1PEq9gF8s="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "fsharp-analyzers",
|
||||||
|
"version": "0.29.0",
|
||||||
|
"hash": "sha256-e4G7/5DwwSZYvVE9yy+g8n1easPLC6/fDszioIsT7Dw="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "FSharp.Core",
|
||||||
|
"version": "6.0.1",
|
||||||
|
"hash": "sha256-Ehsgt3nCJijpaVuJguC1TPVEKSkJd6PSc07D2ZQSemI="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "FSharp.Core",
|
||||||
|
"version": "8.0.403",
|
||||||
|
"hash": "sha256-3XSQp7JUOU5T6gvSQXNfBF4t4gaX4J4xushH+cfM9mE="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "FsUnit",
|
||||||
|
"version": "7.0.1",
|
||||||
|
"hash": "sha256-K85CIdxMeFSHEKZk6heIXp/oFjWAn7dBILKrw49pJUY="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Microsoft.ApplicationInsights",
|
||||||
|
"version": "2.22.0",
|
||||||
|
"hash": "sha256-mUQ63atpT00r49ca50uZu2YCiLg3yd6r3HzTryqcuEA="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Microsoft.AspNetCore.App.Ref",
|
||||||
|
"version": "6.0.36",
|
||||||
|
"hash": "sha256-9jDkWbjw/nd8yqdzVTagCuqr6owJ/DUMi4BlUZT4hWU="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Microsoft.AspNetCore.App.Runtime.linux-arm64",
|
||||||
|
"version": "6.0.36",
|
||||||
|
"hash": "sha256-JQULJyF0ivLoUU1JaFfK/HHg+/qzpN7V2RR2Cc+WlQ4="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Microsoft.AspNetCore.App.Runtime.linux-x64",
|
||||||
|
"version": "6.0.36",
|
||||||
|
"hash": "sha256-zUsVIpV481vMLAXaLEEUpEMA9/f1HGOnvaQnaWdzlyY="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Microsoft.AspNetCore.App.Runtime.osx-arm64",
|
||||||
|
"version": "6.0.36",
|
||||||
|
"hash": "sha256-2seqZcz0JeUjkzh3QcGa9TcJ4LUafpFjTRk+Nm8T6T0="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Microsoft.AspNetCore.App.Runtime.osx-x64",
|
||||||
|
"version": "6.0.36",
|
||||||
|
"hash": "sha256-yxLafxiBKkvfkDggPk0P9YZIHBkDJOsFTO7/V9mEHuU="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Microsoft.CodeCoverage",
|
||||||
|
"version": "17.13.0",
|
||||||
|
"hash": "sha256-GKrIxeyQo5Az1mztfQgea1kGtJwonnNOrXK/0ULfu8o="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Microsoft.NET.Test.Sdk",
|
||||||
|
"version": "17.13.0",
|
||||||
|
"hash": "sha256-sc2wvyV8cGm1FrNP2GGHEI584RCvRPu15erYCsgw5QY="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Microsoft.NETCore.App.Host.linux-arm64",
|
||||||
|
"version": "6.0.36",
|
||||||
|
"hash": "sha256-9lC/LYnthYhjkWWz2kkFCvlA5LJOv11jdt59SDnpdy0="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Microsoft.NETCore.App.Host.linux-x64",
|
||||||
|
"version": "6.0.36",
|
||||||
|
"hash": "sha256-VFRDzx7LJuvI5yzKdGmw/31NYVbwHWPKQvueQt5xc10="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Microsoft.NETCore.App.Host.osx-arm64",
|
||||||
|
"version": "6.0.36",
|
||||||
|
"hash": "sha256-DaSWwYACJGolEBuMhzDVCj/rQTdDt061xCVi+gyQnuo="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Microsoft.NETCore.App.Host.osx-x64",
|
||||||
|
"version": "6.0.36",
|
||||||
|
"hash": "sha256-FrRny9EI6HKCKQbu6mcLj5w4ooSRrODD4Vj2ZMGnMd4="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Microsoft.NETCore.App.Ref",
|
||||||
|
"version": "6.0.36",
|
||||||
|
"hash": "sha256-9LZgVoIFF8qNyUu8kdJrYGLutMF/cL2K82HN2ywwlx8="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Microsoft.NETCore.App.Runtime.linux-arm64",
|
||||||
|
"version": "6.0.36",
|
||||||
|
"hash": "sha256-k3rxvUhCEU0pVH8KgEMtkPiSOibn+nBh+0zT2xIfId8="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Microsoft.NETCore.App.Runtime.linux-x64",
|
||||||
|
"version": "6.0.36",
|
||||||
|
"hash": "sha256-U8wJ2snSDFqeAgDVLXjnniidC7Cr5aJ1/h/BMSlyu0c="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Microsoft.NETCore.App.Runtime.osx-arm64",
|
||||||
|
"version": "6.0.36",
|
||||||
|
"hash": "sha256-UfLcrL2Gj/OLz0s92Oo+OCJeDpZFAcQLPLiSNND8D5Y="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Microsoft.NETCore.App.Runtime.osx-x64",
|
||||||
|
"version": "6.0.36",
|
||||||
|
"hash": "sha256-0xIJYFzxdMcnCj3wzkFRQZSnQcPHzPHMzePRIOA3oJs="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Microsoft.NETCore.Platforms",
|
||||||
|
"version": "1.1.1",
|
||||||
|
"hash": "sha256-8hLiUKvy/YirCWlFwzdejD2Db3DaXhHxT7GSZx/znJg="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Microsoft.NETCore.Platforms",
|
||||||
|
"version": "2.0.0",
|
||||||
|
"hash": "sha256-IEvBk6wUXSdyCnkj6tHahOJv290tVVT8tyemYcR0Yro="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Microsoft.NETCore.Targets",
|
||||||
|
"version": "1.1.3",
|
||||||
|
"hash": "sha256-WLsf1NuUfRWyr7C7Rl9jiua9jximnVvzy6nk2D2bVRc="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Microsoft.Testing.Extensions.Telemetry",
|
||||||
|
"version": "1.5.3",
|
||||||
|
"hash": "sha256-bIXwPSa3jkr2b6xINOqMUs6/uj/r4oVFM7xq3uVIZDU="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Microsoft.Testing.Extensions.TrxReport.Abstractions",
|
||||||
|
"version": "1.5.3",
|
||||||
|
"hash": "sha256-IfMRfcyaIKEMRtx326ICKtinDBEfGw/Sv8ZHawJ96Yc="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Microsoft.Testing.Extensions.VSTestBridge",
|
||||||
|
"version": "1.5.3",
|
||||||
|
"hash": "sha256-XpM/yFjhLSsuzyDV+xKubs4V1zVVYiV05E0+N4S1h0g="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Microsoft.Testing.Platform",
|
||||||
|
"version": "1.5.3",
|
||||||
|
"hash": "sha256-y61Iih6w5D79dmrj2V675mcaeIiHoj1HSa1FRit2BLM="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Microsoft.Testing.Platform.MSBuild",
|
||||||
|
"version": "1.5.3",
|
||||||
|
"hash": "sha256-YspvjE5Jfi587TAfsvfDVJXNrFOkx1B3y1CKV6m7YLY="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Microsoft.TestPlatform.ObjectModel",
|
||||||
|
"version": "17.12.0",
|
||||||
|
"hash": "sha256-3XBHBSuCxggAIlHXmKNQNlPqMqwFlM952Av6RrLw1/w="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Microsoft.TestPlatform.ObjectModel",
|
||||||
|
"version": "17.13.0",
|
||||||
|
"hash": "sha256-6S0fjfj8vA+h6dJVNwLi6oZhYDO/I/6hBZaq2VTW+Uk="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Microsoft.TestPlatform.TestHost",
|
||||||
|
"version": "17.13.0",
|
||||||
|
"hash": "sha256-L/CJzou7dhmShUgXq3aXL3CaLTJll17Q+JY2DBdUUpo="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Myriad.Core",
|
||||||
|
"version": "0.8.3",
|
||||||
|
"hash": "sha256-vBOxfq8QriX/yUtaXN69rEQaY/psRNJWxqATLidrt2g="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Myriad.Sdk",
|
||||||
|
"version": "0.8.3",
|
||||||
|
"hash": "sha256-7O397WKhskKOvE3MkJT37BvxorDWngDR6gTUogtDZ2M="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Nerdbank.GitVersioning",
|
||||||
|
"version": "3.7.115",
|
||||||
|
"hash": "sha256-sqn+i7vvBgBUtm7j82mH+SpApgI2hsmL5DYfLm1Z7gw="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Newtonsoft.Json",
|
||||||
|
"version": "13.0.1",
|
||||||
|
"hash": "sha256-K2tSVW4n4beRPzPu3rlVaBEMdGvWSv/3Q1fxaDh4Mjo="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Newtonsoft.Json",
|
||||||
|
"version": "13.0.3",
|
||||||
|
"hash": "sha256-hy/BieY4qxBWVVsDqqOPaLy1QobiIapkbrESm6v2PHc="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "NuGet.Common",
|
||||||
|
"version": "6.13.1",
|
||||||
|
"hash": "sha256-uDSZzCzMETKJE2pYAh9n110YrLPVs83+cxcyNCv9V/o="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "NuGet.Configuration",
|
||||||
|
"version": "6.13.1",
|
||||||
|
"hash": "sha256-fjit3Qhqu+egLgxvJRD6zQ6U2H+OxsLoy7HYcbXJgBY="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "NuGet.Frameworks",
|
||||||
|
"version": "6.13.1",
|
||||||
|
"hash": "sha256-upL6cboghOYed6acdlVljMa9nCSExYoBgQlD5QcJ+ek="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "NuGet.Packaging",
|
||||||
|
"version": "6.13.1",
|
||||||
|
"hash": "sha256-khq+grMovEsO95wAhCHmauL60LB83NkWnDY5zcImXT4="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "NuGet.Protocol",
|
||||||
|
"version": "6.13.1",
|
||||||
|
"hash": "sha256-0zqowx5iNMMzTSF0HO2Zzc1qqyCB/nEhNHFH8Z0jxzc="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "NuGet.Versioning",
|
||||||
|
"version": "6.13.1",
|
||||||
|
"hash": "sha256-NymrrcVZUoc78elPHYIoBFG2NpdIEZYEeqk6FTdvZug="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "NUnit",
|
||||||
|
"version": "4.3.2",
|
||||||
|
"hash": "sha256-0RWe8uFoxYp6qhPlDDEghOMcKJgyw2ybvEoAqBLebeE="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "NUnit3TestAdapter",
|
||||||
|
"version": "5.0.0",
|
||||||
|
"hash": "sha256-7jZM4qAbIzne3AcdFfMbvbgogqpxvVe6q2S7Ls8xQy0="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "runtime.any.System.Runtime",
|
||||||
|
"version": "4.3.0",
|
||||||
|
"hash": "sha256-qwhNXBaJ1DtDkuRacgHwnZmOZ1u9q7N8j0cWOLYOELM="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "runtime.native.System",
|
||||||
|
"version": "4.3.0",
|
||||||
|
"hash": "sha256-ZBZaodnjvLXATWpXXakFgcy6P+gjhshFXmglrL5xD5Y="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "runtime.unix.System.Private.Uri",
|
||||||
|
"version": "4.3.0",
|
||||||
|
"hash": "sha256-c5tXWhE/fYbJVl9rXs0uHh3pTsg44YD1dJvyOA0WoMs="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "Spectre.Console",
|
||||||
|
"version": "0.49.1",
|
||||||
|
"hash": "sha256-tqSVojyuQjuB34lXo759NOcyLgNIw815mKXJPq5JFDo="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "System.Collections.Immutable",
|
||||||
|
"version": "8.0.0",
|
||||||
|
"hash": "sha256-F7OVjKNwpqbUh8lTidbqJWYi476nsq9n+6k0+QVRo3w="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "System.Diagnostics.DiagnosticSource",
|
||||||
|
"version": "5.0.0",
|
||||||
|
"hash": "sha256-6mW3N6FvcdNH/pB58pl+pFSCGWgyaP4hfVtC/SMWDV4="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "System.Diagnostics.DiagnosticSource",
|
||||||
|
"version": "7.0.0",
|
||||||
|
"hash": "sha256-9Wk8cHSkjKtqkN6xW7KnXoQVtF/VNbKeBq79WqDesMs="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "System.Formats.Asn1",
|
||||||
|
"version": "8.0.1",
|
||||||
|
"hash": "sha256-may/Wg+esmm1N14kQTG4ESMBi+GQKPp0ZrrBo/o6OXM="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "System.IO.Abstractions",
|
||||||
|
"version": "4.2.13",
|
||||||
|
"hash": "sha256-nkC/PiqE6+c1HJ2yTwg3x+qdBh844Z8n3ERWDW8k6Gg="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "System.IO.FileSystem.AccessControl",
|
||||||
|
"version": "4.5.0",
|
||||||
|
"hash": "sha256-ck44YBQ0M+2Im5dw0VjBgFD1s0XuY54cujrodjjSBL8="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "System.Memory",
|
||||||
|
"version": "4.5.5",
|
||||||
|
"hash": "sha256-EPQ9o1Kin7KzGI5O3U3PUQAZTItSbk9h/i4rViN3WiI="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "System.Private.Uri",
|
||||||
|
"version": "4.3.0",
|
||||||
|
"hash": "sha256-fVfgcoP4AVN1E5wHZbKBIOPYZ/xBeSIdsNF+bdukIRM="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "System.Reflection.Metadata",
|
||||||
|
"version": "1.6.0",
|
||||||
|
"hash": "sha256-JJfgaPav7UfEh4yRAQdGhLZF1brr0tUWPl6qmfNWq/E="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "System.Runtime",
|
||||||
|
"version": "4.3.1",
|
||||||
|
"hash": "sha256-R9T68AzS1PJJ7v6ARz9vo88pKL1dWqLOANg4pkQjkA0="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "System.Runtime.CompilerServices.Unsafe",
|
||||||
|
"version": "6.0.0",
|
||||||
|
"hash": "sha256-bEG1PnDp7uKYz/OgLOWs3RWwQSVYm+AnPwVmAmcgp2I="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "System.Security.AccessControl",
|
||||||
|
"version": "4.5.0",
|
||||||
|
"hash": "sha256-AFsKPb/nTk2/mqH/PYpaoI8PLsiKKimaXf+7Mb5VfPM="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "System.Security.Cryptography.Pkcs",
|
||||||
|
"version": "6.0.4",
|
||||||
|
"hash": "sha256-2e0aRybote+OR66bHaNiYpF//4fCiaO3zbR2e9GABUI="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "System.Security.Cryptography.ProtectedData",
|
||||||
|
"version": "4.4.0",
|
||||||
|
"hash": "sha256-Ri53QmFX8I8UH0x4PikQ1ZA07ZSnBUXStd5rBfGWFOE="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "System.Security.Principal.Windows",
|
||||||
|
"version": "4.5.0",
|
||||||
|
"hash": "sha256-BkUYNguz0e4NJp1kkW7aJBn3dyH9STwB5N8XqnlCsmY="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "System.Text.Json",
|
||||||
|
"version": "8.0.5",
|
||||||
|
"hash": "sha256-yKxo54w5odWT6nPruUVsaX53oPRe+gKzGvLnnxtwP68="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "TypeEquality",
|
||||||
|
"version": "0.3.0",
|
||||||
|
"hash": "sha256-V50xAOzzyUJrY+MYPRxtnqW5MVeATXCes89wPprv1r4="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "WoofWare.DotnetRuntimeLocator",
|
||||||
|
"version": "0.1.11",
|
||||||
|
"hash": "sha256-btWYnXxZzAnEcAE3Ufvz+Z3cJqtW7EGXs5OZMEHIWr8="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "WoofWare.Myriad.Plugins",
|
||||||
|
"version": "4.0.12",
|
||||||
|
"hash": "sha256-6o8oE5loEpKFVMRXf/rmY0YDW/iRF2Zic1lkfsOXcSo="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "WoofWare.Myriad.Plugins.Attributes",
|
||||||
|
"version": "3.6.7",
|
||||||
|
"hash": "sha256-YvrXS2ZMoMZkWgGxxcumyoqQkg4cSjGQzCrMbBCCtXM="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "WoofWare.PrattParser",
|
||||||
|
"version": "0.2.3",
|
||||||
|
"hash": "sha256-PsfU33BFsaA8LwlZMkSwmoA4hLb7Vkm2gYm48MglqxY="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pname": "WoofWare.Whippet.Fantomas",
|
||||||
|
"version": "0.3.1",
|
||||||
|
"hash": "sha256-i5oiqcrxzM90Ocuq5MIu2Ha5lV0aYu5nCvuwmFqp6NA="
|
||||||
|
}
|
||||||
|
]
|
334
nix/deps.nix
334
nix/deps.nix
@@ -1,334 +0,0 @@
|
|||||||
# This file was automatically generated by passthru.fetch-deps.
|
|
||||||
# Please dont edit it manually, your changes might get overwritten!
|
|
||||||
{fetchNuGet}: [
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "ApiSurface";
|
|
||||||
version = "4.1.5";
|
|
||||||
hash = "sha256-Kbt18XLk1gvZfzGca885HaXZB119APay85KzI546PYM=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "fantomas";
|
|
||||||
version = "6.3.15";
|
|
||||||
hash = "sha256-Gjw7MxjUNckMWSfnOye4UTe5fZWnor6RHCls3PNsuG8=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Fantomas.Core";
|
|
||||||
version = "6.1.1";
|
|
||||||
hash = "sha256-FcTLHQFvKkQY/kV08jhhy/St/+FmXpp3epp/R3zUXMA=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Fantomas.FCS";
|
|
||||||
version = "6.1.1";
|
|
||||||
hash = "sha256-NuZ8msPEHYA8T3EYREB28F1RcNgUU8V54eg2+UttYxw=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "FsCheck";
|
|
||||||
version = "3.0.0-rc3";
|
|
||||||
hash = "sha256-4Z9Qv+vccrXWh2Fjdwdmjc1YgW+Dcx73ESkdAnHqxOY=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "fsharp-analyzers";
|
|
||||||
version = "0.27.0";
|
|
||||||
hash = "sha256-QhLi2veTY1wZlQKJLTyVPgx/ImkaZugQNjSN5VJCNEA=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "FSharp.Core";
|
|
||||||
version = "6.0.1";
|
|
||||||
hash = "sha256-Ehsgt3nCJijpaVuJguC1TPVEKSkJd6PSc07D2ZQSemI=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "FSharp.Core";
|
|
||||||
version = "8.0.400";
|
|
||||||
hash = "sha256-wlrcAjjvI5YtnHR7kFH8uRUA4GomJYmqr41K5LYjCGs=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "FsUnit";
|
|
||||||
version = "6.0.1";
|
|
||||||
hash = "sha256-vka/aAgWhDCl5tu+kgO7GtSaHOOvlSaWxG+tExwGXpI=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Microsoft.AspNetCore.App.Ref";
|
|
||||||
version = "6.0.33";
|
|
||||||
hash = "sha256-GcPiO+iI0JsHYlqURAmzWjOnDX2jDCUY4jYaIwr8ojs=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Microsoft.AspNetCore.App.Runtime.linux-arm64";
|
|
||||||
version = "6.0.33";
|
|
||||||
hash = "sha256-g5zbB1DnCSKuCOWtF09GEqGn1uJLdlTN6kqdnSCzRjQ=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Microsoft.AspNetCore.App.Runtime.linux-x64";
|
|
||||||
version = "6.0.33";
|
|
||||||
hash = "sha256-ToaiqVy5qonomAVBg5PO1GgrPKL4Cc1BZTJ0z/2LquA=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Microsoft.AspNetCore.App.Runtime.osx-arm64";
|
|
||||||
version = "6.0.33";
|
|
||||||
hash = "sha256-OY/vdqAzZ99I4lEZbOOQw12TE0AIb5pXxKTvDxO2M2Q=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Microsoft.AspNetCore.App.Runtime.osx-x64";
|
|
||||||
version = "6.0.33";
|
|
||||||
hash = "sha256-53MAV3RO1kXzy5IpdZDZIOhoUzFqWHn7+A3aWwdTONQ=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Microsoft.CodeCoverage";
|
|
||||||
version = "17.11.1";
|
|
||||||
hash = "sha256-1dLlK3NGh88PuFYZiYpT+izA96etxhU3BSgixDgdtGA=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Microsoft.NET.Test.Sdk";
|
|
||||||
version = "17.11.1";
|
|
||||||
hash = "sha256-0JUEucQ2lzaPgkrjm/NFLBTbqU1dfhvhN3Tl3moE6mI=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Microsoft.NETCore.App.Host.linux-arm64";
|
|
||||||
version = "6.0.33";
|
|
||||||
hash = "sha256-rwWOpf2Pdg84c8bKIUcMYuDTI0kXUELL/nl9psSmX+E=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Microsoft.NETCore.App.Host.linux-x64";
|
|
||||||
version = "6.0.33";
|
|
||||||
hash = "sha256-5iYNZATXOePDsLA9lI80o1Gjxw4E+B4bJbwdYJJHcZY=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Microsoft.NETCore.App.Host.osx-arm64";
|
|
||||||
version = "6.0.33";
|
|
||||||
hash = "sha256-k3LenomOlacyzq4FlBY/TwV7+ClbK4U0A/O9r0pZHT4=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Microsoft.NETCore.App.Host.osx-x64";
|
|
||||||
version = "6.0.33";
|
|
||||||
hash = "sha256-tu72AwDH1+oAIXjOJcNbeyKm1s4pncYp0avbMSBrcJQ=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Microsoft.NETCore.App.Ref";
|
|
||||||
version = "6.0.33";
|
|
||||||
hash = "sha256-BiGUcXo1FQTlZdR6ndhUQ8lrYG3KaGXNXRVF+Fc3L28=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Microsoft.NETCore.App.Runtime.linux-arm64";
|
|
||||||
version = "6.0.33";
|
|
||||||
hash = "sha256-obRKiJEVpZ5E3TE7q2oHaYwFYhI23rMiHwp+8ORkwXY=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Microsoft.NETCore.App.Runtime.linux-x64";
|
|
||||||
version = "6.0.33";
|
|
||||||
hash = "sha256-2xdhvnKsFc8utDWN09zeXzZ5op+WUqkoWLuzdtQAkrA=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Microsoft.NETCore.App.Runtime.osx-arm64";
|
|
||||||
version = "6.0.33";
|
|
||||||
hash = "sha256-9KHubWicibZOcixiByzuBKPnJM2u5DSQC9jR3MAR1bI=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Microsoft.NETCore.App.Runtime.osx-x64";
|
|
||||||
version = "6.0.33";
|
|
||||||
hash = "sha256-smh6SiTtCAuFglqWrXiGGsoIDP9dhGuIKdYjmw+xCyY=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Microsoft.NETCore.Platforms";
|
|
||||||
version = "1.1.1";
|
|
||||||
hash = "sha256-8hLiUKvy/YirCWlFwzdejD2Db3DaXhHxT7GSZx/znJg=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Microsoft.NETCore.Platforms";
|
|
||||||
version = "2.0.0";
|
|
||||||
hash = "sha256-IEvBk6wUXSdyCnkj6tHahOJv290tVVT8tyemYcR0Yro=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Microsoft.NETCore.Targets";
|
|
||||||
version = "1.1.3";
|
|
||||||
hash = "sha256-WLsf1NuUfRWyr7C7Rl9jiua9jximnVvzy6nk2D2bVRc=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Microsoft.TestPlatform.ObjectModel";
|
|
||||||
version = "17.11.1";
|
|
||||||
hash = "sha256-5vX+vCzFY3S7xfMVIv8OlMMFtdedW9UIJzc0WEc+vm4=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Microsoft.TestPlatform.TestHost";
|
|
||||||
version = "17.11.1";
|
|
||||||
hash = "sha256-wSkY0H1fQAq0H3LcKT4u7Y5RzhAAPa6yueVN84g8HxU=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Myriad.Core";
|
|
||||||
version = "0.8.3";
|
|
||||||
hash = "sha256-vBOxfq8QriX/yUtaXN69rEQaY/psRNJWxqATLidrt2g=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Myriad.Sdk";
|
|
||||||
version = "0.8.3";
|
|
||||||
hash = "sha256-7O397WKhskKOvE3MkJT37BvxorDWngDR6gTUogtDZ2M=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Nerdbank.GitVersioning";
|
|
||||||
version = "3.6.143";
|
|
||||||
hash = "sha256-OhOtMzP+2obDIR+npR7SsoXo0KrmcsL+VCE8Z3t5gzQ=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Newtonsoft.Json";
|
|
||||||
version = "13.0.1";
|
|
||||||
hash = "sha256-K2tSVW4n4beRPzPu3rlVaBEMdGvWSv/3Q1fxaDh4Mjo=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Newtonsoft.Json";
|
|
||||||
version = "13.0.3";
|
|
||||||
hash = "sha256-hy/BieY4qxBWVVsDqqOPaLy1QobiIapkbrESm6v2PHc=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "NuGet.Common";
|
|
||||||
version = "6.11.0";
|
|
||||||
hash = "sha256-eb7G07RyZv4AQT6ItRqdBuUf9e9BXcQygsy5RNEXfNE=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "NuGet.Configuration";
|
|
||||||
version = "6.11.0";
|
|
||||||
hash = "sha256-2SNZkX64SB15glzQx3k+vI7btr8Yqg4CayaaaK1B0AQ=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "NuGet.Frameworks";
|
|
||||||
version = "6.11.0";
|
|
||||||
hash = "sha256-8DC7V2IlCjiMDQ9yWbl7QQHia6OpBrbWh5rL0qa0Opw=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "NuGet.Packaging";
|
|
||||||
version = "6.11.0";
|
|
||||||
hash = "sha256-LVLvxcB6SMdayxAsrc5bCuLLt25fqPr6KfYcYoWWIQk=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "NuGet.Protocol";
|
|
||||||
version = "6.11.0";
|
|
||||||
hash = "sha256-3vdB/8IiJ2LMHhFXLWOzf0H59Ow/zcoq6W4uCHbihCQ=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "NuGet.Versioning";
|
|
||||||
version = "6.11.0";
|
|
||||||
hash = "sha256-03edgWvbqUtbzpBBTIxTwsSRoj1T2muGVL+vTuIHXag=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "NUnit";
|
|
||||||
version = "4.2.2";
|
|
||||||
hash = "sha256-+0OS67ITalmG9arYCgQF/+YbmPRnB3pIIykew0kvoCc=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "NUnit3TestAdapter";
|
|
||||||
version = "4.6.0";
|
|
||||||
hash = "sha256-9Yav2fYhC4w0OgsyUwU4/5rDy4FVDTpKnWHuwl/uKJQ=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "runtime.any.System.Runtime";
|
|
||||||
version = "4.3.0";
|
|
||||||
hash = "sha256-qwhNXBaJ1DtDkuRacgHwnZmOZ1u9q7N8j0cWOLYOELM=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "runtime.native.System";
|
|
||||||
version = "4.3.0";
|
|
||||||
hash = "sha256-ZBZaodnjvLXATWpXXakFgcy6P+gjhshFXmglrL5xD5Y=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "runtime.unix.System.Private.Uri";
|
|
||||||
version = "4.3.0";
|
|
||||||
hash = "sha256-c5tXWhE/fYbJVl9rXs0uHh3pTsg44YD1dJvyOA0WoMs=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "Spectre.Console";
|
|
||||||
version = "0.49.1";
|
|
||||||
hash = "sha256-tqSVojyuQjuB34lXo759NOcyLgNIw815mKXJPq5JFDo=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "System.Diagnostics.DiagnosticSource";
|
|
||||||
version = "7.0.0";
|
|
||||||
hash = "sha256-9Wk8cHSkjKtqkN6xW7KnXoQVtF/VNbKeBq79WqDesMs=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "System.Formats.Asn1";
|
|
||||||
version = "6.0.0";
|
|
||||||
hash = "sha256-KaMHgIRBF7Nf3VwOo+gJS1DcD+41cJDPWFh+TDQ8ee8=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "System.IO.Abstractions";
|
|
||||||
version = "4.2.13";
|
|
||||||
hash = "sha256-nkC/PiqE6+c1HJ2yTwg3x+qdBh844Z8n3ERWDW8k6Gg=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "System.IO.FileSystem.AccessControl";
|
|
||||||
version = "4.5.0";
|
|
||||||
hash = "sha256-ck44YBQ0M+2Im5dw0VjBgFD1s0XuY54cujrodjjSBL8=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "System.Memory";
|
|
||||||
version = "4.5.5";
|
|
||||||
hash = "sha256-EPQ9o1Kin7KzGI5O3U3PUQAZTItSbk9h/i4rViN3WiI=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "System.Private.Uri";
|
|
||||||
version = "4.3.0";
|
|
||||||
hash = "sha256-fVfgcoP4AVN1E5wHZbKBIOPYZ/xBeSIdsNF+bdukIRM=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "System.Reflection.Metadata";
|
|
||||||
version = "1.6.0";
|
|
||||||
hash = "sha256-JJfgaPav7UfEh4yRAQdGhLZF1brr0tUWPl6qmfNWq/E=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "System.Runtime";
|
|
||||||
version = "4.3.1";
|
|
||||||
hash = "sha256-R9T68AzS1PJJ7v6ARz9vo88pKL1dWqLOANg4pkQjkA0=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "System.Runtime.CompilerServices.Unsafe";
|
|
||||||
version = "6.0.0";
|
|
||||||
hash = "sha256-bEG1PnDp7uKYz/OgLOWs3RWwQSVYm+AnPwVmAmcgp2I=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "System.Security.AccessControl";
|
|
||||||
version = "4.5.0";
|
|
||||||
hash = "sha256-AFsKPb/nTk2/mqH/PYpaoI8PLsiKKimaXf+7Mb5VfPM=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "System.Security.Cryptography.Pkcs";
|
|
||||||
version = "6.0.4";
|
|
||||||
hash = "sha256-2e0aRybote+OR66bHaNiYpF//4fCiaO3zbR2e9GABUI=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "System.Security.Cryptography.ProtectedData";
|
|
||||||
version = "4.4.0";
|
|
||||||
hash = "sha256-Ri53QmFX8I8UH0x4PikQ1ZA07ZSnBUXStd5rBfGWFOE=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "System.Security.Principal.Windows";
|
|
||||||
version = "4.5.0";
|
|
||||||
hash = "sha256-BkUYNguz0e4NJp1kkW7aJBn3dyH9STwB5N8XqnlCsmY=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "System.Text.Encodings.Web";
|
|
||||||
version = "7.0.0";
|
|
||||||
hash = "sha256-tF8qt9GZh/nPy0mEnj6nKLG4Lldpoi/D8xM5lv2CoYQ=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "System.Text.Json";
|
|
||||||
version = "7.0.3";
|
|
||||||
hash = "sha256-aSJZ17MjqaZNQkprfxm/09LaCoFtpdWmqU9BTROzWX4=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "WoofWare.DotnetRuntimeLocator";
|
|
||||||
version = "0.1.9";
|
|
||||||
hash = "sha256-0v8JQgGjS3tseA28OFmYZUcinYRArjs28BwVy3oczJM=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "WoofWare.Myriad.Plugins";
|
|
||||||
version = "3.1.1";
|
|
||||||
hash = "sha256-kAQCi6zyFxPfDOIXn3dKg4M9wJYCpW7/Z8Ic7+yuFNg=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "WoofWare.Myriad.Plugins.Attributes";
|
|
||||||
version = "3.6.2";
|
|
||||||
hash = "sha256-Z8j9it7dC9i/SuKo133KZywBkzHL7JtAWFojA1jLpAc=";
|
|
||||||
})
|
|
||||||
(fetchNuGet {
|
|
||||||
pname = "WoofWare.PrattParser";
|
|
||||||
version = "0.2.2";
|
|
||||||
hash = "sha256-OCsHlp/HYB/i1+h0ixq+0zxO1bXFQ6kpEWIONkOr+TE=";
|
|
||||||
})
|
|
||||||
]
|
|
Reference in New Issue
Block a user