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

Test projects #801

merged 4 commits into from
Mar 6, 2023

Conversation

nhirschey
Copy link
Collaborator

@nhirschey nhirschey commented Mar 1, 2023

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

if s.Contains("tests\\FSharp") then

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

if s.Contains("FSharp.ApiDocs.Tests") || s.Contains("FSharp.Formatting.TestHelpers")

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

Copy link
Collaborator

@nojaf nojaf left a 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!

@nojaf nojaf merged commit 1f3dab5 into main Mar 6, 2023
@nojaf nojaf deleted the test-projects branch March 6, 2023 13:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Better "Tests" detection
2 participants