docs: Use gotestsum in Unit test reports Go example
What does this MR do?
Change the Go example on https://docs.gitlab.com/ee/ci/unit_test_reports.html to use gotestsum instead of go-junit-report.
go-junit-report has not been updated in over a year. It was written before go test added JSON output and suffers from a few problems that unfortunately make it an unreliable tool in CI.
gotestsum is a better option for a number of reasons:
- the
go testoutput is parsed bytest2jsonwhich is maintained by the Go core team, and is much more widely used (most IDEs use this same parsing). It is much less likely to contain bugs than the custom parsing ingo-junit-report(which was written beforetest2jsonexisted. - by running
go testas a subprocess the exit code is always reliable.gotestsumalways uses the exit code fromgo testas its own exit code. From the old example we can see thatgo-junit-reportrequired a flag to do this, and I believe in some cases even that is unreliable (see next point). - by running
go testas a subprocess any build errors sent tostderrcan be captured.go-junit-reportwould miss these errors, and would not be able to properly report the exit status of a test run where some packages failed to build - by running
go testas a subprocess,gotestsumis able to format the test output nicely, instead of hiding it all from the user. - in addition to being actively maintained,
gotestsumis always more widely used
Author's checklist
-
Follow the Documentation Guidelines and Style Guide. -
Ensure that the product tier badge is added to doc's h1. -
Request a review based on the documentation page's metadata and associated Technical Writer.
To avoid having this MR be added to code verification QA issues, don't add these labels: feature, frontend, backend, ~"bug", or database
Review checklist
Documentation-related MRs should be reviewed by a Technical Writer for a non-blocking review, based on Documentation Guidelines and the Style Guide.
-
If the content requires it, ensure the information is reviewed by a subject matter expert. - Technical writer review items:
-
Ensure docs metadata is present and up-to-date. -
Ensure the appropriate labels are added to this MR. - If relevant to this MR, ensure content topic type principles are in use, including:
-
The headings should be something you'd do a Google search for. Instead of Default behavior, say something likeDefault behavior when you close an issue. -
The headings (other than the page title) should be active. Instead of Configuring GDK, say something likeConfigure GDK. -
Any task steps should be written as a numbered list. - If the content still needs to be edited for topic types, you can create a follow-up issue with the docs-technical-debt label.
-
-
-
Review by assigned maintainer, who can always request/require the above reviews. Maintainer's review can occur before or after a technical writer review. -
Ensure a release milestone is set.
Edited by Daniel Nephin