Skip to content

v0.15.0

Compare
Choose a tag to compare
@nunnatsa nunnatsa released this 04 Dec 09:58
· 62 commits to main since this release

What's Changed

New rule(s): Wrong Usage of the MatchError gomega Matcher

The MatchError gomega matcher asserts an error value (and if it's not nil).

There are four valid formats for using this Matcher:

  • error value; e.g. Expect(err).To(MatchError(anotherErr))
  • string, to be equal to the output of the Error() method; e.g. Expect(err).To(MatchError("Not Found"))
  • A gomega matcher that asserts strings; e.g. Expect(err).To(MatchError(ContainSubstring("Found")))
  • [from v0.29.0] a function that receive a single error parameter and returns a single boolean value. In this format, an additional single string parameter, with the function description, is also required; e.g. Expect(err).To(MatchError(isNotFound, "is the error is a not found error"))

These four format are checked on runtime, but sometimes it's too late. ginkgolinter performs a static analysis and so it will find these issues on build time.

ginkgolinter checks the following:

  • Is the first parameter is one of the four options above.
  • That there are no additional parameters passed to the matcher; e.g. MatchError(isNotFoundFunc, "a valid description" , "not used string"). In this case, the matcher won't fail on run time, but the additional parameters are not in use and ignored.
  • If the first parameter is a function with the format of func(error)bool, ginkgolinter makes sure that the second parameter exists and its type is string.

Full Changelog: v0.14.1...v0.15.0