GoConvey Test Package Profiles
When using the web UI it would be nice to be able to customize the flags used when running go test
in a specificpackage*. It would also be nice to somehow mark a package as persistently ignored or disabled so that when the UI starts sometime in the future, you don't have to click ignore on that package again. Well, there's a way to do both of those things by creating a text file in that package that satisfied the following regex:
.+\.goconvey
Examples of good names:
example.goconvey
hi.goconvey
Examples of bad names:.goconvey
hi.txt
The contents of that text file may include blank lines, commented lines (start the line with a#
or//
), test flags (-short
, etc…) or the wordignore
(casing is unimportant). The only hard and fast rule is that if you include the wordignore
it must come before any test flags.
The result of creating such a file is that if ignore
is found as the first non-comment, non-blank line, the package will be ignored by the GoConvey server until that line is removed or commented. Otherwise, all non-blank, non-comment lines are treated as arguments to be used whenever calling go test
on your package (like when you save a file). Most of these arguments will probably arguments defined by the golang testing command but you can include arbitrary arguments to your package. There are only a few caveats to be aware of:
-v
is always used so there's no need to ever include this flag.-cover
,-covermode
and-coverprofile
are specified by the GoConvey server so including these flags will have no effect. (Let me know if you really want to be able to specify-covermode
for values other thanset
which is what GoConvey uses by default.)-tags
will be passed appropriately through togo test
,go list
, etc. calls, so if you need a special tag to build your package or your tests, it should get picked up correctly.Many of the profiling/benchmarking flags haven't really been used much by the core goconvey developers so we aren't sure if they will work as they normally do when applied to a goconvey package profile.
Far from being an exhaustive list, here are some intended use cases:Using the
-short
flag can allow you to toggle execution of long-running integration tests.- Using the
-run
flag can allow you to focus on specific test functions in a package. Combined withFocusConvey
you could limit test execution to a single test case within a single test function—handy if displaying lots of debug information. Using the
-timeout
flag may help prevent manual restarts of the goconvey server in the event of a mistaken infinite loop (come on, admit it—you know it's happened to you!).
Please see theexamples.goconvey
profile in the examples package (github.com/smartystreets/goconvey/examples
) for, well, an example. Happy testing!A profile only applies to the containing package (same folder), not any nested packages (sub-folders).