Uh oh!
There was an error while loading. Please reload this page.
FsharpSuite.tests reduction diet - #14590
Conversation
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
This reverts commit d0dfdb9.
…west CI job (#14752) * Revert "Revert "FsharpSuite.tests reduction diet (#14590)" (#14742)" This reverts commit a8e39b3. * Fix build * #load ing shims for scripting tests (especially 'exit') so that they can work in process * Fixing failing widen tests, but breaking new 'printfn with static literals' feature * Try to make **both** implicit conversions and non-inline strings in printfn work * Skip failing test on MacOs * Disable one more (also nuget-related) test on MacOs
FsharpSuite.Tests is the longest taking test suite in the longest CI job.
By making it faster, we can speed up end-to-end time for our builds and therefore reduce contributor pain.
The nature of the older test suite was by copying over test directories, emiting an artificial fsproj, and running it with "dotnet run" command. This naturally involved a lot of process creations and IO operations.
The newer test suite in component tests avoids unnecessary process spawns and therefore has smaller per-test overhead, while still maintaining the ability to run the tests with various command line switches like:
debug+/-
optimize+/-
The test definitions were copy pasted as is.
The test invocations functions have been reimplemented in the in-memory test framework.
In a few cases, the test scripts did have some hardcoded assumptions about it's current directory, available files etc. -> fixing those to make the tests run were the only (necessary) changes done to the test files themselves.
For the tests being ported, this lead to a reduction from ~15 minutes to less than 5.
There is still potential to go faster by reusing FSI environments instead of re-creating, but that made some of the tests depend on each other due to naming clashes and that was not good.
So even if it is slightly slower, each test now has a fresh environment.