From 2c50adef12fbf2e56c2a367d1d1a5a70a85e1637 Mon Sep 17 00:00:00 2001 From: Martin521 <29605222+Martin521@users.noreply.github.com> Date: Sun, 22 Feb 2026 15:50:59 +0100 Subject: [PATCH 1/7] added examples; moved to xunit.v3 --- .vscode/launch.json | 4 ++-- docs/examples/testing/README.md | 10 ++++++++++ docs/examples/testing/explore.fs | 5 +++++ docs/examples/testing/mylib/Directory.Build.props | 5 +++++ docs/examples/testing/mylib/Library.fs | 3 +++ docs/examples/testing/mylib/mylib.fsproj | 11 +++++++++++ docs/examples/testing/tests.fs | 13 +++++++++++++ tests/Runfs.Tests/Runfs.Tests.fsproj | 13 ++----------- 8 files changed, 51 insertions(+), 13 deletions(-) create mode 100644 docs/examples/testing/README.md create mode 100644 docs/examples/testing/explore.fs create mode 100644 docs/examples/testing/mylib/Directory.Build.props create mode 100644 docs/examples/testing/mylib/Library.fs create mode 100644 docs/examples/testing/mylib/mylib.fsproj create mode 100644 docs/examples/testing/tests.fs diff --git a/.vscode/launch.json b/.vscode/launch.json index eda6d16..6f55b45 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -9,8 +9,8 @@ "type": "coreclr", "request": "launch", "program": "${workspaceFolder}/artifacts/bin/Runfs/debug/Runfs.dll", - "args": ["--verbose", "tests/Runfs.Tests/TestFiles/test1.fs", "arg1", "arg2"], - "cwd": "${workspaceFolder}", + "args": ["--verbose", "DirectivesTests.fs"], + "cwd": "${workspaceFolder}/tests/FileBased/", "stopAtEntry": false, "console": "internalConsole", "preLaunchTask": "Build: Runfs.fsproj" diff --git a/docs/examples/testing/README.md b/docs/examples/testing/README.md new file mode 100644 index 0000000..372166b --- /dev/null +++ b/docs/examples/testing/README.md @@ -0,0 +1,10 @@ +# Using runfs for library testing + +## Explorative testing + +Just create an ad-hoc driver file (see example file `explore.fs`), add a project reference and start testing your library API by running `dotnet runfs explore.fs`. + +## Unit test development / fixes + +Rather than building a test project, discovering the tests, selecting the one you are interested in and running it, you just add the project reference and the test framework package reference to the test file you are interested in (see example file `tests.fs`, using xunit.v3) and run it with runfs (here: `dotnet runfs tests.fs`). + diff --git a/docs/examples/testing/explore.fs b/docs/examples/testing/explore.fs new file mode 100644 index 0000000..0dbfb47 --- /dev/null +++ b/docs/examples/testing/explore.fs @@ -0,0 +1,5 @@ +#r_project "D:/fsharp/projects/div/Runfs/docs/examples/testing/mylib/mylib.fsproj" + +open Mylib + +printfn $"Hello {x}" diff --git a/docs/examples/testing/mylib/Directory.Build.props b/docs/examples/testing/mylib/Directory.Build.props new file mode 100644 index 0000000..c339825 --- /dev/null +++ b/docs/examples/testing/mylib/Directory.Build.props @@ -0,0 +1,5 @@ + + + true + + diff --git a/docs/examples/testing/mylib/Library.fs b/docs/examples/testing/mylib/Library.fs new file mode 100644 index 0000000..4b5de8c --- /dev/null +++ b/docs/examples/testing/mylib/Library.fs @@ -0,0 +1,3 @@ +module Mylib + +let x = 42 diff --git a/docs/examples/testing/mylib/mylib.fsproj b/docs/examples/testing/mylib/mylib.fsproj new file mode 100644 index 0000000..b35881d --- /dev/null +++ b/docs/examples/testing/mylib/mylib.fsproj @@ -0,0 +1,11 @@ + + + + net10.0 + + + + + + + diff --git a/docs/examples/testing/tests.fs b/docs/examples/testing/tests.fs new file mode 100644 index 0000000..f351690 --- /dev/null +++ b/docs/examples/testing/tests.fs @@ -0,0 +1,13 @@ +module Mylib.Tests + +#r_package "xunit.v3.mtp-v2@3.2.2" +#r_project "mylib/mylib.fsproj" + +#nowarn 988 + +open Xunit +open Mylib + +[] +let test1 () = + Assert.Equal(x, 42) diff --git a/tests/Runfs.Tests/Runfs.Tests.fsproj b/tests/Runfs.Tests/Runfs.Tests.fsproj index 2263448..ef64dd3 100644 --- a/tests/Runfs.Tests/Runfs.Tests.fsproj +++ b/tests/Runfs.Tests/Runfs.Tests.fsproj @@ -1,23 +1,14 @@ net10.0 + Exe - - - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - + From 09f9ff9111f2a3d12add3fc226e3a3b067478a20 Mon Sep 17 00:00:00 2001 From: Martin521 <29605222+Martin521@users.noreply.github.com> Date: Sun, 22 Feb 2026 15:55:06 +0100 Subject: [PATCH 2/7] changelog update --- CHANGELOG.md | 10 ++++++++++ src/Runfs/Runfs.fsproj | 11 +++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0acc9bc..6cdbcaa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # CHANGELOG +## 1.0.10 + +### added + +* documentation examples + +### changed + +* moved to xunit.v3 + ## 1.0.9 * changed global and target framework to net10 diff --git a/src/Runfs/Runfs.fsproj b/src/Runfs/Runfs.fsproj index a82ee05..e11908f 100644 --- a/src/Runfs/Runfs.fsproj +++ b/src/Runfs/Runfs.fsproj @@ -2,7 +2,7 @@ Runfs - 1.0.9 + 1.0.10 "dotnet run app.cs" functionality for F#. Copyright 2025 by Martin521 Martin521 and contributors @@ -15,12 +15,15 @@ True runfs -## 1.0.9 +## 1.0.10 + +### added + +* documentation examples ### changed -* changed global and target framework to net10 -* updated README +* moved to xunit.v3 true From fa9d9f5cf7804dfe60bc5726edde8f5f5ee51770 Mon Sep 17 00:00:00 2001 From: Martin521 <29605222+Martin521@users.noreply.github.com> Date: Sun, 22 Feb 2026 16:01:26 +0100 Subject: [PATCH 3/7] added README link --- .vscode/launch.json | 4 ++-- README.md | 2 +- docs/examples/testing/README.md | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 6f55b45..eda6d16 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -9,8 +9,8 @@ "type": "coreclr", "request": "launch", "program": "${workspaceFolder}/artifacts/bin/Runfs/debug/Runfs.dll", - "args": ["--verbose", "DirectivesTests.fs"], - "cwd": "${workspaceFolder}/tests/FileBased/", + "args": ["--verbose", "tests/Runfs.Tests/TestFiles/test1.fs", "arg1", "arg2"], + "cwd": "${workspaceFolder}", "stopAtEntry": false, "console": "internalConsole", "preLaunchTask": "Build: Runfs.fsproj" diff --git a/README.md b/README.md index 23ae9a2..d9eebb9 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ The source file can contain directives to reference libraries and to influence t Because of a) concerns of parts of the F# community about having two similar tools (`dotnet fsi script.fsx` and `dotnet runfs app.fs`) and b) missing "market pull", I have currently no further plans for this project. -The tool is still available as dotnet tool and can be useful especially for ad-hoc testing of library projects. +The tool is still available as dotnet tool and can be useful especially for [ad-hoc testing of library projects](docs/examples/testing/README.md). ## Usage diff --git a/docs/examples/testing/README.md b/docs/examples/testing/README.md index 372166b..246433d 100644 --- a/docs/examples/testing/README.md +++ b/docs/examples/testing/README.md @@ -2,7 +2,7 @@ ## Explorative testing -Just create an ad-hoc driver file (see example file `explore.fs`), add a project reference and start testing your library API by running `dotnet runfs explore.fs`. +Just create an ad-hoc driver file (see example file `explore.fs` in this directory), add a project reference and start testing your library API by running `dotnet runfs explore.fs`. ## Unit test development / fixes From 346b30085b753628c31fc0cef96ec1bd20517a9e Mon Sep 17 00:00:00 2001 From: Martin521 <29605222+Martin521@users.noreply.github.com> Date: Sun, 22 Feb 2026 16:10:41 +0100 Subject: [PATCH 4/7] added MTP entry to global.json --- global.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/global.json b/global.json index 69e101b..7cceb99 100644 --- a/global.json +++ b/global.json @@ -3,5 +3,8 @@ "version": "10.0.100", "rollForward": "latestMinor", "allowPrerelease": false + }, + "test": { + "runner": "Microsoft.Testing.Platform" } -} \ No newline at end of file +} From 8671e3df8145595346c090ae1a277eb113bf7473 Mon Sep 17 00:00:00 2001 From: Martin521 <29605222+Martin521@users.noreply.github.com> Date: Wed, 26 Aug 2026 11:18:12 +0200 Subject: [PATCH 5/7] trusted publishing --- .github/workflows/release.yaml | 11 ++++++++++- CHANGELOG.md | 1 + README.md | 3 ++- src/Runfs/Runfs.fsproj | 1 + 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 8fb06ce..df79598 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -12,6 +12,9 @@ jobs: publish: runs-on: ubuntu-latest + permissions: + id-token: write + steps: - uses: actions/checkout@v4 - uses: actions/setup-dotnet@v4 @@ -27,10 +30,16 @@ jobs: - name: Pack run: dotnet pack + + - name: Nuget login + uses: Nuget/login@v1 + id: login + with: + user: Martin521 - name: Push to nuget.org env: VERSION: ${{ github.ref_name }} run: dotnet nuget push "./artifacts/package/release/runfs.${VERSION}.nupkg" --source https://api.nuget.org/v3/index.json - --api-key ${{ secrets.NUGET_KEY }} + --api-key ${{steps.login.outputs.NUGET_API_KEY}} diff --git a/CHANGELOG.md b/CHANGELOG.md index 6cdbcaa..57989eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ ### changed * moved to xunit.v3 +* moved nuget push to "Trusted Publishing" ## 1.0.9 diff --git a/README.md b/README.md index d9eebb9..7e8fe33 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,8 @@ I started by looking into extending the sdk code to accomodate F# input. This wo Main learnings - This has to be about running .fs files, not scripts. - A small compiler change is needed to allow for the directive format. -- The most important missing piece is editor support. +- Runfs depends on the SDK version. Therefore, it can only be a demonstrator for a real `dotnet run app.fs` +- The other important missing piece is editor support. ## TODOs diff --git a/src/Runfs/Runfs.fsproj b/src/Runfs/Runfs.fsproj index e11908f..44edae6 100644 --- a/src/Runfs/Runfs.fsproj +++ b/src/Runfs/Runfs.fsproj @@ -24,6 +24,7 @@ ### changed * moved to xunit.v3 +* moved nuget push to "Trusted Publishing" true From 924a3fef360cead8e03fbe8c879f3cfbf297c496 Mon Sep 17 00:00:00 2001 From: Martin521 <29605222+Martin521@users.noreply.github.com> Date: Wed, 26 Aug 2026 11:57:46 +0200 Subject: [PATCH 6/7] updated actions, global.json --- .github/workflows/main.yaml | 4 ++-- .github/workflows/release.yaml | 4 ++-- CHANGELOG.md | 1 + global.json | 2 +- src/Runfs/Runfs.fsproj | 2 +- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 9428203..db12ae8 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -17,10 +17,10 @@ jobs: os: [ ubuntu-latest, windows-latest ] steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v7 - name: Setup .NET Core - uses: actions/setup-dotnet@v4 + uses: actions/setup-dotnet@v6 - name: Restore run: dotnet restore diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index df79598..4ab4565 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -16,8 +16,8 @@ jobs: id-token: write steps: - - uses: actions/checkout@v4 - - uses: actions/setup-dotnet@v4 + - uses: actions/checkout@v7 + - uses: actions/setup-dotnet@v6 - name: Restore dependencies run: dotnet restore diff --git a/CHANGELOG.md b/CHANGELOG.md index 57989eb..50a8bf2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ * moved to xunit.v3 * moved nuget push to "Trusted Publishing" +* updated actions and global.json ## 1.0.9 diff --git a/global.json b/global.json index 7cceb99..cb387d4 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "10.0.100", + "version": "10.0.400", "rollForward": "latestMinor", "allowPrerelease": false }, diff --git a/src/Runfs/Runfs.fsproj b/src/Runfs/Runfs.fsproj index a96b477..704c5d5 100644 --- a/src/Runfs/Runfs.fsproj +++ b/src/Runfs/Runfs.fsproj @@ -3,7 +3,6 @@ Runfs 1.0.10 - 1.0.10 "dotnet run app.cs" functionality for F#. Copyright 2025 by Martin521 Martin521 and contributors @@ -31,6 +30,7 @@ * moved to xunit.v3 * moved nuget push to "Trusted Publishing" +* updated actions and global.json true From eb4fff35309bf3f91fb9b3c11e874579a91c48bb Mon Sep 17 00:00:00 2001 From: Martin521 <29605222+Martin521@users.noreply.github.com> Date: Wed, 26 Aug 2026 12:16:55 +0200 Subject: [PATCH 7/7] v11 --- CHANGELOG.md | 2 +- src/Runfs/Runfs.fsproj | 7 +------ 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 50a8bf2..2811445 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # CHANGELOG -## 1.0.10 +## 1.0.11 ### added diff --git a/src/Runfs/Runfs.fsproj b/src/Runfs/Runfs.fsproj index 704c5d5..cc08e27 100644 --- a/src/Runfs/Runfs.fsproj +++ b/src/Runfs/Runfs.fsproj @@ -2,7 +2,7 @@ Runfs - 1.0.10 + 1.0.11 "dotnet run app.cs" functionality for F#. Copyright 2025 by Martin521 Martin521 and contributors @@ -19,11 +19,6 @@ ### added -* documentation examples -## 1.0.10 - -### added - * documentation examples ### changed