mirror of
https://github.com/yuin/goldmark
synced 2025-03-04 23:04:52 +00:00
Currently, the DoTestCase, DoTestCaseFile, and DoTestCases functions,
are exposed as part of the public interface.
func DoTestCase(m Markdown, testCase MarkdownTestCase, t *testing.T)
func DoTestCaseFile(m Markdown, filename string, t *testing.T)
func DoTestCases(m goldmark.Markdown, cases []MarkdownTestCase, t *testing.T)
Implementing these functions requires importing the `testing` package.
Importing the `testing` package [automatically registers][1] a number of
global [command line flags][2].
[1]: https://golang.org/src/testing/testing.go#L252
[2]: https://golang.org/cmd/go/#hdr-Testing_flags
The effect of this is that any application using the standard `flag`
package with goldmark will automatically get a number of unwanted
command line flags. This is verifiable with the following program,
package main
import (
"flag"
_ "github.com/yuin/goldmark"
)
func main() {
flag.Parse()
}
To fix this, the `testing` import needs to be removed from all non-test
files. There are two ways to go about it,
- If the functions are meant for external use, you can define an
interface with a subset of the methods of `testing.T` and switch the
functions to consume that. This is what testing libraries like
[gomock] and [testify] do.
- If the functions are meant for internal use, you can remove them from
the public interface of the library and use them only from tests.
[gomock]: https://godoc.org/github.com/golang/mock/gomock#TestReporter
[testify]: https://godoc.org/github.com/stretchr/testify/require#TestingT
Since these functions are meant to be used by external extensions, I've
introduced a TestingT interface that is a subset of the functionality
provided by `testing.T`. It supports the standard operations: logging,
skiping, and failing tests,
7 lines
184 B
Go
7 lines
184 B
Go
package goldmark
|
|
|
|
import "testing"
|
|
|
|
// This will fail to compile if the TestingT interface is changed in a way
|
|
// that doesn't conform to testing.T.
|
|
var _ TestingT = (*testing.T)(nil)
|