Skip to content
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

Merged
merged 4 commits into from
Mar 6, 2023
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 17.3.0

* Better test project detection [#800](https://github.com/fsprojects/FSharp.Formatting/issues/800)

## 17.2.3

* Fix external docs link [#794](https://github.com/fsprojects/FSharp.Formatting/issues/794)
Expand Down
5 changes: 4 additions & 1 deletion src/fsdocs-tool/ProjectCracker.fs
Original file line number Diff line number Diff line change
Expand Up @@ -426,8 +426,11 @@ module Crack =
let projectFiles =
projectFiles
|> List.choose (fun s ->
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
Copy link
Collaborator

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)

Copy link
Collaborator Author

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

Copy link
Collaborator Author

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.

image

Copy link
Collaborator

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?

Copy link
Collaborator Author

@nhirschey nhirschey Mar 3, 2023

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).

printfn " skipping project '%s' because it looks like a test project" (Path.GetFileName s)

None
else
Some s)
Expand Down