From ef7b7e4bb704084c9f4c221865f7a725f14d915c Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 4 Mar 2026 08:58:40 +0100 Subject: [PATCH 01/21] Migrate to new solution format --- Exercism.TestRunner.FSharp.sln | 16 ---------------- Exercism.TestRunner.FSharp.slnx | 3 +++ 2 files changed, 3 insertions(+), 16 deletions(-) delete mode 100644 Exercism.TestRunner.FSharp.sln create mode 100644 Exercism.TestRunner.FSharp.slnx diff --git a/Exercism.TestRunner.FSharp.sln b/Exercism.TestRunner.FSharp.sln deleted file mode 100644 index 83413c8..0000000 --- a/Exercism.TestRunner.FSharp.sln +++ /dev/null @@ -1,16 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Exercism.TestRunner.FSharp", "src\Exercism.TestRunner.FSharp\Exercism.TestRunner.FSharp.fsproj", "{716757E0-24F9-4228-8B0E-48010F51A370}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {716757E0-24F9-4228-8B0E-48010F51A370}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {716757E0-24F9-4228-8B0E-48010F51A370}.Debug|Any CPU.Build.0 = Debug|Any CPU - {716757E0-24F9-4228-8B0E-48010F51A370}.Release|Any CPU.ActiveCfg = Release|Any CPU - {716757E0-24F9-4228-8B0E-48010F51A370}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal diff --git a/Exercism.TestRunner.FSharp.slnx b/Exercism.TestRunner.FSharp.slnx new file mode 100644 index 0000000..a4055d4 --- /dev/null +++ b/Exercism.TestRunner.FSharp.slnx @@ -0,0 +1,3 @@ + + + From 7ac3b872d30ca7e4d470501964d2725e8202f52d Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 4 Mar 2026 09:05:29 +0100 Subject: [PATCH 02/21] Upgrade .NET 10 Docker image --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index a7902b6..e491828 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0 AS build +FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:10.0.103-alpine3.23 AS build ARG TARGETARCH WORKDIR /tmp @@ -37,7 +37,7 @@ COPY src/Exercism.TestRunner.FSharp/ ./ RUN dotnet publish -a $TARGETARCH -c Release -o /opt/test-runner --no-restore # Build runtime image -FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0 AS runtime +FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:10.0.103-alpine3.23 AS runtime ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false ENV DOTNET_ROLL_FORWARD=Major From dfb15cff463637ba33168b36ae2bfee1e9372a8f Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 4 Mar 2026 09:06:27 +0100 Subject: [PATCH 03/21] Use Ubuntu 24.04 runner --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ccc949d..235a66c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,7 +11,7 @@ on: jobs: build: name: Tests - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 steps: - name: Checkout code uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 From 020159b5b2f9870ec9933d3e2cdba756bd890f01 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 4 Mar 2026 09:08:56 +0100 Subject: [PATCH 04/21] Only support .NET 9 and .NET 10 --- Dockerfile | 5 +---- src/Exercism.TestRunner.FSharp/Rewrite.fs | 9 ++------- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/Dockerfile b/Dockerfile index e491828..7cc649f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,11 +18,8 @@ RUN dotnet add package FakeItEasy -v 6.2.1 RUN dotnet add package FsCheck -v 2.14.3 RUN dotnet add package FsCheck -v 2.16.3 RUN dotnet add package FsCheck.Xunit -v 2.14.3 -RUN dotnet add package FSharp.Core -v 6.0.1 -RUN dotnet add package FSharp.Core -v 7.0.400 -RUN dotnet add package FSharp.Core -v 8.0.101 -RUN dotnet add package FSharp.Core -v 8.0.403 RUN dotnet add package FSharp.Core -v 9.0.201 +RUN dotnet add package FSharp.Core -v 10.0.103 RUN dotnet add package FParsec -v 1.1.1 RUN dotnet add package FsToolkit.ErrorHandling -v 4.15.2 diff --git a/src/Exercism.TestRunner.FSharp/Rewrite.fs b/src/Exercism.TestRunner.FSharp/Rewrite.fs index e9e2510..82a5c88 100644 --- a/src/Exercism.TestRunner.FSharp/Rewrite.fs +++ b/src/Exercism.TestRunner.FSharp/Rewrite.fs @@ -70,13 +70,8 @@ let private enableAllTests parsedInput = let private rewriteProjectFile (context: TestRunContext) = let originalProjectFile = File.ReadAllText(context.ProjectFile) - let rewrittenProjectFile = - originalProjectFile - .Replace("net5.0", "net9.0") - .Replace("net6.0", "net9.0") - .Replace("net7.0", "net9.0") - .Replace("net8.0", "net9.0") - originalProjectFile, rewrittenProjectFile + let rewrittenProjectFile = originalProjectFile.Replace("net9.0", "net10.0") + originalProjectFile, rewrittenProjectFile let rewriteTests (context: TestRunContext) = match parseFile context.TestsFile with From 5b6cc254a5adc4c8284f00e95cc1e049a3acc708 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 4 Mar 2026 11:15:24 +0100 Subject: [PATCH 05/21] Upgrade projects to .NET 10, xUnit v3 and latest versions of packages --- Dockerfile | 5 +++++ .../Exercism.TestRunner.FSharp.fsproj | 2 +- .../AllTestsWithTask/AllTestsWithTask.fsproj | 14 ++++++------ tests/ClassBasedTests/ClassBasedTests.fsproj | 14 ++++++------ .../DifferentTestCodeFormats.fsproj | 14 ++++++------ .../DifferentTypesOfTests.fsproj | 14 ++++++------ .../DotnetEightProject.fsproj | 22 ------------------- .../DotnetEightProjectTests.fs | 15 ------------- tests/DotnetFiveProject/DotnetFiveProject.fs | 7 ------ .../DotnetFiveProject.fsproj | 22 ------------------- .../DotnetFiveProjectTests.fs | 15 ------------- tests/DotnetFiveProject/expected_results.json | 21 ------------------ .../DotnetNineProject.fs} | 2 +- .../DotnetNineProject.fsproj} | 16 +++++++------- .../DotnetNineProjectTests.fs} | 4 ++-- .../expected_results.json | 0 .../DotnetSevenProject/DotnetSevenProject.fs | 7 ------ .../DotnetSevenProject.fsproj | 22 ------------------- .../DotnetSevenProjectTests.fs | 15 ------------- .../DotnetSevenProject/expected_results.json | 21 ------------------ tests/DotnetSixProject/DotnetSixProject.fs | 7 ------ tests/DotnetSixProject/expected_results.json | 21 ------------------ .../MultipleCompileErrors.fsproj | 16 +++++++------- .../MultipleTestsWithAllPasses.fsproj | 14 ++++++------ .../MultipleTestsWithMultipleFails.fsproj | 14 ++++++------ .../MultipleTestsWithSingleFail.fsproj | 14 ++++++------ .../MultipleTestsWithTestOutput.fsproj | 14 ++++++------ ...leTestsWithTestOutputExceedingLimit.fsproj | 14 ++++++------ tests/NotImplemented/NotImplemented.fsproj | 14 ++++++------ .../QuotedAndNonQuotedTests.fsproj | 14 ++++++------ .../SingleCompileError.fsproj | 14 ++++++------ .../SingleTestThatFails.fsproj | 14 ++++++------ .../SingleTestThatPasses.fsproj | 14 ++++++------ .../SomeTestsWithTask.fsproj | 14 ++++++------ .../TestWithParentheses.fsproj | 14 ++++++------ .../UseCultureAttribute.fsproj | 12 +++++----- tests/Warnings/Warnings.fsproj | 14 ++++++------ 37 files changed, 150 insertions(+), 340 deletions(-) delete mode 100644 tests/DotnetEightProject/DotnetEightProject.fsproj delete mode 100644 tests/DotnetEightProject/DotnetEightProjectTests.fs delete mode 100644 tests/DotnetFiveProject/DotnetFiveProject.fs delete mode 100644 tests/DotnetFiveProject/DotnetFiveProject.fsproj delete mode 100644 tests/DotnetFiveProject/DotnetFiveProjectTests.fs delete mode 100644 tests/DotnetFiveProject/expected_results.json rename tests/{DotnetEightProject/DotnetEightProject.fs => DotnetNineProject/DotnetNineProject.fs} (71%) rename tests/{DotnetSixProject/DotnetSixProject.fsproj => DotnetNineProject/DotnetNineProject.fsproj} (51%) rename tests/{DotnetSixProject/DotnetSixProjectTests.fs => DotnetNineProject/DotnetNineProjectTests.fs} (87%) rename tests/{DotnetEightProject => DotnetNineProject}/expected_results.json (100%) delete mode 100644 tests/DotnetSevenProject/DotnetSevenProject.fs delete mode 100644 tests/DotnetSevenProject/DotnetSevenProject.fsproj delete mode 100644 tests/DotnetSevenProject/DotnetSevenProjectTests.fs delete mode 100644 tests/DotnetSevenProject/expected_results.json delete mode 100644 tests/DotnetSixProject/DotnetSixProject.fs delete mode 100644 tests/DotnetSixProject/expected_results.json diff --git a/Dockerfile b/Dockerfile index 7cc649f..0296654 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,18 +6,23 @@ WORKDIR /tmp # Pre-install packages for offline usage RUN dotnet new console RUN dotnet add package Microsoft.NET.Test.Sdk -v 16.8.3 +RUN dotnet add package Microsoft.NET.Test.Sdk -v 18.3.0 RUN dotnet add package xunit -v 2.4.1 +RUN dotnet add package xunit.v3 -v 3.2.2 RUN dotnet add package xunit.runner.visualstudio -v 2.4.3 +RUN dotnet add package xunit.runner.visualstudio -v 3.1.5 RUN dotnet add package FsUnit -v 4.0.4 RUN dotnet add package FsUnit.xUnit -v 4.0.4 RUN dotnet add package Exercism.Tests -v 0.1.0-alpha RUN dotnet add package Exercism.Tests -v 0.1.0-beta1 +RUN dotnet add package Exercism.Tests.xunit.v3 -v 0.1.0-beta1 RUN dotnet add package Aether -v 8.3.1 RUN dotnet add package BenchmarkDotNet -v 0.12.1 RUN dotnet add package FakeItEasy -v 6.2.1 RUN dotnet add package FsCheck -v 2.14.3 RUN dotnet add package FsCheck -v 2.16.3 RUN dotnet add package FsCheck.Xunit -v 2.14.3 +RUN dotnet add package FsCheck.Xunit -v 7.1.1 RUN dotnet add package FSharp.Core -v 9.0.201 RUN dotnet add package FSharp.Core -v 10.0.103 RUN dotnet add package FParsec -v 1.1.1 diff --git a/src/Exercism.TestRunner.FSharp/Exercism.TestRunner.FSharp.fsproj b/src/Exercism.TestRunner.FSharp/Exercism.TestRunner.FSharp.fsproj index 9533b48..6f5c601 100644 --- a/src/Exercism.TestRunner.FSharp/Exercism.TestRunner.FSharp.fsproj +++ b/src/Exercism.TestRunner.FSharp/Exercism.TestRunner.FSharp.fsproj @@ -2,7 +2,7 @@ Exe - net9.0 + net10.0 diff --git a/tests/AllTestsWithTask/AllTestsWithTask.fsproj b/tests/AllTestsWithTask/AllTestsWithTask.fsproj index 5f87bb1..d5154c6 100644 --- a/tests/AllTestsWithTask/AllTestsWithTask.fsproj +++ b/tests/AllTestsWithTask/AllTestsWithTask.fsproj @@ -1,8 +1,8 @@ - net9.0 - + net10.0 + false @@ -12,11 +12,11 @@ - - - - - + + + + + \ No newline at end of file diff --git a/tests/ClassBasedTests/ClassBasedTests.fsproj b/tests/ClassBasedTests/ClassBasedTests.fsproj index f7c6230..ad2831b 100644 --- a/tests/ClassBasedTests/ClassBasedTests.fsproj +++ b/tests/ClassBasedTests/ClassBasedTests.fsproj @@ -1,8 +1,8 @@ - net9.0 - + net10.0 + false @@ -12,11 +12,11 @@ - - - - - + + + + + \ No newline at end of file diff --git a/tests/DifferentTestCodeFormats/DifferentTestCodeFormats.fsproj b/tests/DifferentTestCodeFormats/DifferentTestCodeFormats.fsproj index 1cf3f4f..79ec77a 100644 --- a/tests/DifferentTestCodeFormats/DifferentTestCodeFormats.fsproj +++ b/tests/DifferentTestCodeFormats/DifferentTestCodeFormats.fsproj @@ -1,8 +1,8 @@ - net9.0 - + net10.0 + false @@ -12,11 +12,11 @@ - - - - - + + + + + \ No newline at end of file diff --git a/tests/DifferentTypesOfTests/DifferentTypesOfTests.fsproj b/tests/DifferentTypesOfTests/DifferentTypesOfTests.fsproj index a96d5ee..ed808eb 100644 --- a/tests/DifferentTypesOfTests/DifferentTypesOfTests.fsproj +++ b/tests/DifferentTypesOfTests/DifferentTypesOfTests.fsproj @@ -1,8 +1,8 @@ - net9.0 - + net10.0 + false @@ -12,13 +12,13 @@ - - - - + + + + - + \ No newline at end of file diff --git a/tests/DotnetEightProject/DotnetEightProject.fsproj b/tests/DotnetEightProject/DotnetEightProject.fsproj deleted file mode 100644 index 96beb26..0000000 --- a/tests/DotnetEightProject/DotnetEightProject.fsproj +++ /dev/null @@ -1,22 +0,0 @@ - - - - net8.0 - - false - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/DotnetEightProject/DotnetEightProjectTests.fs b/tests/DotnetEightProject/DotnetEightProjectTests.fs deleted file mode 100644 index fd93a7a..0000000 --- a/tests/DotnetEightProject/DotnetEightProjectTests.fs +++ /dev/null @@ -1,15 +0,0 @@ -module DotnetSixProjectTests - -open Xunit -open FsUnit.Xunit -open Exercism.Tests -open DotnetSixProject - -[] -let ``Add should add numbers`` () = add 1 1 |> should equal 2 - -[] -let ``Sub should subtract numbers`` () = sub 7 3 |> should equal 4 - -[] -let ``Mul should multiply numbers`` () = mul 2 3 |> should equal 6 diff --git a/tests/DotnetFiveProject/DotnetFiveProject.fs b/tests/DotnetFiveProject/DotnetFiveProject.fs deleted file mode 100644 index 308f987..0000000 --- a/tests/DotnetFiveProject/DotnetFiveProject.fs +++ /dev/null @@ -1,7 +0,0 @@ -module DotnetFiveProject - -let add x y = x + y - -let sub x y = x - y - -let mul x y = x * y diff --git a/tests/DotnetFiveProject/DotnetFiveProject.fsproj b/tests/DotnetFiveProject/DotnetFiveProject.fsproj deleted file mode 100644 index e274620..0000000 --- a/tests/DotnetFiveProject/DotnetFiveProject.fsproj +++ /dev/null @@ -1,22 +0,0 @@ - - - - net5.0 - - false - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/DotnetFiveProject/DotnetFiveProjectTests.fs b/tests/DotnetFiveProject/DotnetFiveProjectTests.fs deleted file mode 100644 index fc24612..0000000 --- a/tests/DotnetFiveProject/DotnetFiveProjectTests.fs +++ /dev/null @@ -1,15 +0,0 @@ -module DotnetFiveProjectTests - -open Xunit -open FsUnit.Xunit -open Exercism.Tests -open DotnetFiveProject - -[] -let ``Add should add numbers`` () = add 1 1 |> should equal 2 - -[] -let ``Sub should subtract numbers`` () = sub 7 3 |> should equal 4 - -[] -let ``Mul should multiply numbers`` () = mul 2 3 |> should equal 6 diff --git a/tests/DotnetFiveProject/expected_results.json b/tests/DotnetFiveProject/expected_results.json deleted file mode 100644 index ce56be2..0000000 --- a/tests/DotnetFiveProject/expected_results.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "version": 3, - "status": "pass", - "tests": [ - { - "name": "Add should add numbers", - "status": "pass", - "test_code": "add 1 1 |\u003E should equal 2" - }, - { - "name": "Sub should subtract numbers", - "status": "pass", - "test_code": "sub 7 3 |\u003E should equal 4" - }, - { - "name": "Mul should multiply numbers", - "status": "pass", - "test_code": "mul 2 3 |\u003E should equal 6" - } - ] -} \ No newline at end of file diff --git a/tests/DotnetEightProject/DotnetEightProject.fs b/tests/DotnetNineProject/DotnetNineProject.fs similarity index 71% rename from tests/DotnetEightProject/DotnetEightProject.fs rename to tests/DotnetNineProject/DotnetNineProject.fs index 863d2cc..ddcc186 100644 --- a/tests/DotnetEightProject/DotnetEightProject.fs +++ b/tests/DotnetNineProject/DotnetNineProject.fs @@ -1,4 +1,4 @@ -module DotnetSixProject +module DotnetNineProject let add x y = x + y diff --git a/tests/DotnetSixProject/DotnetSixProject.fsproj b/tests/DotnetNineProject/DotnetNineProject.fsproj similarity index 51% rename from tests/DotnetSixProject/DotnetSixProject.fsproj rename to tests/DotnetNineProject/DotnetNineProject.fsproj index 59ba860..ac51571 100644 --- a/tests/DotnetSixProject/DotnetSixProject.fsproj +++ b/tests/DotnetNineProject/DotnetNineProject.fsproj @@ -2,21 +2,21 @@ net6.0 - + false - - + + - - - - - + + + + + \ No newline at end of file diff --git a/tests/DotnetSixProject/DotnetSixProjectTests.fs b/tests/DotnetNineProject/DotnetNineProjectTests.fs similarity index 87% rename from tests/DotnetSixProject/DotnetSixProjectTests.fs rename to tests/DotnetNineProject/DotnetNineProjectTests.fs index fd93a7a..b66fdd3 100644 --- a/tests/DotnetSixProject/DotnetSixProjectTests.fs +++ b/tests/DotnetNineProject/DotnetNineProjectTests.fs @@ -1,9 +1,9 @@ -module DotnetSixProjectTests +module DotnetNineProjectTests open Xunit open FsUnit.Xunit open Exercism.Tests -open DotnetSixProject +open DotnetNineProject [] let ``Add should add numbers`` () = add 1 1 |> should equal 2 diff --git a/tests/DotnetEightProject/expected_results.json b/tests/DotnetNineProject/expected_results.json similarity index 100% rename from tests/DotnetEightProject/expected_results.json rename to tests/DotnetNineProject/expected_results.json diff --git a/tests/DotnetSevenProject/DotnetSevenProject.fs b/tests/DotnetSevenProject/DotnetSevenProject.fs deleted file mode 100644 index 863d2cc..0000000 --- a/tests/DotnetSevenProject/DotnetSevenProject.fs +++ /dev/null @@ -1,7 +0,0 @@ -module DotnetSixProject - -let add x y = x + y - -let sub x y = x - y - -let mul x y = x * y diff --git a/tests/DotnetSevenProject/DotnetSevenProject.fsproj b/tests/DotnetSevenProject/DotnetSevenProject.fsproj deleted file mode 100644 index 7ca81b5..0000000 --- a/tests/DotnetSevenProject/DotnetSevenProject.fsproj +++ /dev/null @@ -1,22 +0,0 @@ - - - - net7.0 - - false - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/DotnetSevenProject/DotnetSevenProjectTests.fs b/tests/DotnetSevenProject/DotnetSevenProjectTests.fs deleted file mode 100644 index fd93a7a..0000000 --- a/tests/DotnetSevenProject/DotnetSevenProjectTests.fs +++ /dev/null @@ -1,15 +0,0 @@ -module DotnetSixProjectTests - -open Xunit -open FsUnit.Xunit -open Exercism.Tests -open DotnetSixProject - -[] -let ``Add should add numbers`` () = add 1 1 |> should equal 2 - -[] -let ``Sub should subtract numbers`` () = sub 7 3 |> should equal 4 - -[] -let ``Mul should multiply numbers`` () = mul 2 3 |> should equal 6 diff --git a/tests/DotnetSevenProject/expected_results.json b/tests/DotnetSevenProject/expected_results.json deleted file mode 100644 index ce56be2..0000000 --- a/tests/DotnetSevenProject/expected_results.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "version": 3, - "status": "pass", - "tests": [ - { - "name": "Add should add numbers", - "status": "pass", - "test_code": "add 1 1 |\u003E should equal 2" - }, - { - "name": "Sub should subtract numbers", - "status": "pass", - "test_code": "sub 7 3 |\u003E should equal 4" - }, - { - "name": "Mul should multiply numbers", - "status": "pass", - "test_code": "mul 2 3 |\u003E should equal 6" - } - ] -} \ No newline at end of file diff --git a/tests/DotnetSixProject/DotnetSixProject.fs b/tests/DotnetSixProject/DotnetSixProject.fs deleted file mode 100644 index 863d2cc..0000000 --- a/tests/DotnetSixProject/DotnetSixProject.fs +++ /dev/null @@ -1,7 +0,0 @@ -module DotnetSixProject - -let add x y = x + y - -let sub x y = x - y - -let mul x y = x * y diff --git a/tests/DotnetSixProject/expected_results.json b/tests/DotnetSixProject/expected_results.json deleted file mode 100644 index ce56be2..0000000 --- a/tests/DotnetSixProject/expected_results.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "version": 3, - "status": "pass", - "tests": [ - { - "name": "Add should add numbers", - "status": "pass", - "test_code": "add 1 1 |\u003E should equal 2" - }, - { - "name": "Sub should subtract numbers", - "status": "pass", - "test_code": "sub 7 3 |\u003E should equal 4" - }, - { - "name": "Mul should multiply numbers", - "status": "pass", - "test_code": "mul 2 3 |\u003E should equal 6" - } - ] -} \ No newline at end of file diff --git a/tests/MultipleCompileErrors/MultipleCompileErrors.fsproj b/tests/MultipleCompileErrors/MultipleCompileErrors.fsproj index 9c2f466..48ea3df 100644 --- a/tests/MultipleCompileErrors/MultipleCompileErrors.fsproj +++ b/tests/MultipleCompileErrors/MultipleCompileErrors.fsproj @@ -1,22 +1,22 @@ - net9.0 - + net10.0 + false - + - - - - - + + + + + \ No newline at end of file diff --git a/tests/MultipleTestsWithAllPasses/MultipleTestsWithAllPasses.fsproj b/tests/MultipleTestsWithAllPasses/MultipleTestsWithAllPasses.fsproj index 7af907d..e1d02d6 100644 --- a/tests/MultipleTestsWithAllPasses/MultipleTestsWithAllPasses.fsproj +++ b/tests/MultipleTestsWithAllPasses/MultipleTestsWithAllPasses.fsproj @@ -1,8 +1,8 @@ - net9.0 - + net10.0 + false @@ -12,11 +12,11 @@ - - - - - + + + + + \ No newline at end of file diff --git a/tests/MultipleTestsWithMultipleFails/MultipleTestsWithMultipleFails.fsproj b/tests/MultipleTestsWithMultipleFails/MultipleTestsWithMultipleFails.fsproj index ea9cfc5..f059f5a 100644 --- a/tests/MultipleTestsWithMultipleFails/MultipleTestsWithMultipleFails.fsproj +++ b/tests/MultipleTestsWithMultipleFails/MultipleTestsWithMultipleFails.fsproj @@ -1,8 +1,8 @@ - net9.0 - + net10.0 + false @@ -12,11 +12,11 @@ - - - - - + + + + + \ No newline at end of file diff --git a/tests/MultipleTestsWithSingleFail/MultipleTestsWithSingleFail.fsproj b/tests/MultipleTestsWithSingleFail/MultipleTestsWithSingleFail.fsproj index 1f6471f..8cc5b02 100644 --- a/tests/MultipleTestsWithSingleFail/MultipleTestsWithSingleFail.fsproj +++ b/tests/MultipleTestsWithSingleFail/MultipleTestsWithSingleFail.fsproj @@ -1,8 +1,8 @@ - net9.0 - + net10.0 + false @@ -12,11 +12,11 @@ - - - - - + + + + + \ No newline at end of file diff --git a/tests/MultipleTestsWithTestOutput/MultipleTestsWithTestOutput.fsproj b/tests/MultipleTestsWithTestOutput/MultipleTestsWithTestOutput.fsproj index 59f854b..fb657d4 100644 --- a/tests/MultipleTestsWithTestOutput/MultipleTestsWithTestOutput.fsproj +++ b/tests/MultipleTestsWithTestOutput/MultipleTestsWithTestOutput.fsproj @@ -1,8 +1,8 @@ - net9.0 - + net10.0 + false @@ -12,11 +12,11 @@ - - - - - + + + + + \ No newline at end of file diff --git a/tests/MultipleTestsWithTestOutputExceedingLimit/MultipleTestsWithTestOutputExceedingLimit.fsproj b/tests/MultipleTestsWithTestOutputExceedingLimit/MultipleTestsWithTestOutputExceedingLimit.fsproj index 9fada42..01a01d8 100644 --- a/tests/MultipleTestsWithTestOutputExceedingLimit/MultipleTestsWithTestOutputExceedingLimit.fsproj +++ b/tests/MultipleTestsWithTestOutputExceedingLimit/MultipleTestsWithTestOutputExceedingLimit.fsproj @@ -1,8 +1,8 @@ - net9.0 - + net10.0 + false @@ -12,11 +12,11 @@ - - - - - + + + + + \ No newline at end of file diff --git a/tests/NotImplemented/NotImplemented.fsproj b/tests/NotImplemented/NotImplemented.fsproj index 6b5505f..868063d 100644 --- a/tests/NotImplemented/NotImplemented.fsproj +++ b/tests/NotImplemented/NotImplemented.fsproj @@ -1,8 +1,8 @@ - net9.0 - + net10.0 + false @@ -12,11 +12,11 @@ - - - - - + + + + + \ No newline at end of file diff --git a/tests/QuotedAndNonQuotedTests/QuotedAndNonQuotedTests.fsproj b/tests/QuotedAndNonQuotedTests/QuotedAndNonQuotedTests.fsproj index db57b83..6376f05 100644 --- a/tests/QuotedAndNonQuotedTests/QuotedAndNonQuotedTests.fsproj +++ b/tests/QuotedAndNonQuotedTests/QuotedAndNonQuotedTests.fsproj @@ -1,8 +1,8 @@ - net9.0 - + net10.0 + false @@ -12,11 +12,11 @@ - - - - - + + + + + \ No newline at end of file diff --git a/tests/SingleCompileError/SingleCompileError.fsproj b/tests/SingleCompileError/SingleCompileError.fsproj index cf8c5af..d27c42f 100644 --- a/tests/SingleCompileError/SingleCompileError.fsproj +++ b/tests/SingleCompileError/SingleCompileError.fsproj @@ -1,8 +1,8 @@ - net9.0 - + net10.0 + false @@ -12,11 +12,11 @@ - - - - - + + + + + \ No newline at end of file diff --git a/tests/SingleTestThatFails/SingleTestThatFails.fsproj b/tests/SingleTestThatFails/SingleTestThatFails.fsproj index 29f7c3e..9550f43 100644 --- a/tests/SingleTestThatFails/SingleTestThatFails.fsproj +++ b/tests/SingleTestThatFails/SingleTestThatFails.fsproj @@ -1,8 +1,8 @@ - net9.0 - + net10.0 + false @@ -12,11 +12,11 @@ - - - - - + + + + + \ No newline at end of file diff --git a/tests/SingleTestThatPasses/SingleTestThatPasses.fsproj b/tests/SingleTestThatPasses/SingleTestThatPasses.fsproj index 7492e2f..726c7fa 100644 --- a/tests/SingleTestThatPasses/SingleTestThatPasses.fsproj +++ b/tests/SingleTestThatPasses/SingleTestThatPasses.fsproj @@ -1,8 +1,8 @@ - net9.0 - + net10.0 + false @@ -12,11 +12,11 @@ - - - - - + + + + + \ No newline at end of file diff --git a/tests/SomeTestsWithTask/SomeTestsWithTask.fsproj b/tests/SomeTestsWithTask/SomeTestsWithTask.fsproj index d90d798..d9ba162 100644 --- a/tests/SomeTestsWithTask/SomeTestsWithTask.fsproj +++ b/tests/SomeTestsWithTask/SomeTestsWithTask.fsproj @@ -1,8 +1,8 @@ - net9.0 - + net10.0 + false @@ -12,11 +12,11 @@ - - - - - + + + + + \ No newline at end of file diff --git a/tests/TestWithParentheses/TestWithParentheses.fsproj b/tests/TestWithParentheses/TestWithParentheses.fsproj index 6968057..9666d55 100644 --- a/tests/TestWithParentheses/TestWithParentheses.fsproj +++ b/tests/TestWithParentheses/TestWithParentheses.fsproj @@ -1,8 +1,8 @@ - net9.0 - + net10.0 + false @@ -12,11 +12,11 @@ - - - - - + + + + + \ No newline at end of file diff --git a/tests/UseCultureAttribute/UseCultureAttribute.fsproj b/tests/UseCultureAttribute/UseCultureAttribute.fsproj index c67cdc0..5200168 100644 --- a/tests/UseCultureAttribute/UseCultureAttribute.fsproj +++ b/tests/UseCultureAttribute/UseCultureAttribute.fsproj @@ -1,8 +1,8 @@ - net9.0 - + net10.0 + false @@ -12,10 +12,10 @@ - - - - + + + + diff --git a/tests/Warnings/Warnings.fsproj b/tests/Warnings/Warnings.fsproj index 82b88d3..493b593 100644 --- a/tests/Warnings/Warnings.fsproj +++ b/tests/Warnings/Warnings.fsproj @@ -1,8 +1,8 @@ - net9.0 - + net10.0 + false @@ -12,11 +12,11 @@ - - - - - + + + + + \ No newline at end of file From 2261670b7074d4c61bff5ce67d928768fc741c08 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 4 Mar 2026 11:24:05 +0100 Subject: [PATCH 06/21] Use long-form argument --- Dockerfile | 45 +++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/Dockerfile b/Dockerfile index 0296654..ff883ee 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,28 +5,29 @@ WORKDIR /tmp # Pre-install packages for offline usage RUN dotnet new console -RUN dotnet add package Microsoft.NET.Test.Sdk -v 16.8.3 -RUN dotnet add package Microsoft.NET.Test.Sdk -v 18.3.0 -RUN dotnet add package xunit -v 2.4.1 -RUN dotnet add package xunit.v3 -v 3.2.2 -RUN dotnet add package xunit.runner.visualstudio -v 2.4.3 -RUN dotnet add package xunit.runner.visualstudio -v 3.1.5 -RUN dotnet add package FsUnit -v 4.0.4 -RUN dotnet add package FsUnit.xUnit -v 4.0.4 -RUN dotnet add package Exercism.Tests -v 0.1.0-alpha -RUN dotnet add package Exercism.Tests -v 0.1.0-beta1 -RUN dotnet add package Exercism.Tests.xunit.v3 -v 0.1.0-beta1 -RUN dotnet add package Aether -v 8.3.1 -RUN dotnet add package BenchmarkDotNet -v 0.12.1 -RUN dotnet add package FakeItEasy -v 6.2.1 -RUN dotnet add package FsCheck -v 2.14.3 -RUN dotnet add package FsCheck -v 2.16.3 -RUN dotnet add package FsCheck.Xunit -v 2.14.3 -RUN dotnet add package FsCheck.Xunit -v 7.1.1 -RUN dotnet add package FSharp.Core -v 9.0.201 -RUN dotnet add package FSharp.Core -v 10.0.103 -RUN dotnet add package FParsec -v 1.1.1 -RUN dotnet add package FsToolkit.ErrorHandling -v 4.15.2 +RUN dotnet add package Microsoft.NET.Test.Sdk --version 16.8.3 +RUN dotnet add package Microsoft.NET.Test.Sdk --version 18.3.0 +RUN dotnet add package xunit --version 2.4.1 +RUN dotnet add package xunit.v3 --version 3.2.2 +RUN dotnet add package xunit.runner.visualstudio --version 2.4.3 +RUN dotnet add package xunit.runner.visualstudio --version 3.1.5 +RUN dotnet add package FsUnit --version 4.0.4 +RUN dotnet add package FsUnit.xUnit --version 4.0.4 +RUN dotnet add package FsUnit.xUnit --version 7.1.1 +RUN dotnet add package Exercism.Tests --version 0.1.0-alpha +RUN dotnet add package Exercism.Tests --version 0.1.0-beta1 +RUN dotnet add package Exercism.Tests.xunit.v3 --version 0.1.0-beta1 +RUN dotnet add package Aether --version 8.3.1 +RUN dotnet add package BenchmarkDotNet --version 0.12.1 +RUN dotnet add package FakeItEasy --version 6.2.1 +RUN dotnet add package FsCheck --version 2.14.3 +RUN dotnet add package FsCheck --version 2.16.3 +RUN dotnet add package FsCheck.Xunit --version 2.14.3 +RUN dotnet add package FsCheck.Xunit.v3 --version 3.3.2 +RUN dotnet add package FSharp.Core --version 9.0.201 +RUN dotnet add package FSharp.Core --version 10.0.103 +RUN dotnet add package FParsec --version 1.1.1 +RUN dotnet add package FsToolkit.ErrorHandling --version 4.15.2 WORKDIR /app From af6fcddcc33cd4c77a466131dcd2f033f703a732 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 4 Mar 2026 11:25:14 +0100 Subject: [PATCH 07/21] Update README instructions to point to correct binary --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b7f6fe2..98694b1 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ This repository contains the F# test runner, which implements the [test runner i To run a solution's tests, follow these steps: 1. Open a command prompt in the root directory. -1. Run `./run.ps1 `. This script will: +1. Run `./bin/run.sh `. This script will: 1. Make sure all tests run (no skipped tests) for the solution found in ``. 1. Run all the tests. 1. Once the script has completed, the test results will be written to `/results.json`. @@ -19,7 +19,7 @@ To run a solution's tests, follow these steps: To run a solution's tests using a Docker container, follow these steps: 1. Open a command prompt in the root directory. -1. Run `./run-in-docker.ps1 `. This script will: +1. Run `./bin/run-in-docker.sh `. This script will: 1. Make sure all tests run (no skipped tests) for the solution found in ``. 1. Run all the tests. 1. Once the script has completed, the test results will be written to `/results.json`. From 798842e64c0a13cfb9d37f95e53dd1cc4c89d561 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 4 Mar 2026 11:30:15 +0100 Subject: [PATCH 08/21] Upgrade test runner packages --- .../Exercism.TestRunner.FSharp.fsproj | 8 ++++---- src/Exercism.TestRunner.FSharp/Visitor.fs | 10 ++++++++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/Exercism.TestRunner.FSharp/Exercism.TestRunner.FSharp.fsproj b/src/Exercism.TestRunner.FSharp/Exercism.TestRunner.FSharp.fsproj index 6f5c601..2c17e5f 100644 --- a/src/Exercism.TestRunner.FSharp/Exercism.TestRunner.FSharp.fsproj +++ b/src/Exercism.TestRunner.FSharp/Exercism.TestRunner.FSharp.fsproj @@ -20,10 +20,10 @@ - - - - + + + + diff --git a/src/Exercism.TestRunner.FSharp/Visitor.fs b/src/Exercism.TestRunner.FSharp/Visitor.fs index ec61a7c..d8eae33 100644 --- a/src/Exercism.TestRunner.FSharp/Visitor.fs +++ b/src/Exercism.TestRunner.FSharp/Visitor.fs @@ -348,7 +348,7 @@ type SyntaxVisitor() = | SynMemberDefn.AutoProperty(attrs, isStatic, ident, typeOpt, propKind, flags, flagsForSet, doc, access, synExpr, range, trivia) -> SynMemberDefn.AutoProperty (attrs |> List.map this.VisitSynAttributeList, isStatic, this.VisitIdent ident, - Option.map this.VisitSynType typeOpt, propKind, flags, flagsForSet, this.VisitPreXmlDoc(doc), Option.map this.VisitSynAccess access, + Option.map this.VisitSynType typeOpt, propKind, flags, flagsForSet, this.VisitPreXmlDoc(doc), this.VisitSynValSigAccess access, this.VisitSynExpr synExpr, range, trivia) abstract VisitSynSimplePat: SynSimplePat -> SynSimplePat @@ -395,7 +395,7 @@ type SyntaxVisitor() = SynValSig (attrs |> List.map this.VisitSynAttributeList, this.VisitSynIdent ident, this.VisitSynValTyparDecls explicitValDecls, this.VisitSynType synType, this.VisitSynValInfo arity, - isInline, isMutable, this.VisitPreXmlDoc(doc), Option.map this.VisitSynAccess access, Option.map this.VisitSynExpr expr, + isInline, isMutable, this.VisitPreXmlDoc(doc), this.VisitSynValSigAccess access, Option.map this.VisitSynExpr expr, range, trivia) abstract VisitSynValTyparDecls: SynValTyparDecls -> SynValTyparDecls @@ -632,6 +632,8 @@ type SyntaxVisitor() = SynType.SignatureParameter(List.map this.VisitSynAttributeList synAttributeLists, optional, Option.map this.VisitIdent identOption, this.VisitSynType usedType, range) | SynType.FromParseError range -> SynType.FromParseError range | SynType.Intersection(typar, types, range, trivia) -> SynType.Intersection(Option.map this.VisitSynTypar typar, types |> List.map this.VisitSynType, range, trivia) + | SynType.StaticConstantNull range -> SynType.StaticConstantNull range + | SynType.WithNull(innerType, ambivalent, range, trivia) -> SynType.WithNull(this.VisitSynType(innerType), ambivalent, range, trivia) abstract VisitSynTypeOrTrivia: SynTypeOrTrivia -> SynTypeOrTrivia default this.VisitSynTypeOrTrivia(synTypeOrTrivia: SynTypeOrTrivia): SynTypeOrTrivia = synTypeOrTrivia @@ -664,6 +666,10 @@ type SyntaxVisitor() = abstract VisitSynAccess: SynAccess -> SynAccess default this.VisitSynAccess(a: SynAccess): SynAccess = a + + abstract VisitSynValSigAccess: SynValSigAccess -> SynValSigAccess + + default this.VisitSynValSigAccess(a: SynValSigAccess): SynValSigAccess = a abstract VisitSynBindingKind: SynBindingKind -> SynBindingKind From 53e92309698e5b3b0a9847b025d0b1785598473e Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 4 Mar 2026 11:34:52 +0100 Subject: [PATCH 09/21] Update test command --- src/Exercism.TestRunner.FSharp/Testing.fs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Exercism.TestRunner.FSharp/Testing.fs b/src/Exercism.TestRunner.FSharp/Testing.fs index 91bc35a..9aae487 100644 --- a/src/Exercism.TestRunner.FSharp/Testing.fs +++ b/src/Exercism.TestRunner.FSharp/Testing.fs @@ -258,7 +258,7 @@ module DotnetCli = let solutionDir = Path.GetDirectoryName(context.TestsFile) Process.exec "dotnet" "restore --source /root/.nuget/packages/" solutionDir - Process.exec "dotnet" $"test --no-restore --verbosity=quiet --logger \"trx;LogFileName=%s{Path.GetFileName(context.TestResultsFile)}\" /flp:verbosity=quiet;errorsOnly=true" solutionDir + Process.exec "dotnet" $"test -c release --no-restore --verbosity=quiet --logger \"trx;LogFileName={Path.GetFileName(context.TestResultsFile)}\" /flp:verbosity=quiet;errorsOnly=true" solutionDir let buildErrors = parseBuildErrors context From ea139a7373780a6ee30c2913b844ea0a4945b9cf Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Sat, 7 Mar 2026 08:57:31 +0100 Subject: [PATCH 10/21] Add RootNamespace to .NET 10 projects --- tests/AllTestsWithTask/AllTestsWithTask.fsproj | 2 +- tests/ClassBasedTests/ClassBasedTests.fsproj | 2 +- tests/DifferentTestCodeFormats/DifferentTestCodeFormats.fsproj | 2 +- tests/DifferentTypesOfTests/DifferentTypesOfTests.fsproj | 2 +- tests/DotnetNineProject/DotnetNineProject.fsproj | 3 +-- tests/MultipleCompileErrors/MultipleCompileErrors.fsproj | 2 +- .../MultipleTestsWithAllPasses.fsproj | 2 +- .../MultipleTestsWithMultipleFails.fsproj | 2 +- .../MultipleTestsWithSingleFail.fsproj | 2 +- .../MultipleTestsWithTestOutput.fsproj | 2 +- .../MultipleTestsWithTestOutputExceedingLimit.fsproj | 2 +- tests/NotImplemented/NotImplemented.fsproj | 2 +- tests/QuotedAndNonQuotedTests/QuotedAndNonQuotedTests.fsproj | 2 +- tests/SingleCompileError/SingleCompileError.fsproj | 2 +- tests/SingleTestThatFails/SingleTestThatFails.fsproj | 2 +- tests/SingleTestThatPasses/SingleTestThatPasses.fsproj | 2 +- tests/SomeTestsWithTask/SomeTestsWithTask.fsproj | 2 +- tests/TestWithParentheses/TestWithParentheses.fsproj | 2 +- tests/UseCultureAttribute/UseCultureAttribute.fsproj | 2 +- tests/Warnings/Warnings.fsproj | 2 +- 20 files changed, 20 insertions(+), 21 deletions(-) diff --git a/tests/AllTestsWithTask/AllTestsWithTask.fsproj b/tests/AllTestsWithTask/AllTestsWithTask.fsproj index d5154c6..5a25be9 100644 --- a/tests/AllTestsWithTask/AllTestsWithTask.fsproj +++ b/tests/AllTestsWithTask/AllTestsWithTask.fsproj @@ -2,7 +2,7 @@ net10.0 - + Exercism false diff --git a/tests/ClassBasedTests/ClassBasedTests.fsproj b/tests/ClassBasedTests/ClassBasedTests.fsproj index ad2831b..6523bdc 100644 --- a/tests/ClassBasedTests/ClassBasedTests.fsproj +++ b/tests/ClassBasedTests/ClassBasedTests.fsproj @@ -2,7 +2,7 @@ net10.0 - + Exercism false diff --git a/tests/DifferentTestCodeFormats/DifferentTestCodeFormats.fsproj b/tests/DifferentTestCodeFormats/DifferentTestCodeFormats.fsproj index 79ec77a..cab3aa3 100644 --- a/tests/DifferentTestCodeFormats/DifferentTestCodeFormats.fsproj +++ b/tests/DifferentTestCodeFormats/DifferentTestCodeFormats.fsproj @@ -2,7 +2,7 @@ net10.0 - + Exercism false diff --git a/tests/DifferentTypesOfTests/DifferentTypesOfTests.fsproj b/tests/DifferentTypesOfTests/DifferentTypesOfTests.fsproj index ed808eb..aefea06 100644 --- a/tests/DifferentTypesOfTests/DifferentTypesOfTests.fsproj +++ b/tests/DifferentTypesOfTests/DifferentTypesOfTests.fsproj @@ -2,7 +2,7 @@ net10.0 - + Exercism false diff --git a/tests/DotnetNineProject/DotnetNineProject.fsproj b/tests/DotnetNineProject/DotnetNineProject.fsproj index ac51571..b7911f1 100644 --- a/tests/DotnetNineProject/DotnetNineProject.fsproj +++ b/tests/DotnetNineProject/DotnetNineProject.fsproj @@ -1,8 +1,7 @@ - net6.0 - + net9.0 false diff --git a/tests/MultipleCompileErrors/MultipleCompileErrors.fsproj b/tests/MultipleCompileErrors/MultipleCompileErrors.fsproj index 48ea3df..b8381b4 100644 --- a/tests/MultipleCompileErrors/MultipleCompileErrors.fsproj +++ b/tests/MultipleCompileErrors/MultipleCompileErrors.fsproj @@ -2,7 +2,7 @@ net10.0 - + Exercism false diff --git a/tests/MultipleTestsWithAllPasses/MultipleTestsWithAllPasses.fsproj b/tests/MultipleTestsWithAllPasses/MultipleTestsWithAllPasses.fsproj index e1d02d6..ba8e6f0 100644 --- a/tests/MultipleTestsWithAllPasses/MultipleTestsWithAllPasses.fsproj +++ b/tests/MultipleTestsWithAllPasses/MultipleTestsWithAllPasses.fsproj @@ -2,7 +2,7 @@ net10.0 - + Exercism false diff --git a/tests/MultipleTestsWithMultipleFails/MultipleTestsWithMultipleFails.fsproj b/tests/MultipleTestsWithMultipleFails/MultipleTestsWithMultipleFails.fsproj index f059f5a..0296c5d 100644 --- a/tests/MultipleTestsWithMultipleFails/MultipleTestsWithMultipleFails.fsproj +++ b/tests/MultipleTestsWithMultipleFails/MultipleTestsWithMultipleFails.fsproj @@ -2,7 +2,7 @@ net10.0 - + Exercism false diff --git a/tests/MultipleTestsWithSingleFail/MultipleTestsWithSingleFail.fsproj b/tests/MultipleTestsWithSingleFail/MultipleTestsWithSingleFail.fsproj index 8cc5b02..a0652d5 100644 --- a/tests/MultipleTestsWithSingleFail/MultipleTestsWithSingleFail.fsproj +++ b/tests/MultipleTestsWithSingleFail/MultipleTestsWithSingleFail.fsproj @@ -2,7 +2,7 @@ net10.0 - + Exercism false diff --git a/tests/MultipleTestsWithTestOutput/MultipleTestsWithTestOutput.fsproj b/tests/MultipleTestsWithTestOutput/MultipleTestsWithTestOutput.fsproj index fb657d4..f5fedd7 100644 --- a/tests/MultipleTestsWithTestOutput/MultipleTestsWithTestOutput.fsproj +++ b/tests/MultipleTestsWithTestOutput/MultipleTestsWithTestOutput.fsproj @@ -2,7 +2,7 @@ net10.0 - + Exercism false diff --git a/tests/MultipleTestsWithTestOutputExceedingLimit/MultipleTestsWithTestOutputExceedingLimit.fsproj b/tests/MultipleTestsWithTestOutputExceedingLimit/MultipleTestsWithTestOutputExceedingLimit.fsproj index 01a01d8..6567efe 100644 --- a/tests/MultipleTestsWithTestOutputExceedingLimit/MultipleTestsWithTestOutputExceedingLimit.fsproj +++ b/tests/MultipleTestsWithTestOutputExceedingLimit/MultipleTestsWithTestOutputExceedingLimit.fsproj @@ -2,7 +2,7 @@ net10.0 - + Exercism false diff --git a/tests/NotImplemented/NotImplemented.fsproj b/tests/NotImplemented/NotImplemented.fsproj index 868063d..5f4036e 100644 --- a/tests/NotImplemented/NotImplemented.fsproj +++ b/tests/NotImplemented/NotImplemented.fsproj @@ -2,7 +2,7 @@ net10.0 - + Exercism false diff --git a/tests/QuotedAndNonQuotedTests/QuotedAndNonQuotedTests.fsproj b/tests/QuotedAndNonQuotedTests/QuotedAndNonQuotedTests.fsproj index 6376f05..4748772 100644 --- a/tests/QuotedAndNonQuotedTests/QuotedAndNonQuotedTests.fsproj +++ b/tests/QuotedAndNonQuotedTests/QuotedAndNonQuotedTests.fsproj @@ -2,7 +2,7 @@ net10.0 - + Exercism false diff --git a/tests/SingleCompileError/SingleCompileError.fsproj b/tests/SingleCompileError/SingleCompileError.fsproj index d27c42f..6ecb649 100644 --- a/tests/SingleCompileError/SingleCompileError.fsproj +++ b/tests/SingleCompileError/SingleCompileError.fsproj @@ -2,7 +2,7 @@ net10.0 - + Exercism false diff --git a/tests/SingleTestThatFails/SingleTestThatFails.fsproj b/tests/SingleTestThatFails/SingleTestThatFails.fsproj index 9550f43..fe2819f 100644 --- a/tests/SingleTestThatFails/SingleTestThatFails.fsproj +++ b/tests/SingleTestThatFails/SingleTestThatFails.fsproj @@ -2,7 +2,7 @@ net10.0 - + Exercism false diff --git a/tests/SingleTestThatPasses/SingleTestThatPasses.fsproj b/tests/SingleTestThatPasses/SingleTestThatPasses.fsproj index 726c7fa..210462e 100644 --- a/tests/SingleTestThatPasses/SingleTestThatPasses.fsproj +++ b/tests/SingleTestThatPasses/SingleTestThatPasses.fsproj @@ -2,7 +2,7 @@ net10.0 - + Exercism false diff --git a/tests/SomeTestsWithTask/SomeTestsWithTask.fsproj b/tests/SomeTestsWithTask/SomeTestsWithTask.fsproj index d9ba162..a3e7e86 100644 --- a/tests/SomeTestsWithTask/SomeTestsWithTask.fsproj +++ b/tests/SomeTestsWithTask/SomeTestsWithTask.fsproj @@ -2,7 +2,7 @@ net10.0 - + Exercism false diff --git a/tests/TestWithParentheses/TestWithParentheses.fsproj b/tests/TestWithParentheses/TestWithParentheses.fsproj index 9666d55..b6ef92d 100644 --- a/tests/TestWithParentheses/TestWithParentheses.fsproj +++ b/tests/TestWithParentheses/TestWithParentheses.fsproj @@ -2,7 +2,7 @@ net10.0 - + Exercism false diff --git a/tests/UseCultureAttribute/UseCultureAttribute.fsproj b/tests/UseCultureAttribute/UseCultureAttribute.fsproj index 5200168..fc029b7 100644 --- a/tests/UseCultureAttribute/UseCultureAttribute.fsproj +++ b/tests/UseCultureAttribute/UseCultureAttribute.fsproj @@ -2,7 +2,7 @@ net10.0 - + Exercism false diff --git a/tests/Warnings/Warnings.fsproj b/tests/Warnings/Warnings.fsproj index 493b593..6862549 100644 --- a/tests/Warnings/Warnings.fsproj +++ b/tests/Warnings/Warnings.fsproj @@ -2,7 +2,7 @@ net10.0 - + Exercism false From d10e259131c497bf8242b96e834c74b8dd4870ec Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Sat, 7 Mar 2026 11:08:35 +0100 Subject: [PATCH 11/21] Minor docker context tweaks --- .dockerignore | 16 ++++------------ Dockerfile | 2 +- bin/run-tests-in-docker.sh | 1 + 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/.dockerignore b/.dockerignore index d57c652..4d0ec75 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,13 +1,5 @@ * -!bin/run.sh -!bin/run-tests.sh -!src/Exercism.TestRunner.FSharp -src/Exercism.TestRunner.FSharp/bin -src/Exercism.TestRunner.FSharp/obj -.appends -.git -.github -.gitignore -.gitattributes -.dockerignore -Dockerfile +!/bin/run.sh +!/src/Exercism.TestRunner.FSharp +/src/Exercism.TestRunner.FSharp/bin +/src/Exercism.TestRunner.FSharp/obj diff --git a/Dockerfile b/Dockerfile index ff883ee..a165c1b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -51,6 +51,6 @@ WORKDIR /opt/test-runner COPY --from=build /root/.nuget/packages/ /root/.nuget/packages/ COPY --from=build /opt/test-runner/ . -COPY bin/ bin/ +COPY bin/run.sh bin/run.sh ENTRYPOINT ["sh", "/opt/test-runner/bin/run.sh"] diff --git a/bin/run-tests-in-docker.sh b/bin/run-tests-in-docker.sh index e050472..0acfdc2 100755 --- a/bin/run-tests-in-docker.sh +++ b/bin/run-tests-in-docker.sh @@ -22,6 +22,7 @@ docker run \ --network none \ --read-only \ --mount type=bind,src="${PWD}/tests",dst=/opt/test-runner/tests \ + --mount type=bind,src="${PWD}/bin/run-tests.sh",dst=/opt/test-runner/bin/run-tests.sh \ --mount type=tmpfs,dst=/tmp \ --workdir /opt/test-runner \ --entrypoint /opt/test-runner/bin/run-tests.sh \ From 9288cfe8ab972964a971f3cb1f0070ec7f47b6f6 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Sat, 7 Mar 2026 11:17:04 +0100 Subject: [PATCH 12/21] Update golden tests to new output format --- tests/MultipleTestsWithMultipleFails/expected_results.json | 4 ++-- tests/MultipleTestsWithSingleFail/expected_results.json | 2 +- tests/MultipleTestsWithTestOutput/expected_results.json | 2 +- tests/SingleTestThatFails/expected_results.json | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/MultipleTestsWithMultipleFails/expected_results.json b/tests/MultipleTestsWithMultipleFails/expected_results.json index 9c5e6a3..145096b 100644 --- a/tests/MultipleTestsWithMultipleFails/expected_results.json +++ b/tests/MultipleTestsWithMultipleFails/expected_results.json @@ -5,7 +5,7 @@ { "name": "Add should add numbers", "status": "fail", - "message": "Expected: Equals 3\nActual: 2", + "message": "Assert.Equal() Failure: Values differ\nExpected: \u0022Equals 3\u0022\nActual: \u00222\u0022", "test_code": "add 1 1 |\u003E should equal 3" }, { @@ -16,7 +16,7 @@ { "name": "Mul should multiply numbers", "status": "fail", - "message": "Expected: Equals 7\nActual: 6", + "message": "Assert.Equal() Failure: Values differ\nExpected: \u0022Equals 7\u0022\nActual: \u00226\u0022", "test_code": "mul 2 3 |\u003E should equal 7" } ] diff --git a/tests/MultipleTestsWithSingleFail/expected_results.json b/tests/MultipleTestsWithSingleFail/expected_results.json index 1fc82fb..081057f 100644 --- a/tests/MultipleTestsWithSingleFail/expected_results.json +++ b/tests/MultipleTestsWithSingleFail/expected_results.json @@ -15,7 +15,7 @@ { "name": "Mul should multiply numbers", "status": "fail", - "message": "Expected: Equals 5\nActual: 6", + "message": "Assert.Equal() Failure: Values differ\nExpected: \u0022Equals 5\u0022\nActual: \u00226\u0022", "test_code": "mul 2 3 |\u003E should equal 5" } ] diff --git a/tests/MultipleTestsWithTestOutput/expected_results.json b/tests/MultipleTestsWithTestOutput/expected_results.json index 0a7dbb3..95d7a87 100644 --- a/tests/MultipleTestsWithTestOutput/expected_results.json +++ b/tests/MultipleTestsWithTestOutput/expected_results.json @@ -10,7 +10,7 @@ { "name": "Sub should subtract numbers", "status": "fail", - "message": "Expected: Equals 4\nActual: 22", + "message": "Assert.Equal() Failure: Values differ\nExpected: \u0022Equals 4\u0022\nActual: \u002222\u0022", "test_code": "sub 7 3 |\u003E should equal 4" }, { diff --git a/tests/SingleTestThatFails/expected_results.json b/tests/SingleTestThatFails/expected_results.json index 86e1338..fa7b590 100644 --- a/tests/SingleTestThatFails/expected_results.json +++ b/tests/SingleTestThatFails/expected_results.json @@ -5,7 +5,7 @@ { "name": "Add should add numbers", "status": "fail", - "message": "Expected: Equals 3\nActual: 2", + "message": "Assert.Equal() Failure: Values differ\nExpected: \u0022Equals 3\u0022\nActual: \u00222\u0022", "test_code": "add 1 1 |\u003E should equal 3" } ] From 34d5c820fe08f1e111f99fd50f159f8432fcf6ba Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Sat, 7 Mar 2026 11:17:17 +0100 Subject: [PATCH 13/21] Add script to update golden tests --- bin/update-golden-tests.sh | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100755 bin/update-golden-tests.sh diff --git a/bin/update-golden-tests.sh b/bin/update-golden-tests.sh new file mode 100755 index 0000000..4e61031 --- /dev/null +++ b/bin/update-golden-tests.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env sh + +# Synopsis: +# Update the golden tests. + +# Example: +# ./bin/update-golden-tests.sh + +# Generate the up-to-date results.json +./bin/run-tests-in-docker.sh + +# Overwrite the existing files +find tests -name results.json -execdir cp results.json expected_results.json \; From b38c76599b098b4523967702eaa8102f7497ae89 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Sat, 7 Mar 2026 11:17:26 +0100 Subject: [PATCH 14/21] No longer use read-only filesystem --- bin/run-in-docker.sh | 1 - bin/run-tests-in-docker.sh | 1 - 2 files changed, 2 deletions(-) diff --git a/bin/run-in-docker.sh b/bin/run-in-docker.sh index a9f10be..6ec9bbd 100755 --- a/bin/run-in-docker.sh +++ b/bin/run-in-docker.sh @@ -37,7 +37,6 @@ docker build --rm -t exercism/fsharp-test-runner . docker run \ --rm \ --network none \ - --read-only \ --mount type=bind,src="${solution_dir}",dst=/solution \ --mount type=bind,src="${output_dir}",dst=/output \ --mount type=tmpfs,dst=/tmp \ diff --git a/bin/run-tests-in-docker.sh b/bin/run-tests-in-docker.sh index 0acfdc2..eef709b 100755 --- a/bin/run-tests-in-docker.sh +++ b/bin/run-tests-in-docker.sh @@ -20,7 +20,6 @@ docker build --rm -t exercism/fsharp-test-runner . docker run \ --rm \ --network none \ - --read-only \ --mount type=bind,src="${PWD}/tests",dst=/opt/test-runner/tests \ --mount type=bind,src="${PWD}/bin/run-tests.sh",dst=/opt/test-runner/bin/run-tests.sh \ --mount type=tmpfs,dst=/tmp \ From 90fe236c44ed55922980d9ad435ae8fc91a23e94 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Sat, 7 Mar 2026 21:04:53 +0100 Subject: [PATCH 15/21] Merge and rename tests --- .../AllTestsFailing.fs} | 2 +- .../AllTestsFailing.fsproj} | 4 ++-- .../AllTestsFailingTests.fs} | 4 ++-- .../expected_results.json | 0 .../AllTestsPassing.fs} | 2 +- .../AllTestsPassing.fsproj} | 4 ++-- .../AllTestsPassingTests.fs} | 4 ++-- .../expected_results.json | 0 tests/ClassBasedTests/ClassBasedTestsTests.fs | 16 ------------- .../MultipleCompileErrors.fs | 0 .../MultipleCompileErrors.fsproj | 0 .../MultipleCompileErrorsTests.fs | 0 .../expected_results.json | 0 .../DifferentTypesOfTestsTests.fs | 10 ++++++++ .../MultipleTestsWithAllPasses.fsproj | 22 ------------------ .../expected_results.json | 21 ----------------- .../MultipleTestsWithMultipleFails.fs | 7 ------ .../MultipleTestsWithMultipleFails.fsproj | 22 ------------------ .../MultipleTestsWithSingleFail.fs | 7 ------ .../MultipleTestsWithSingleFail.fsproj | 22 ------------------ .../MultipleTestsWithTestOutput.fsproj | 22 ------------------ ...ltipleTestsWithTestOutputExceedingLimit.fs | 10 -------- ...leTestsWithTestOutputExceedingLimit.fsproj | 22 ------------------ ...eTestsWithTestOutputExceedingLimitTests.fs | 15 ------------ .../expected_results.json | 21 ----------------- .../PartiallyFailingTests.fs} | 2 +- .../PartiallyFailingTests.fsproj} | 4 ++-- .../PartiallyFailingTestsTests.fs} | 4 ++-- .../expected_results.json | 0 .../QuotedAndNonQuotedTests.fsproj | 22 ------------------ .../QuotedAndUnqotedTests.fsproj} | 4 ++-- .../QuotedAndUnquotedTests.fs} | 2 +- .../QuotedAndUnquotedTestsTests.fs} | 4 ++-- .../expected_results.json | 0 .../SingleCompileError/SingleCompileError.fs | 3 --- .../SingleCompileErrorTests.fs | 9 -------- .../SingleCompileError/expected_results.json | 6 ----- .../SingleTestThatFails.fs | 3 --- .../SingleTestThatFailsTests.fs | 9 -------- .../SingleTestThatFails/expected_results.json | 12 ---------- .../SingleTestThatPasses.fs | 3 --- .../SingleTestThatPasses.fsproj | 22 ------------------ .../SingleTestThatPassesTests.fs | 9 -------- .../expected_results.json | 11 --------- .../SomeTestsWithTaskTests.fs | 17 -------------- tests/SomeTestsWithTask/expected_results.json | 23 ------------------- .../TestOutput.fs} | 7 ++++-- .../TestOutput.fsproj} | 4 ++-- .../TestOutputTests.fs} | 4 ++-- .../expected_results.json | 0 .../TestWithParentheses.fs | 3 --- .../TestWithParentheses.fsproj | 22 ------------------ .../TestWithParenthesesTests.fs | 9 -------- .../TestWithParentheses/expected_results.json | 11 --------- .../TestsWithTask.fs} | 2 +- .../TestsWithTask.fsproj} | 4 ++-- .../TestsWithTaskTests.fs} | 4 ++-- .../expected_results.json | 0 tests/Warnings/Warnings.fs | 5 ---- tests/Warnings/WarningsTests.fs | 9 -------- tests/Warnings/expected_results.json | 11 --------- 61 files changed, 44 insertions(+), 457 deletions(-) rename tests/{ClassBasedTests/ClassBasedTests.fs => AllTestsFailing/AllTestsFailing.fs} (73%) rename tests/{ClassBasedTests/ClassBasedTests.fsproj => AllTestsFailing/AllTestsFailing.fsproj} (86%) rename tests/{MultipleTestsWithMultipleFails/MultipleTestsWithMultipleFailsTests.fs => AllTestsFailing/AllTestsFailingTests.fs} (82%) rename tests/{MultipleTestsWithMultipleFails => AllTestsFailing}/expected_results.json (100%) rename tests/{AllTestsWithTask/AllTestsWithTask.fs => AllTestsPassing/AllTestsPassing.fs} (72%) rename tests/{AllTestsWithTask/AllTestsWithTask.fsproj => AllTestsPassing/AllTestsPassing.fsproj} (86%) rename tests/{MultipleTestsWithAllPasses/MultipleTestsWithAllPassesTests.fs => AllTestsPassing/AllTestsPassingTests.fs} (84%) rename tests/{ClassBasedTests => AllTestsPassing}/expected_results.json (100%) delete mode 100644 tests/ClassBasedTests/ClassBasedTestsTests.fs rename tests/{MultipleCompileErrors => CompileErrors}/MultipleCompileErrors.fs (100%) rename tests/{MultipleCompileErrors => CompileErrors}/MultipleCompileErrors.fsproj (100%) rename tests/{MultipleCompileErrors => CompileErrors}/MultipleCompileErrorsTests.fs (100%) rename tests/{MultipleCompileErrors => CompileErrors}/expected_results.json (100%) delete mode 100644 tests/MultipleTestsWithAllPasses/MultipleTestsWithAllPasses.fsproj delete mode 100644 tests/MultipleTestsWithAllPasses/expected_results.json delete mode 100644 tests/MultipleTestsWithMultipleFails/MultipleTestsWithMultipleFails.fs delete mode 100644 tests/MultipleTestsWithMultipleFails/MultipleTestsWithMultipleFails.fsproj delete mode 100644 tests/MultipleTestsWithSingleFail/MultipleTestsWithSingleFail.fs delete mode 100644 tests/MultipleTestsWithSingleFail/MultipleTestsWithSingleFail.fsproj delete mode 100644 tests/MultipleTestsWithTestOutput/MultipleTestsWithTestOutput.fsproj delete mode 100644 tests/MultipleTestsWithTestOutputExceedingLimit/MultipleTestsWithTestOutputExceedingLimit.fs delete mode 100644 tests/MultipleTestsWithTestOutputExceedingLimit/MultipleTestsWithTestOutputExceedingLimit.fsproj delete mode 100644 tests/MultipleTestsWithTestOutputExceedingLimit/MultipleTestsWithTestOutputExceedingLimitTests.fs delete mode 100644 tests/MultipleTestsWithTestOutputExceedingLimit/expected_results.json rename tests/{MultipleTestsWithAllPasses/MultipleTestsWithAllPasses.fs => PartiallyFailingTests/PartiallyFailingTests.fs} (64%) rename tests/{SingleCompileError/SingleCompileError.fsproj => PartiallyFailingTests/PartiallyFailingTests.fsproj} (85%) rename tests/{MultipleTestsWithSingleFail/MultipleTestsWithSingleFailTests.fs => PartiallyFailingTests/PartiallyFailingTestsTests.fs} (83%) rename tests/{MultipleTestsWithSingleFail => PartiallyFailingTests}/expected_results.json (100%) delete mode 100644 tests/QuotedAndNonQuotedTests/QuotedAndNonQuotedTests.fsproj rename tests/{SingleTestThatFails/SingleTestThatFails.fsproj => QuotedAndUnqotedTests/QuotedAndUnqotedTests.fsproj} (85%) rename tests/{QuotedAndNonQuotedTests/QuotedAndNonQuotedTests.fs => QuotedAndUnqotedTests/QuotedAndUnquotedTests.fs} (57%) rename tests/{QuotedAndNonQuotedTests/QuotedAndNonQuotedTestsTests.fs => QuotedAndUnqotedTests/QuotedAndUnquotedTestsTests.fs} (79%) rename tests/{QuotedAndNonQuotedTests => QuotedAndUnqotedTests}/expected_results.json (100%) delete mode 100644 tests/SingleCompileError/SingleCompileError.fs delete mode 100644 tests/SingleCompileError/SingleCompileErrorTests.fs delete mode 100644 tests/SingleCompileError/expected_results.json delete mode 100644 tests/SingleTestThatFails/SingleTestThatFails.fs delete mode 100644 tests/SingleTestThatFails/SingleTestThatFailsTests.fs delete mode 100644 tests/SingleTestThatFails/expected_results.json delete mode 100644 tests/SingleTestThatPasses/SingleTestThatPasses.fs delete mode 100644 tests/SingleTestThatPasses/SingleTestThatPasses.fsproj delete mode 100644 tests/SingleTestThatPasses/SingleTestThatPassesTests.fs delete mode 100644 tests/SingleTestThatPasses/expected_results.json delete mode 100644 tests/SomeTestsWithTask/SomeTestsWithTaskTests.fs delete mode 100644 tests/SomeTestsWithTask/expected_results.json rename tests/{MultipleTestsWithTestOutput/MultipleTestsWithTestOutput.fs => TestOutput/TestOutput.fs} (75%) rename tests/{Warnings/Warnings.fsproj => TestOutput/TestOutput.fsproj} (88%) rename tests/{MultipleTestsWithTestOutput/MultipleTestsWithTestOutputTests.fs => TestOutput/TestOutputTests.fs} (83%) rename tests/{MultipleTestsWithTestOutput => TestOutput}/expected_results.json (100%) delete mode 100644 tests/TestWithParentheses/TestWithParentheses.fs delete mode 100644 tests/TestWithParentheses/TestWithParentheses.fsproj delete mode 100644 tests/TestWithParentheses/TestWithParenthesesTests.fs delete mode 100644 tests/TestWithParentheses/expected_results.json rename tests/{SomeTestsWithTask/SomeTestsWithTask.fs => TestsWithTask/TestsWithTask.fs} (71%) rename tests/{SomeTestsWithTask/SomeTestsWithTask.fsproj => TestsWithTask/TestsWithTask.fsproj} (86%) rename tests/{AllTestsWithTask/AllTestsWithTaskTests.fs => TestsWithTask/TestsWithTaskTests.fs} (89%) rename tests/{AllTestsWithTask => TestsWithTask}/expected_results.json (100%) delete mode 100644 tests/Warnings/Warnings.fs delete mode 100644 tests/Warnings/WarningsTests.fs delete mode 100644 tests/Warnings/expected_results.json diff --git a/tests/ClassBasedTests/ClassBasedTests.fs b/tests/AllTestsFailing/AllTestsFailing.fs similarity index 73% rename from tests/ClassBasedTests/ClassBasedTests.fs rename to tests/AllTestsFailing/AllTestsFailing.fs index e2b60bf..15e4b45 100644 --- a/tests/ClassBasedTests/ClassBasedTests.fs +++ b/tests/AllTestsFailing/AllTestsFailing.fs @@ -1,4 +1,4 @@ -module ClassBasedTests +module AllTestsFailing let add x y = x + y diff --git a/tests/ClassBasedTests/ClassBasedTests.fsproj b/tests/AllTestsFailing/AllTestsFailing.fsproj similarity index 86% rename from tests/ClassBasedTests/ClassBasedTests.fsproj rename to tests/AllTestsFailing/AllTestsFailing.fsproj index 6523bdc..5e84107 100644 --- a/tests/ClassBasedTests/ClassBasedTests.fsproj +++ b/tests/AllTestsFailing/AllTestsFailing.fsproj @@ -7,8 +7,8 @@ - - + + diff --git a/tests/MultipleTestsWithMultipleFails/MultipleTestsWithMultipleFailsTests.fs b/tests/AllTestsFailing/AllTestsFailingTests.fs similarity index 82% rename from tests/MultipleTestsWithMultipleFails/MultipleTestsWithMultipleFailsTests.fs rename to tests/AllTestsFailing/AllTestsFailingTests.fs index 52a64de..d6e1924 100644 --- a/tests/MultipleTestsWithMultipleFails/MultipleTestsWithMultipleFailsTests.fs +++ b/tests/AllTestsFailing/AllTestsFailingTests.fs @@ -1,9 +1,9 @@ -module MultipleTestsWithMultipleFailsTests +module AllTestsFailingTests open Xunit open FsUnit.Xunit open Exercism.Tests -open MultipleTestsWithMultipleFails +open AllTestsFailing [] let ``Add should add numbers`` () = add 1 1 |> should equal 3 diff --git a/tests/MultipleTestsWithMultipleFails/expected_results.json b/tests/AllTestsFailing/expected_results.json similarity index 100% rename from tests/MultipleTestsWithMultipleFails/expected_results.json rename to tests/AllTestsFailing/expected_results.json diff --git a/tests/AllTestsWithTask/AllTestsWithTask.fs b/tests/AllTestsPassing/AllTestsPassing.fs similarity index 72% rename from tests/AllTestsWithTask/AllTestsWithTask.fs rename to tests/AllTestsPassing/AllTestsPassing.fs index 069a14b..f7fc677 100644 --- a/tests/AllTestsWithTask/AllTestsWithTask.fs +++ b/tests/AllTestsPassing/AllTestsPassing.fs @@ -1,4 +1,4 @@ -module AllTestsWithTask +module AllTestsPassing let add x y = x + y diff --git a/tests/AllTestsWithTask/AllTestsWithTask.fsproj b/tests/AllTestsPassing/AllTestsPassing.fsproj similarity index 86% rename from tests/AllTestsWithTask/AllTestsWithTask.fsproj rename to tests/AllTestsPassing/AllTestsPassing.fsproj index 5a25be9..efcf3bc 100644 --- a/tests/AllTestsWithTask/AllTestsWithTask.fsproj +++ b/tests/AllTestsPassing/AllTestsPassing.fsproj @@ -7,8 +7,8 @@ - - + + diff --git a/tests/MultipleTestsWithAllPasses/MultipleTestsWithAllPassesTests.fs b/tests/AllTestsPassing/AllTestsPassingTests.fs similarity index 84% rename from tests/MultipleTestsWithAllPasses/MultipleTestsWithAllPassesTests.fs rename to tests/AllTestsPassing/AllTestsPassingTests.fs index 7d763fb..2e3bcf1 100644 --- a/tests/MultipleTestsWithAllPasses/MultipleTestsWithAllPassesTests.fs +++ b/tests/AllTestsPassing/AllTestsPassingTests.fs @@ -1,9 +1,9 @@ -module MultipleTestsWithAllPassesTests +module AllTestsPassingTests open Xunit open FsUnit.Xunit open Exercism.Tests -open MultipleTestsWithAllPasses +open AllTestsPassing [] let ``Add should add numbers`` () = add 1 1 |> should equal 2 diff --git a/tests/ClassBasedTests/expected_results.json b/tests/AllTestsPassing/expected_results.json similarity index 100% rename from tests/ClassBasedTests/expected_results.json rename to tests/AllTestsPassing/expected_results.json diff --git a/tests/ClassBasedTests/ClassBasedTestsTests.fs b/tests/ClassBasedTests/ClassBasedTestsTests.fs deleted file mode 100644 index c6e5d60..0000000 --- a/tests/ClassBasedTests/ClassBasedTestsTests.fs +++ /dev/null @@ -1,16 +0,0 @@ -module ClassBasedTestsTests - -open Xunit -open FsUnit.Xunit -open Exercism.Tests -open ClassBasedTests - -type Tests() = - [] - member _.``Add should add numbers``() = add 1 1 |> should equal 2 - - [] - member _.``Sub should subtract numbers``() = sub 7 3 |> should equal 4 - - [] - member _.``Mul should multiply numbers``() = mul 2 3 |> should equal 6 diff --git a/tests/MultipleCompileErrors/MultipleCompileErrors.fs b/tests/CompileErrors/MultipleCompileErrors.fs similarity index 100% rename from tests/MultipleCompileErrors/MultipleCompileErrors.fs rename to tests/CompileErrors/MultipleCompileErrors.fs diff --git a/tests/MultipleCompileErrors/MultipleCompileErrors.fsproj b/tests/CompileErrors/MultipleCompileErrors.fsproj similarity index 100% rename from tests/MultipleCompileErrors/MultipleCompileErrors.fsproj rename to tests/CompileErrors/MultipleCompileErrors.fsproj diff --git a/tests/MultipleCompileErrors/MultipleCompileErrorsTests.fs b/tests/CompileErrors/MultipleCompileErrorsTests.fs similarity index 100% rename from tests/MultipleCompileErrors/MultipleCompileErrorsTests.fs rename to tests/CompileErrors/MultipleCompileErrorsTests.fs diff --git a/tests/MultipleCompileErrors/expected_results.json b/tests/CompileErrors/expected_results.json similarity index 100% rename from tests/MultipleCompileErrors/expected_results.json rename to tests/CompileErrors/expected_results.json diff --git a/tests/DifferentTypesOfTests/DifferentTypesOfTestsTests.fs b/tests/DifferentTypesOfTests/DifferentTypesOfTestsTests.fs index 2ae252a..5e4a561 100644 --- a/tests/DifferentTypesOfTests/DifferentTypesOfTestsTests.fs +++ b/tests/DifferentTypesOfTests/DifferentTypesOfTestsTests.fs @@ -43,3 +43,13 @@ let ``Letter should be uppercase`` (letter) = Char.IsUpper(letter) |> should equ [] let ``Div should divide numbers`` (x) : Property = Prop.throws (new Lazy(fun () -> x / 0)) + +type ClassBasedTests() = + [] + member _.``Add should add numbers``() = add 1 1 |> should equal 2 + + [] + member _.``Sub should subtract numbers``() = sub 7 3 |> should equal 4 + + [] + member _.``Mul should multiply numbers``() = mul 2 3 |> should equal 6 diff --git a/tests/MultipleTestsWithAllPasses/MultipleTestsWithAllPasses.fsproj b/tests/MultipleTestsWithAllPasses/MultipleTestsWithAllPasses.fsproj deleted file mode 100644 index ba8e6f0..0000000 --- a/tests/MultipleTestsWithAllPasses/MultipleTestsWithAllPasses.fsproj +++ /dev/null @@ -1,22 +0,0 @@ - - - - net10.0 - Exercism - false - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/MultipleTestsWithAllPasses/expected_results.json b/tests/MultipleTestsWithAllPasses/expected_results.json deleted file mode 100644 index ce56be2..0000000 --- a/tests/MultipleTestsWithAllPasses/expected_results.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "version": 3, - "status": "pass", - "tests": [ - { - "name": "Add should add numbers", - "status": "pass", - "test_code": "add 1 1 |\u003E should equal 2" - }, - { - "name": "Sub should subtract numbers", - "status": "pass", - "test_code": "sub 7 3 |\u003E should equal 4" - }, - { - "name": "Mul should multiply numbers", - "status": "pass", - "test_code": "mul 2 3 |\u003E should equal 6" - } - ] -} \ No newline at end of file diff --git a/tests/MultipleTestsWithMultipleFails/MultipleTestsWithMultipleFails.fs b/tests/MultipleTestsWithMultipleFails/MultipleTestsWithMultipleFails.fs deleted file mode 100644 index 14b33ba..0000000 --- a/tests/MultipleTestsWithMultipleFails/MultipleTestsWithMultipleFails.fs +++ /dev/null @@ -1,7 +0,0 @@ -module MultipleTestsWithMultipleFails - -let add x y = x + y - -let sub x y = x - y - -let mul x y = x * y diff --git a/tests/MultipleTestsWithMultipleFails/MultipleTestsWithMultipleFails.fsproj b/tests/MultipleTestsWithMultipleFails/MultipleTestsWithMultipleFails.fsproj deleted file mode 100644 index 0296c5d..0000000 --- a/tests/MultipleTestsWithMultipleFails/MultipleTestsWithMultipleFails.fsproj +++ /dev/null @@ -1,22 +0,0 @@ - - - - net10.0 - Exercism - false - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/MultipleTestsWithSingleFail/MultipleTestsWithSingleFail.fs b/tests/MultipleTestsWithSingleFail/MultipleTestsWithSingleFail.fs deleted file mode 100644 index bfdb29d..0000000 --- a/tests/MultipleTestsWithSingleFail/MultipleTestsWithSingleFail.fs +++ /dev/null @@ -1,7 +0,0 @@ -module MultipleTestsWithSingleFail - -let add x y = x + y - -let sub x y = x - y - -let mul x y = x * y diff --git a/tests/MultipleTestsWithSingleFail/MultipleTestsWithSingleFail.fsproj b/tests/MultipleTestsWithSingleFail/MultipleTestsWithSingleFail.fsproj deleted file mode 100644 index a0652d5..0000000 --- a/tests/MultipleTestsWithSingleFail/MultipleTestsWithSingleFail.fsproj +++ /dev/null @@ -1,22 +0,0 @@ - - - - net10.0 - Exercism - false - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/MultipleTestsWithTestOutput/MultipleTestsWithTestOutput.fsproj b/tests/MultipleTestsWithTestOutput/MultipleTestsWithTestOutput.fsproj deleted file mode 100644 index f5fedd7..0000000 --- a/tests/MultipleTestsWithTestOutput/MultipleTestsWithTestOutput.fsproj +++ /dev/null @@ -1,22 +0,0 @@ - - - - net10.0 - Exercism - false - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/MultipleTestsWithTestOutputExceedingLimit/MultipleTestsWithTestOutputExceedingLimit.fs b/tests/MultipleTestsWithTestOutputExceedingLimit/MultipleTestsWithTestOutputExceedingLimit.fs deleted file mode 100644 index 95831aa..0000000 --- a/tests/MultipleTestsWithTestOutputExceedingLimit/MultipleTestsWithTestOutputExceedingLimit.fs +++ /dev/null @@ -1,10 +0,0 @@ -module MultipleTestsWithTestOutputExceedingLimit - -let add x y = - printfn "%s" (System.String('a', 498) + "bcd") - - x + y - -let sub x y = x - y - -let mul x y = x * y diff --git a/tests/MultipleTestsWithTestOutputExceedingLimit/MultipleTestsWithTestOutputExceedingLimit.fsproj b/tests/MultipleTestsWithTestOutputExceedingLimit/MultipleTestsWithTestOutputExceedingLimit.fsproj deleted file mode 100644 index 6567efe..0000000 --- a/tests/MultipleTestsWithTestOutputExceedingLimit/MultipleTestsWithTestOutputExceedingLimit.fsproj +++ /dev/null @@ -1,22 +0,0 @@ - - - - net10.0 - Exercism - false - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/MultipleTestsWithTestOutputExceedingLimit/MultipleTestsWithTestOutputExceedingLimitTests.fs b/tests/MultipleTestsWithTestOutputExceedingLimit/MultipleTestsWithTestOutputExceedingLimitTests.fs deleted file mode 100644 index f84fb24..0000000 --- a/tests/MultipleTestsWithTestOutputExceedingLimit/MultipleTestsWithTestOutputExceedingLimitTests.fs +++ /dev/null @@ -1,15 +0,0 @@ -module MultipleTestsWithTestOutputExceedingLimitTests - -open Xunit -open FsUnit.Xunit -open Exercism.Tests -open MultipleTestsWithTestOutputExceedingLimit - -[] -let ``Add should add numbers`` () = add 1 1 |> should equal 2 - -[] -let ``Sub should subtract numbers`` () = sub 7 3 |> should equal 4 - -[] -let ``Mul should multiply numbers`` () = mul 2 3 |> should equal 6 diff --git a/tests/MultipleTestsWithTestOutputExceedingLimit/expected_results.json b/tests/MultipleTestsWithTestOutputExceedingLimit/expected_results.json deleted file mode 100644 index ce56be2..0000000 --- a/tests/MultipleTestsWithTestOutputExceedingLimit/expected_results.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "version": 3, - "status": "pass", - "tests": [ - { - "name": "Add should add numbers", - "status": "pass", - "test_code": "add 1 1 |\u003E should equal 2" - }, - { - "name": "Sub should subtract numbers", - "status": "pass", - "test_code": "sub 7 3 |\u003E should equal 4" - }, - { - "name": "Mul should multiply numbers", - "status": "pass", - "test_code": "mul 2 3 |\u003E should equal 6" - } - ] -} \ No newline at end of file diff --git a/tests/MultipleTestsWithAllPasses/MultipleTestsWithAllPasses.fs b/tests/PartiallyFailingTests/PartiallyFailingTests.fs similarity index 64% rename from tests/MultipleTestsWithAllPasses/MultipleTestsWithAllPasses.fs rename to tests/PartiallyFailingTests/PartiallyFailingTests.fs index 897942f..a383bf0 100644 --- a/tests/MultipleTestsWithAllPasses/MultipleTestsWithAllPasses.fs +++ b/tests/PartiallyFailingTests/PartiallyFailingTests.fs @@ -1,4 +1,4 @@ -module MultipleTestsWithAllPasses +module PartiallyFailingTests let add x y = x + y diff --git a/tests/SingleCompileError/SingleCompileError.fsproj b/tests/PartiallyFailingTests/PartiallyFailingTests.fsproj similarity index 85% rename from tests/SingleCompileError/SingleCompileError.fsproj rename to tests/PartiallyFailingTests/PartiallyFailingTests.fsproj index 6ecb649..5a1177a 100644 --- a/tests/SingleCompileError/SingleCompileError.fsproj +++ b/tests/PartiallyFailingTests/PartiallyFailingTests.fsproj @@ -7,8 +7,8 @@ - - + + diff --git a/tests/MultipleTestsWithSingleFail/MultipleTestsWithSingleFailTests.fs b/tests/PartiallyFailingTests/PartiallyFailingTestsTests.fs similarity index 83% rename from tests/MultipleTestsWithSingleFail/MultipleTestsWithSingleFailTests.fs rename to tests/PartiallyFailingTests/PartiallyFailingTestsTests.fs index e10c5a7..65ca15a 100644 --- a/tests/MultipleTestsWithSingleFail/MultipleTestsWithSingleFailTests.fs +++ b/tests/PartiallyFailingTests/PartiallyFailingTestsTests.fs @@ -1,9 +1,9 @@ -module MultipleTestsWithSingleFailTests +module PartiallyFailingTestsTests open Xunit open FsUnit.Xunit open Exercism.Tests -open MultipleTestsWithSingleFail +open PartiallyFailingTests [] let ``Add should add numbers`` () = add 1 1 |> should equal 2 diff --git a/tests/MultipleTestsWithSingleFail/expected_results.json b/tests/PartiallyFailingTests/expected_results.json similarity index 100% rename from tests/MultipleTestsWithSingleFail/expected_results.json rename to tests/PartiallyFailingTests/expected_results.json diff --git a/tests/QuotedAndNonQuotedTests/QuotedAndNonQuotedTests.fsproj b/tests/QuotedAndNonQuotedTests/QuotedAndNonQuotedTests.fsproj deleted file mode 100644 index 4748772..0000000 --- a/tests/QuotedAndNonQuotedTests/QuotedAndNonQuotedTests.fsproj +++ /dev/null @@ -1,22 +0,0 @@ - - - - net10.0 - Exercism - false - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/SingleTestThatFails/SingleTestThatFails.fsproj b/tests/QuotedAndUnqotedTests/QuotedAndUnqotedTests.fsproj similarity index 85% rename from tests/SingleTestThatFails/SingleTestThatFails.fsproj rename to tests/QuotedAndUnqotedTests/QuotedAndUnqotedTests.fsproj index fe2819f..8f94374 100644 --- a/tests/SingleTestThatFails/SingleTestThatFails.fsproj +++ b/tests/QuotedAndUnqotedTests/QuotedAndUnqotedTests.fsproj @@ -7,8 +7,8 @@ - - + + diff --git a/tests/QuotedAndNonQuotedTests/QuotedAndNonQuotedTests.fs b/tests/QuotedAndUnqotedTests/QuotedAndUnquotedTests.fs similarity index 57% rename from tests/QuotedAndNonQuotedTests/QuotedAndNonQuotedTests.fs rename to tests/QuotedAndUnqotedTests/QuotedAndUnquotedTests.fs index 2287316..751463d 100644 --- a/tests/QuotedAndNonQuotedTests/QuotedAndNonQuotedTests.fs +++ b/tests/QuotedAndUnqotedTests/QuotedAndUnquotedTests.fs @@ -1,4 +1,4 @@ -module QuotedAndNonQuotedTests +module QuotedAndUnquotedTests let add x y = x + y diff --git a/tests/QuotedAndNonQuotedTests/QuotedAndNonQuotedTestsTests.fs b/tests/QuotedAndUnqotedTests/QuotedAndUnquotedTestsTests.fs similarity index 79% rename from tests/QuotedAndNonQuotedTests/QuotedAndNonQuotedTestsTests.fs rename to tests/QuotedAndUnqotedTests/QuotedAndUnquotedTestsTests.fs index 5ecd9ae..d9aadfd 100644 --- a/tests/QuotedAndNonQuotedTests/QuotedAndNonQuotedTestsTests.fs +++ b/tests/QuotedAndUnqotedTests/QuotedAndUnquotedTestsTests.fs @@ -1,9 +1,9 @@ -module QuotedAndNonQuotedTestsTests +module QuotedAndUnquotedTestsTests open Xunit open FsUnit.Xunit open Exercism.Tests -open QuotedAndNonQuotedTests +open QuotedAndUnquotedTests [] let ``Add should add numbers`` () = add 1 1 |> should equal 2 diff --git a/tests/QuotedAndNonQuotedTests/expected_results.json b/tests/QuotedAndUnqotedTests/expected_results.json similarity index 100% rename from tests/QuotedAndNonQuotedTests/expected_results.json rename to tests/QuotedAndUnqotedTests/expected_results.json diff --git a/tests/SingleCompileError/SingleCompileError.fs b/tests/SingleCompileError/SingleCompileError.fs deleted file mode 100644 index 127a501..0000000 --- a/tests/SingleCompileError/SingleCompileError.fs +++ /dev/null @@ -1,3 +0,0 @@ -module SingleCompileError - -let invalid x y = x + y diff --git a/tests/SingleCompileError/SingleCompileErrorTests.fs b/tests/SingleCompileError/SingleCompileErrorTests.fs deleted file mode 100644 index 4ce3125..0000000 --- a/tests/SingleCompileError/SingleCompileErrorTests.fs +++ /dev/null @@ -1,9 +0,0 @@ -module SingleCompileErrorTests - -open Xunit -open FsUnit.Xunit -open Exercism.Tests -open SingleCompileError - -[] -let ``Add should add numbers`` () = add 1 1 |> should equal 2 diff --git a/tests/SingleCompileError/expected_results.json b/tests/SingleCompileError/expected_results.json deleted file mode 100644 index 4d88dcc..0000000 --- a/tests/SingleCompileError/expected_results.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "version": 3, - "status": "error", - "message": "SingleCompileErrorTests.fs(9,37): error FS0039: The value or constructor \u0027add\u0027 is not defined.", - "tests": [] -} \ No newline at end of file diff --git a/tests/SingleTestThatFails/SingleTestThatFails.fs b/tests/SingleTestThatFails/SingleTestThatFails.fs deleted file mode 100644 index d47aabf..0000000 --- a/tests/SingleTestThatFails/SingleTestThatFails.fs +++ /dev/null @@ -1,3 +0,0 @@ -module SingleTestThatFails - -let add x y = x + y diff --git a/tests/SingleTestThatFails/SingleTestThatFailsTests.fs b/tests/SingleTestThatFails/SingleTestThatFailsTests.fs deleted file mode 100644 index 90a3a4a..0000000 --- a/tests/SingleTestThatFails/SingleTestThatFailsTests.fs +++ /dev/null @@ -1,9 +0,0 @@ -module SingleTestThatFailsTests - -open Xunit -open FsUnit.Xunit -open Exercism.Tests -open SingleTestThatFails - -[] -let ``Add should add numbers`` () = add 1 1 |> should equal 3 diff --git a/tests/SingleTestThatFails/expected_results.json b/tests/SingleTestThatFails/expected_results.json deleted file mode 100644 index fa7b590..0000000 --- a/tests/SingleTestThatFails/expected_results.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "version": 3, - "status": "fail", - "tests": [ - { - "name": "Add should add numbers", - "status": "fail", - "message": "Assert.Equal() Failure: Values differ\nExpected: \u0022Equals 3\u0022\nActual: \u00222\u0022", - "test_code": "add 1 1 |\u003E should equal 3" - } - ] -} \ No newline at end of file diff --git a/tests/SingleTestThatPasses/SingleTestThatPasses.fs b/tests/SingleTestThatPasses/SingleTestThatPasses.fs deleted file mode 100644 index 9dd4c74..0000000 --- a/tests/SingleTestThatPasses/SingleTestThatPasses.fs +++ /dev/null @@ -1,3 +0,0 @@ -module SingleTestThatPasses - -let add x y = x + y diff --git a/tests/SingleTestThatPasses/SingleTestThatPasses.fsproj b/tests/SingleTestThatPasses/SingleTestThatPasses.fsproj deleted file mode 100644 index 210462e..0000000 --- a/tests/SingleTestThatPasses/SingleTestThatPasses.fsproj +++ /dev/null @@ -1,22 +0,0 @@ - - - - net10.0 - Exercism - false - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/SingleTestThatPasses/SingleTestThatPassesTests.fs b/tests/SingleTestThatPasses/SingleTestThatPassesTests.fs deleted file mode 100644 index 52ebdf9..0000000 --- a/tests/SingleTestThatPasses/SingleTestThatPassesTests.fs +++ /dev/null @@ -1,9 +0,0 @@ -module SingleTestThatPassesTests - -open Xunit -open FsUnit.Xunit -open Exercism.Tests -open SingleTestThatPasses - -[] -let ``Add should add numbers`` () = add 1 1 |> should equal 2 diff --git a/tests/SingleTestThatPasses/expected_results.json b/tests/SingleTestThatPasses/expected_results.json deleted file mode 100644 index 31b28e4..0000000 --- a/tests/SingleTestThatPasses/expected_results.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "version": 3, - "status": "pass", - "tests": [ - { - "name": "Add should add numbers", - "status": "pass", - "test_code": "add 1 1 |\u003E should equal 2" - } - ] -} \ No newline at end of file diff --git a/tests/SomeTestsWithTask/SomeTestsWithTaskTests.fs b/tests/SomeTestsWithTask/SomeTestsWithTaskTests.fs deleted file mode 100644 index 159aa9a..0000000 --- a/tests/SomeTestsWithTask/SomeTestsWithTaskTests.fs +++ /dev/null @@ -1,17 +0,0 @@ -module SomeTestsWithTaskTests - -open Xunit -open FsUnit.Xunit -open Exercism.Tests -open SomeTestsWithTask - -[] -[] -let ``Add should add numbers`` () = add 1 1 |> should equal 2 - -[] -let ``Sub should subtract numbers`` () = sub 7 3 |> should equal 4 - -[] -[] -let ``Mul should multiply numbers`` () = mul 2 3 |> should equal 6 diff --git a/tests/SomeTestsWithTask/expected_results.json b/tests/SomeTestsWithTask/expected_results.json deleted file mode 100644 index 9ec8f3d..0000000 --- a/tests/SomeTestsWithTask/expected_results.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "version": 3, - "status": "pass", - "tests": [ - { - "name": "Add should add numbers", - "status": "pass", - "test_code": "add 1 1 |\u003E should equal 2", - "task_id": 1 - }, - { - "name": "Sub should subtract numbers", - "status": "pass", - "test_code": "sub 7 3 |\u003E should equal 4" - }, - { - "name": "Mul should multiply numbers", - "status": "pass", - "test_code": "mul 2 3 |\u003E should equal 6", - "task_id": 3 - } - ] -} \ No newline at end of file diff --git a/tests/MultipleTestsWithTestOutput/MultipleTestsWithTestOutput.fs b/tests/TestOutput/TestOutput.fs similarity index 75% rename from tests/MultipleTestsWithTestOutput/MultipleTestsWithTestOutput.fs rename to tests/TestOutput/TestOutput.fs index 54de114..20870c7 100644 --- a/tests/MultipleTestsWithTestOutput/MultipleTestsWithTestOutput.fs +++ b/tests/TestOutput/TestOutput.fs @@ -1,4 +1,4 @@ -module MultipleTestsWithTestOutput +module TestOutput let add x y = printf "Printf and" @@ -14,4 +14,7 @@ let sub x y = x * y + 1 -let mul x y = x * y +let mul x y = + printfn "%s" (System.String('a', 498) + "bcd") + + x * y diff --git a/tests/Warnings/Warnings.fsproj b/tests/TestOutput/TestOutput.fsproj similarity index 88% rename from tests/Warnings/Warnings.fsproj rename to tests/TestOutput/TestOutput.fsproj index 6862549..9538a9a 100644 --- a/tests/Warnings/Warnings.fsproj +++ b/tests/TestOutput/TestOutput.fsproj @@ -7,8 +7,8 @@ - - + + diff --git a/tests/MultipleTestsWithTestOutput/MultipleTestsWithTestOutputTests.fs b/tests/TestOutput/TestOutputTests.fs similarity index 83% rename from tests/MultipleTestsWithTestOutput/MultipleTestsWithTestOutputTests.fs rename to tests/TestOutput/TestOutputTests.fs index 0b6b59b..1320e73 100644 --- a/tests/MultipleTestsWithTestOutput/MultipleTestsWithTestOutputTests.fs +++ b/tests/TestOutput/TestOutputTests.fs @@ -1,9 +1,9 @@ -module MultipleTestsWithTestOutputTests +module TestOutputTests open Xunit open FsUnit.Xunit open Exercism.Tests -open MultipleTestsWithTestOutput +open TestOutput [] let ``Add should add numbers`` () = add 1 1 |> should equal 2 diff --git a/tests/MultipleTestsWithTestOutput/expected_results.json b/tests/TestOutput/expected_results.json similarity index 100% rename from tests/MultipleTestsWithTestOutput/expected_results.json rename to tests/TestOutput/expected_results.json diff --git a/tests/TestWithParentheses/TestWithParentheses.fs b/tests/TestWithParentheses/TestWithParentheses.fs deleted file mode 100644 index fb405aa..0000000 --- a/tests/TestWithParentheses/TestWithParentheses.fs +++ /dev/null @@ -1,3 +0,0 @@ -module TestWithParentheses - -let add x y = x + y diff --git a/tests/TestWithParentheses/TestWithParentheses.fsproj b/tests/TestWithParentheses/TestWithParentheses.fsproj deleted file mode 100644 index b6ef92d..0000000 --- a/tests/TestWithParentheses/TestWithParentheses.fsproj +++ /dev/null @@ -1,22 +0,0 @@ - - - - net10.0 - Exercism - false - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/TestWithParentheses/TestWithParenthesesTests.fs b/tests/TestWithParentheses/TestWithParenthesesTests.fs deleted file mode 100644 index dc2c59e..0000000 --- a/tests/TestWithParentheses/TestWithParenthesesTests.fs +++ /dev/null @@ -1,9 +0,0 @@ -module TestWithParenthesesTests - -open Xunit -open FsUnit.Xunit -open Exercism.Tests -open TestWithParentheses - -[] -let ``Add should add numbers (okay-ish)`` () = add 1 1 |> should equal 2 diff --git a/tests/TestWithParentheses/expected_results.json b/tests/TestWithParentheses/expected_results.json deleted file mode 100644 index bd7a361..0000000 --- a/tests/TestWithParentheses/expected_results.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "version": 3, - "status": "pass", - "tests": [ - { - "name": "Add should add numbers (okay-ish)", - "status": "pass", - "test_code": "add 1 1 |\u003E should equal 2" - } - ] -} \ No newline at end of file diff --git a/tests/SomeTestsWithTask/SomeTestsWithTask.fs b/tests/TestsWithTask/TestsWithTask.fs similarity index 71% rename from tests/SomeTestsWithTask/SomeTestsWithTask.fs rename to tests/TestsWithTask/TestsWithTask.fs index 1c54fd3..0475b02 100644 --- a/tests/SomeTestsWithTask/SomeTestsWithTask.fs +++ b/tests/TestsWithTask/TestsWithTask.fs @@ -1,4 +1,4 @@ -module SomeTestsWithTask +module TestsWithTask let add x y = x + y diff --git a/tests/SomeTestsWithTask/SomeTestsWithTask.fsproj b/tests/TestsWithTask/TestsWithTask.fsproj similarity index 86% rename from tests/SomeTestsWithTask/SomeTestsWithTask.fsproj rename to tests/TestsWithTask/TestsWithTask.fsproj index a3e7e86..3d0fb81 100644 --- a/tests/SomeTestsWithTask/SomeTestsWithTask.fsproj +++ b/tests/TestsWithTask/TestsWithTask.fsproj @@ -7,8 +7,8 @@ - - + + diff --git a/tests/AllTestsWithTask/AllTestsWithTaskTests.fs b/tests/TestsWithTask/TestsWithTaskTests.fs similarity index 89% rename from tests/AllTestsWithTask/AllTestsWithTaskTests.fs rename to tests/TestsWithTask/TestsWithTaskTests.fs index 499c523..3b9fa06 100644 --- a/tests/AllTestsWithTask/AllTestsWithTaskTests.fs +++ b/tests/TestsWithTask/TestsWithTaskTests.fs @@ -1,9 +1,9 @@ -module AllTestsWithTaskTests +module TestsWithTaskTests open Xunit open FsUnit.Xunit open Exercism.Tests -open AllTestsWithTask +open TestsWithTask [] [] diff --git a/tests/AllTestsWithTask/expected_results.json b/tests/TestsWithTask/expected_results.json similarity index 100% rename from tests/AllTestsWithTask/expected_results.json rename to tests/TestsWithTask/expected_results.json diff --git a/tests/Warnings/Warnings.fs b/tests/Warnings/Warnings.fs deleted file mode 100644 index afc45ef..0000000 --- a/tests/Warnings/Warnings.fs +++ /dev/null @@ -1,5 +0,0 @@ -module SingleTestThatPasses - -let add x y = - match true with - | true -> x + y diff --git a/tests/Warnings/WarningsTests.fs b/tests/Warnings/WarningsTests.fs deleted file mode 100644 index 52ebdf9..0000000 --- a/tests/Warnings/WarningsTests.fs +++ /dev/null @@ -1,9 +0,0 @@ -module SingleTestThatPassesTests - -open Xunit -open FsUnit.Xunit -open Exercism.Tests -open SingleTestThatPasses - -[] -let ``Add should add numbers`` () = add 1 1 |> should equal 2 diff --git a/tests/Warnings/expected_results.json b/tests/Warnings/expected_results.json deleted file mode 100644 index 31b28e4..0000000 --- a/tests/Warnings/expected_results.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "version": 3, - "status": "pass", - "tests": [ - { - "name": "Add should add numbers", - "status": "pass", - "test_code": "add 1 1 |\u003E should equal 2" - } - ] -} \ No newline at end of file From 1e7eeb794d8630a408033201a05caa517c9cc950 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Sun, 8 Mar 2026 09:11:10 +0100 Subject: [PATCH 16/21] Fix package versions --- Dockerfile | 2 +- tests/DifferentTypesOfTests/DifferentTypesOfTests.fsproj | 4 ++-- tests/UseCultureAttribute/UseCultureAttribute.fsproj | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index a165c1b..fc2d77f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,7 +21,7 @@ RUN dotnet add package Aether --version 8.3.1 RUN dotnet add package BenchmarkDotNet --version 0.12.1 RUN dotnet add package FakeItEasy --version 6.2.1 RUN dotnet add package FsCheck --version 2.14.3 -RUN dotnet add package FsCheck --version 2.16.3 +RUN dotnet add package FsCheck --version 3.3.2 RUN dotnet add package FsCheck.Xunit --version 2.14.3 RUN dotnet add package FsCheck.Xunit.v3 --version 3.3.2 RUN dotnet add package FSharp.Core --version 9.0.201 diff --git a/tests/DifferentTypesOfTests/DifferentTypesOfTests.fsproj b/tests/DifferentTypesOfTests/DifferentTypesOfTests.fsproj index aefea06..14b7dcc 100644 --- a/tests/DifferentTypesOfTests/DifferentTypesOfTests.fsproj +++ b/tests/DifferentTypesOfTests/DifferentTypesOfTests.fsproj @@ -16,8 +16,8 @@ - - + + diff --git a/tests/UseCultureAttribute/UseCultureAttribute.fsproj b/tests/UseCultureAttribute/UseCultureAttribute.fsproj index fc029b7..fa8703f 100644 --- a/tests/UseCultureAttribute/UseCultureAttribute.fsproj +++ b/tests/UseCultureAttribute/UseCultureAttribute.fsproj @@ -16,7 +16,7 @@ - + \ No newline at end of file From e1162ebac22d53934d20cf3a891ca47e3af43a70 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Sun, 8 Mar 2026 09:13:25 +0100 Subject: [PATCH 17/21] Fix project file name --- ...QuotedAndUnqotedTests.fsproj => QuotedAndUnquotedTests.fsproj} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename tests/QuotedAndUnqotedTests/{QuotedAndUnqotedTests.fsproj => QuotedAndUnquotedTests.fsproj} (100%) diff --git a/tests/QuotedAndUnqotedTests/QuotedAndUnqotedTests.fsproj b/tests/QuotedAndUnqotedTests/QuotedAndUnquotedTests.fsproj similarity index 100% rename from tests/QuotedAndUnqotedTests/QuotedAndUnqotedTests.fsproj rename to tests/QuotedAndUnqotedTests/QuotedAndUnquotedTests.fsproj From f303bcbbff9ee9b051edae9e8a0742f01a6dbd03 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Sun, 8 Mar 2026 09:17:37 +0100 Subject: [PATCH 18/21] Fix rename --- tests/CompileErrors/CompileErrors.fs | 3 +++ .../{MultipleCompileErrors.fsproj => CompileErrors.fsproj} | 4 ++-- .../{MultipleCompileErrorsTests.fs => CompileErrorsTests.fs} | 4 ++-- tests/CompileErrors/MultipleCompileErrors.fs | 3 --- tests/CompileErrors/expected_results.json | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) create mode 100644 tests/CompileErrors/CompileErrors.fs rename tests/CompileErrors/{MultipleCompileErrors.fsproj => CompileErrors.fsproj} (85%) rename tests/CompileErrors/{MultipleCompileErrorsTests.fs => CompileErrorsTests.fs} (80%) delete mode 100644 tests/CompileErrors/MultipleCompileErrors.fs diff --git a/tests/CompileErrors/CompileErrors.fs b/tests/CompileErrors/CompileErrors.fs new file mode 100644 index 0000000..ac1c7d2 --- /dev/null +++ b/tests/CompileErrors/CompileErrors.fs @@ -0,0 +1,3 @@ +module CompileErrors + +let invalid x y = x + y diff --git a/tests/CompileErrors/MultipleCompileErrors.fsproj b/tests/CompileErrors/CompileErrors.fsproj similarity index 85% rename from tests/CompileErrors/MultipleCompileErrors.fsproj rename to tests/CompileErrors/CompileErrors.fsproj index b8381b4..e5413bd 100644 --- a/tests/CompileErrors/MultipleCompileErrors.fsproj +++ b/tests/CompileErrors/CompileErrors.fsproj @@ -7,8 +7,8 @@ - - + + diff --git a/tests/CompileErrors/MultipleCompileErrorsTests.fs b/tests/CompileErrors/CompileErrorsTests.fs similarity index 80% rename from tests/CompileErrors/MultipleCompileErrorsTests.fs rename to tests/CompileErrors/CompileErrorsTests.fs index ade7dba..fa5c275 100644 --- a/tests/CompileErrors/MultipleCompileErrorsTests.fs +++ b/tests/CompileErrors/CompileErrorsTests.fs @@ -1,9 +1,9 @@ -module MultipleCompileErrorsTests +module CompileErrorsTests open Xunit open FsUnit.Xunit open Exercism.Tests -open MultipleCompileErrors +open CompileErrors [] let ``Add should add numbers`` () = add 1 1 |> should equal 2 diff --git a/tests/CompileErrors/MultipleCompileErrors.fs b/tests/CompileErrors/MultipleCompileErrors.fs deleted file mode 100644 index 38b0bfc..0000000 --- a/tests/CompileErrors/MultipleCompileErrors.fs +++ /dev/null @@ -1,3 +0,0 @@ -module MultipleCompileErrors - -let invalid x y = x + y diff --git a/tests/CompileErrors/expected_results.json b/tests/CompileErrors/expected_results.json index d32e0fb..7374cb9 100644 --- a/tests/CompileErrors/expected_results.json +++ b/tests/CompileErrors/expected_results.json @@ -1,6 +1,6 @@ { "version": 3, "status": "error", - "message": "MultipleCompileErrorsTests.fs(9,37): error FS0039: The value or constructor \u0027add\u0027 is not defined.\nMultipleCompileErrorsTests.fs(12,37): error FS0039: The value or constructor \u0027sub\u0027 is not defined. Maybe you want one of the following:\u001D subsetOf", + "message": "CompileErrorsTests.fs(9,37): error FS0039: The value or constructor \u0027add\u0027 is not defined.\nCompileErrorsTests.fs(12,37): error FS0039: The value or constructor \u0027sub\u0027 is not defined. Maybe you want one of the following:\u001D subsetOf", "tests": [] -} \ No newline at end of file +} From 433538876f2d1fd70cb91f40c3eae271c1529625 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Sun, 8 Mar 2026 09:21:30 +0100 Subject: [PATCH 19/21] Fix .NET 9 projects --- src/Exercism.TestRunner.FSharp/Rewrite.fs | 7 ++++++- .../DotnetNineProject.fs => DotnetNine/DotnetNine.fs} | 2 +- .../DotnetNine.fsproj} | 4 ++-- .../DotnetNineTests.fs} | 4 ++-- .../expected_results.json | 0 5 files changed, 11 insertions(+), 6 deletions(-) rename tests/{DotnetNineProject/DotnetNineProject.fs => DotnetNine/DotnetNine.fs} (71%) rename tests/{DotnetNineProject/DotnetNineProject.fsproj => DotnetNine/DotnetNine.fsproj} (85%) rename tests/{DotnetNineProject/DotnetNineProjectTests.fs => DotnetNine/DotnetNineTests.fs} (87%) rename tests/{DotnetNineProject => DotnetNine}/expected_results.json (100%) diff --git a/src/Exercism.TestRunner.FSharp/Rewrite.fs b/src/Exercism.TestRunner.FSharp/Rewrite.fs index 82a5c88..b52e266 100644 --- a/src/Exercism.TestRunner.FSharp/Rewrite.fs +++ b/src/Exercism.TestRunner.FSharp/Rewrite.fs @@ -70,7 +70,12 @@ let private enableAllTests parsedInput = let private rewriteProjectFile (context: TestRunContext) = let originalProjectFile = File.ReadAllText(context.ProjectFile) - let rewrittenProjectFile = originalProjectFile.Replace("net9.0", "net10.0") + let rewrittenProjectFile = + if originalProjectFile.Contains("") then + originalProjectFile.Replace("net9.0", "net10.0") + else + originalProjectFile.Replace("net9.0", "net10.0") + .Replace("", "Exercism\n ") originalProjectFile, rewrittenProjectFile let rewriteTests (context: TestRunContext) = diff --git a/tests/DotnetNineProject/DotnetNineProject.fs b/tests/DotnetNine/DotnetNine.fs similarity index 71% rename from tests/DotnetNineProject/DotnetNineProject.fs rename to tests/DotnetNine/DotnetNine.fs index ddcc186..47f7202 100644 --- a/tests/DotnetNineProject/DotnetNineProject.fs +++ b/tests/DotnetNine/DotnetNine.fs @@ -1,4 +1,4 @@ -module DotnetNineProject +module DotnetNine let add x y = x + y diff --git a/tests/DotnetNineProject/DotnetNineProject.fsproj b/tests/DotnetNine/DotnetNine.fsproj similarity index 85% rename from tests/DotnetNineProject/DotnetNineProject.fsproj rename to tests/DotnetNine/DotnetNine.fsproj index b7911f1..34fff5b 100644 --- a/tests/DotnetNineProject/DotnetNineProject.fsproj +++ b/tests/DotnetNine/DotnetNine.fsproj @@ -6,8 +6,8 @@ - - + + diff --git a/tests/DotnetNineProject/DotnetNineProjectTests.fs b/tests/DotnetNine/DotnetNineTests.fs similarity index 87% rename from tests/DotnetNineProject/DotnetNineProjectTests.fs rename to tests/DotnetNine/DotnetNineTests.fs index b66fdd3..89aa581 100644 --- a/tests/DotnetNineProject/DotnetNineProjectTests.fs +++ b/tests/DotnetNine/DotnetNineTests.fs @@ -1,9 +1,9 @@ -module DotnetNineProjectTests +module DotnetNineTests open Xunit open FsUnit.Xunit open Exercism.Tests -open DotnetNineProject +open DotnetNine [] let ``Add should add numbers`` () = add 1 1 |> should equal 2 diff --git a/tests/DotnetNineProject/expected_results.json b/tests/DotnetNine/expected_results.json similarity index 100% rename from tests/DotnetNineProject/expected_results.json rename to tests/DotnetNine/expected_results.json From 8e7a73c3cc3e74f2f8d143223778a0f92c370840 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Sun, 8 Mar 2026 09:34:18 +0100 Subject: [PATCH 20/21] Fix Fscheck tests --- .../DifferentTypesOfTestsTests.fs | 8 ++-- .../expected_results.json | 42 ++++++++++++------- 2 files changed, 32 insertions(+), 18 deletions(-) diff --git a/tests/DifferentTypesOfTests/DifferentTypesOfTestsTests.fs b/tests/DifferentTypesOfTests/DifferentTypesOfTestsTests.fs index 5e4a561..e945ee3 100644 --- a/tests/DifferentTypesOfTests/DifferentTypesOfTestsTests.fs +++ b/tests/DifferentTypesOfTests/DifferentTypesOfTestsTests.fs @@ -2,11 +2,12 @@ module DifferentTypesOfTestsTests open System open System.Threading.Tasks + +open FsCheck.FSharp open Xunit open FsUnit.Xunit open FsCheck open FsCheck.Xunit -open Exercism.Tests open DifferentTypesOfTests type CustomPropertyAttribute() = @@ -14,8 +15,9 @@ type CustomPropertyAttribute() = type Letters = static member Chars () = - Arb.Default.Char() - |> Arb.filter (fun c -> 'A' <= c && c <= 'Z') + ArbMap.defaults + |> ArbMap.arbitrary + |> Arb.mapFilter id (fun c -> 'A' <= c && c <= 'Z') type LetterAttribute () = inherit PropertyAttribute(Arbitrary = [| typeof |]) diff --git a/tests/DifferentTypesOfTests/expected_results.json b/tests/DifferentTypesOfTests/expected_results.json index 7c1f09e..28d8dc0 100644 --- a/tests/DifferentTypesOfTests/expected_results.json +++ b/tests/DifferentTypesOfTests/expected_results.json @@ -2,11 +2,6 @@ "version": 3, "status": "fail", "tests": [ - { - "name": "Add should add numbers", - "status": "pass", - "test_code": "add 1 1 |\u003E should equal 2" - }, { "name": "Add should add more numbers", "status": "pass", @@ -18,28 +13,45 @@ "message": "Test execution timed out after 20 milliseconds", "test_code": "Task.Delay(TimeSpan.FromMilliseconds(100.0))" }, + { + "name": "Letter should be uppercase", + "status": "pass", + "test_code": "Char.IsUpper(letter) |\u003E should equal true" + }, + { + "name": "Div should divide numbers", + "status": "pass", + "test_code": "Prop.throws\u003CDivideByZeroException, int\u003E (new Lazy\u003Cint\u003E(fun () -\u003E x / 0))" + }, + { + "name": "Add should add numbers", + "status": "pass", + "test_code": "add 1 1 |\u003E should equal 2" + }, + { + "name": "Add should add numbers", + "status": "pass", + "test_code": "add 1 1 |\u003E should equal 2" + }, { "name": "Sub should subtract numbers", "status": "pass", - "test_code": "sub x y |\u003E should equal expected" + "test_code": "sub 7 3 |\u003E should equal 4" }, { - "name": "Mul should multiply numbers", + "name": "Sub should subtract numbers", "status": "pass", - "output": "Ok, passed 100 tests.", - "test_code": "mul x y |\u003E should equal (x * y)" + "test_code": "sub 7 3 |\u003E should equal 4" }, { - "name": "Letter should be uppercase", + "name": "Mul should multiply numbers", "status": "pass", - "output": "Ok, passed 100 tests.", - "test_code": "Char.IsUpper(letter) |\u003E should equal true" + "test_code": "mul 2 3 |\u003E should equal 6" }, { - "name": "Div should divide numbers", + "name": "Mul should multiply numbers", "status": "pass", - "output": "Ok, passed 100 tests.", - "test_code": "Prop.throws\u003CDivideByZeroException, int\u003E (new Lazy\u003Cint\u003E(fun () -\u003E x / 0))" + "test_code": "mul 2 3 |\u003E should equal 6" } ] } \ No newline at end of file From 1531117e4e1cb521d1397d43b86dc8cdcf9c579e Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Sun, 8 Mar 2026 10:00:11 +0100 Subject: [PATCH 21/21] Fix failing tests --- src/Exercism.TestRunner.FSharp/Testing.fs | 2 +- tests/CompileErrors/expected_results.json | 2 +- .../QuotedAndUnqotedTestNames.fs} | 2 +- .../QuotedAndUnqotedTestNames.fsproj} | 4 ++-- .../QuotedAndUnqotedTestNamesTests.fs} | 4 ++-- .../expected_results.json | 0 6 files changed, 7 insertions(+), 7 deletions(-) rename tests/{QuotedAndUnqotedTests/QuotedAndUnquotedTests.fs => QuotedAndUnqotedTestNames/QuotedAndUnqotedTestNames.fs} (56%) rename tests/{QuotedAndUnqotedTests/QuotedAndUnquotedTests.fsproj => QuotedAndUnqotedTestNames/QuotedAndUnqotedTestNames.fsproj} (84%) rename tests/{QuotedAndUnqotedTests/QuotedAndUnquotedTestsTests.fs => QuotedAndUnqotedTestNames/QuotedAndUnqotedTestNamesTests.fs} (78%) rename tests/{QuotedAndUnqotedTests => QuotedAndUnqotedTestNames}/expected_results.json (100%) diff --git a/src/Exercism.TestRunner.FSharp/Testing.fs b/src/Exercism.TestRunner.FSharp/Testing.fs index 9aae487..e8b6da3 100644 --- a/src/Exercism.TestRunner.FSharp/Testing.fs +++ b/src/Exercism.TestRunner.FSharp/Testing.fs @@ -237,7 +237,7 @@ module DotnetCli = else error.[lastPathIndex + 1..] - let private removeProjectReference (error: string) = error.[0..(error.LastIndexOf('[') - 1)] + let private removeProjectReference (error: string) = error[.. error.LastIndexOf('[') - 1] let private normalizeBuildError error = error diff --git a/tests/CompileErrors/expected_results.json b/tests/CompileErrors/expected_results.json index 7374cb9..a3e4eaa 100644 --- a/tests/CompileErrors/expected_results.json +++ b/tests/CompileErrors/expected_results.json @@ -3,4 +3,4 @@ "status": "error", "message": "CompileErrorsTests.fs(9,37): error FS0039: The value or constructor \u0027add\u0027 is not defined.\nCompileErrorsTests.fs(12,37): error FS0039: The value or constructor \u0027sub\u0027 is not defined. Maybe you want one of the following:\u001D subsetOf", "tests": [] -} +} \ No newline at end of file diff --git a/tests/QuotedAndUnqotedTests/QuotedAndUnquotedTests.fs b/tests/QuotedAndUnqotedTestNames/QuotedAndUnqotedTestNames.fs similarity index 56% rename from tests/QuotedAndUnqotedTests/QuotedAndUnquotedTests.fs rename to tests/QuotedAndUnqotedTestNames/QuotedAndUnqotedTestNames.fs index 751463d..f2c3a5e 100644 --- a/tests/QuotedAndUnqotedTests/QuotedAndUnquotedTests.fs +++ b/tests/QuotedAndUnqotedTestNames/QuotedAndUnqotedTestNames.fs @@ -1,4 +1,4 @@ -module QuotedAndUnquotedTests +module QuotedAndUnqotedTestNames let add x y = x + y diff --git a/tests/QuotedAndUnqotedTests/QuotedAndUnquotedTests.fsproj b/tests/QuotedAndUnqotedTestNames/QuotedAndUnqotedTestNames.fsproj similarity index 84% rename from tests/QuotedAndUnqotedTests/QuotedAndUnquotedTests.fsproj rename to tests/QuotedAndUnqotedTestNames/QuotedAndUnqotedTestNames.fsproj index 8f94374..79a6c48 100644 --- a/tests/QuotedAndUnqotedTests/QuotedAndUnquotedTests.fsproj +++ b/tests/QuotedAndUnqotedTestNames/QuotedAndUnqotedTestNames.fsproj @@ -7,8 +7,8 @@ - - + + diff --git a/tests/QuotedAndUnqotedTests/QuotedAndUnquotedTestsTests.fs b/tests/QuotedAndUnqotedTestNames/QuotedAndUnqotedTestNamesTests.fs similarity index 78% rename from tests/QuotedAndUnqotedTests/QuotedAndUnquotedTestsTests.fs rename to tests/QuotedAndUnqotedTestNames/QuotedAndUnqotedTestNamesTests.fs index d9aadfd..f131b1f 100644 --- a/tests/QuotedAndUnqotedTests/QuotedAndUnquotedTestsTests.fs +++ b/tests/QuotedAndUnqotedTestNames/QuotedAndUnqotedTestNamesTests.fs @@ -1,9 +1,9 @@ -module QuotedAndUnquotedTestsTests +module QuotedAndUnqotedTestNamesTests open Xunit open FsUnit.Xunit open Exercism.Tests -open QuotedAndUnquotedTests +open QuotedAndUnqotedTestNames [] let ``Add should add numbers`` () = add 1 1 |> should equal 2 diff --git a/tests/QuotedAndUnqotedTests/expected_results.json b/tests/QuotedAndUnqotedTestNames/expected_results.json similarity index 100% rename from tests/QuotedAndUnqotedTests/expected_results.json rename to tests/QuotedAndUnqotedTestNames/expected_results.json