Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit252ab7d

Browse files
smoothdeveloperdsyme
authored andcommitted
add "Other Tips" notes to TESTGUIDE.md and a script to update baseline files under test/fsharp (#5117)
* * helper script to update baseline files under tests/fsharp* rework "Other Tips" section to expand on the system of baselines files used in FSharp Test Suite* add the script to the project where it is most likely to be useful
1 parent3f39201 commit252ab7d

File tree

3 files changed

+51
-6
lines changed

3 files changed

+51
-6
lines changed

‎TESTGUIDE.md‎

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,11 @@ The F# tests are split as follows:
3939
This is compiled using[tests\fsharp\FSharp.Tests.FSharpSuite.fsproj](tests/fsharp/FSharp.Tests.FSharpSuite.fsproj) to a unit test DLL which acts as a driver script. Each individual test is an NUnit test case, and so you can run it like any other NUnit test.
4040

4141
Tests are grouped in folders per area. Each test compiles and executes a`test.fsx|fs` file in its folder using some combination of compiler or FSI flags specified in the FSharpSuite test project.
42-
If the compilation and execution encounter no errors, the test is considered to have passed.
42+
If the compilation and execution encounter no errors, the test is considered to have passed.
43+
44+
There are also negative tests checking code expected to fail compilation.
45+
46+
See note about baseline under "Other Tips" bellow for tests checking expectations against "baseline" files.
4347

4448
###FSharpQA Suite
4549

@@ -81,9 +85,22 @@ All test execution logs and result files will be dropped into the `tests\TestRes
8185

8286
###Other Tips
8387

84-
* Run as Administrator, or a handful of tests will fail
88+
####Run as Administrator
89+
90+
Do this, or a handful of tests will fail.
91+
92+
####Making the tests run faster
93+
94+
* NGen-ing the F# bits (fsc, fsi, FSharp.Core, etc) will result in tests executing much faster. Make sure you run`src\update.cmd` with the`-ngen` flag before running tests.
95+
* The FSharp and FSharpQA suites will run test cases in parallel by default. You can comment out the relevant line (look for`PARALLEL_ARG`) to disable this.
96+
* By default, tests from the FSharpQA suite are run using a persistent, hosted version of the compiler. This speeds up test execution, as there is no need for the`fsc.exe` process to spin up repeatedly. To disable this, uncomment the relevant line (look for`HOSTED_COMPILER`).
97+
98+
####Test outcome against baseline
99+
100+
FSharp Test Suite works with couples of .bsl (or .bslpp) files considered "expected" and called baseline, those are matched against the actual output which resides under .err or .vserr files of same name at the during test execution.
101+
102+
When working on changes generating conflicts with the baseline, you can use the helper script[tests/fsharp/update.base.line.with.actuals.fsx](tests/fsharp/update.base.line.with.actuals.fsx) to update all .bsl based on the matching .err file.
103+
104+
When doing so keep in mind to carefully review the diff before comitting updated baseline files.
85105

86-
* Making the tests run faster
87-
* NGen-ing the F# bits (fsc, fsi, FSharp.Core, etc) will result in tests executing much faster. Make sure you run`src\update.cmd` with the`-ngen` flag before running tests.
88-
* The FSharp and FSharpQA suites will run test cases in parallel by default. You can comment out the relevant line (look for`PARALLEL_ARG`) to disable this.
89-
* By default, tests from the FSharpQA suite are run using a persistent, hosted version of the compiler. This speeds up test execution, as there is no need for the`fsc.exe` process to spin up repeatedly. To disable this, uncomment the relevant line (look for`HOSTED_COMPILER`).
106+
.bslpp (baseline pre-process) files are specially designed to enable substitution of certain tokens to generate the .bsl file. You can look further about the pre-processing logic under[tests/fsharp/TypeProviderTests.fs](tests/fsharp/TypeProviderTests.fs), this is used only for type provider tests for now.

‎tests/fsharp/FSharp.Tests.FSharpSuite.fsproj‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
<CompileInclude="tests.fs" />
4040
<ContentInclude="packages.config" />
4141
<NoneInclude="app.config" />
42+
<NoneInclude="update.base.line.with.actuals.fsx" />
4243
</ItemGroup>
4344
<ItemGroup>
4445
<ReferenceInclude="mscorlib" />
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
openSystem.IO
2+
3+
// this script is usefull for tests using a .bsl file (baseline) containing expected compiler output
4+
// which is matched against .vserr or .err file aside once the test has run
5+
// the script replaces all the .bsl/.bslpp with either .err or .vserr
6+
7+
letdirectories=
8+
[
9+
"typecheck/sigs"
10+
"typeProviders/negTests"
11+
]
12+
|> List.map(fun d-> Path.Combine(__SOURCE_DIRECTORY__, d)|> DirectoryInfo)
13+
14+
letextensionPatterns=["*.err";"*.vserr"]
15+
for din directoriesdo
16+
for pin extensionPatternsdo
17+
for errFilein d.GetFiles pdo
18+
letbaseLineFile= FileInfo(Path.ChangeExtension(errFile.FullName,"bsl"))
19+
letbaseLineFilePreProcess= FileInfo(Path.ChangeExtension(errFile.FullName,"bslpp"))
20+
21+
if File.ReadAllText(errFile.FullName)<> File.ReadAllText(baseLineFile.FullName)then
22+
letexpectedFile=
23+
if baseLineFilePreProcess.Existsthen baseLineFilePreProcess
24+
else baseLineFile
25+
26+
printfn"%s not matching, replacing with%s" expectedFile.FullName errFile.FullName
27+
errFile.CopyTo(expectedFile.FullName,true)|> ignore

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp