> On Jun 30, 2016, at 04:13, Jean-Paul Calderone <exar...@twistedmatrix.com> > wrote: > > On Thu, Jun 30, 2016 at 6:43 AM, Adi Roiban <a...@roiban.ro > <mailto:a...@roiban.ro>> wrote: > Hi, > > Recently we have introduced a hard check of 100% coverage for all changes. > This is done via coverage + codecov + github protected branches. > > Now, if your patch is not 100% covered github will not let you merge it. > > See for example this change: > https://github.com/twisted/twisted/pull/261/files#diff-0fea8a8ca713deb7ea6a10053273319aR2360 > > <https://github.com/twisted/twisted/pull/261/files#diff-0fea8a8ca713deb7ea6a10053273319aR2360> > > The errback is there to help with test failures ... but the test should never > fail, so that errback is never called... and that line is not covered. > > > It doesn't always make sense to require 100% execution of all test code. > It's not at all uncommon to only have code in a test suite that runs when a > test fails. Historically, Twisted has never had a requirement of 100% > execution of test code. The only test suite coverage requirements that have > commonly been requested or enforced is for coverage of implementation code. > > I'd suggest removing the coverage enforcement for test suite code.
I am inclined to disagree, albeit mildly. When one is writing a deliberately un-covered path in test code, presumably, one is writing either a test helper - a mock, fake, or utility for setting up a real implementation - or an assertion method. Historically, I believe that when we've invested more heavily in making these utilities "real" themselves, and not just throwaway stuff inline in a test method or module, the benefits have far outweighed the costs. In fact the availability of proto_helpers is one of the selling points of Twisted as opposed to other competing engines. Therefore, I think that asking folks to add independent test coverage to verify their fakes and ensure that the failure-reporting of their assertion messages are helpful in the event a test fails is a generally good idea, and we should keep the requirement for 100% coverage on both test and implementation coverage. However, if there is contention around this, I'd much rather get a ratchet in place for implementation code that's reliable and everyone is happy with, so I'm OK with disabling coverage reporting for our *.test.* packages as a step towards that. > How should we proceed with these changes? > > Maybe this is not the best example and that code could be refactored... but I > think that the topic of ignoring missing coverage is still valid. > > I suggest to introduce ` # pragma: no cover` > > and update the coverage config with > > [report] > exclude_lines = > pragma: no cover > > > This seems like the wrong solution to me. It forces contributors to do extra > work to mark their test code as an exception and provides a mechanism for > incorrectly bypassing the check by using a no-cover pragma in implementation > code. In any case I totally agree with this. If we have a categorical difference in types of code (test vs. non-test) then let's make that distinction, but we should not be adding one-off exceptions as an exercise of non-uniform reviewer judgement on every review. -glyph
_______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python