-
Notifications
You must be signed in to change notification settings - Fork 158
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Test projects #801
Test projects #801
Conversation
src/fsdocs-tool/ProjectCracker.fs
Outdated
if s.Contains(".Tests") || s.Contains("test") then | ||
// Other libraries' test projects will be filtered out by projInfos later on, | ||
// but this make sure FSharp.Formatting.ApiDocs test projects get excluded. | ||
if s.Contains("tests\\FSharp") then |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are you sure about this bit?
When I commented out the |> List.choose
I was able to run all the tests just fine.
(I ran dotnet run --project .\build\build.fsproj -- -t Tests
at the root)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The tests run fine, the problem is that FSharp.Formatting tests run on regular (non-test) projects such as this one: https://github.com/fsprojects/FSharp.Formatting/blob/main/tests/FSharp.ApiDocs.Tests/files/crefLib1/crefLib1.fsproj
crefLib1 itself is not a test project, so if we do not exclude it explicitly somehow then crefLib1 will be added to FSharp.Formatting's api reference here: https://fsprojects.github.io/FSharp.Formatting/reference/index.html
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here's what it looks like if I delete the |> List.choose
lines, build the library and then run
src\fsdocs-tool\bin\Debug\net7.0\fsdocs.exe watch`
Note the extra libraries added to docs. I'm not sure what the best way to exclude them was ... I know what I did is a hack, slightly more strict than what was there before but still more general than we'd probably like.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah ok, I see. Thanks for clarifying that.
In that case, I would go for a slightly more strict approach like:
let fsharpFormattingTestProjectMarker = $"FSharp.ApiDocs.Tests{Path.DirectorySeparatorChar}files"
projectFiles
|> List.filter (fun s ->
let isTestProject = s.Contains fsharpFormattingTestProjectMarker
if isTestProject then
printfn
$" skipping project '%s{Path.GetFileName s}' because it is a project part of the FSharp.Formatting test suite."
not isTestProject)
To really put emphasis on those selected projects that we are excluding.
The Path.DirectorySeparatorChar
would make it work cross-platform, I'm not sure the current solution would.
What do you think?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure, I just pushed a more strict version based on your suggestion plus the required filtering out of tests/FSharp.Formatting.TestHelpers/FSharp.Formatting.TestHelpers.fsproj
. The test helpers project will otherwise show up in FSharp.Formatting API docs (same reason as discussed earlier in thread).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, I forgot about this 🙈.
Thank you for this PR!
Fixes #800. Mostly relies on projInfos now to exclude test projects, but for building FSharp.Formatting docs correctly we need custom code to exclude this library's own test projects from the ApiDocs.
I exclude FSharp.Formatting test projects using
We could be more explicit, such as below, but then if a future person adds additional test projects to this library they might forget to explicitly exclude them