[Twisted-Python] Regression in Gtk2 support testing

Itamar Turner-Trauring itamar at itamarst.org
Sun Feb 19 22:14:49 EST 2012

On 02/18/2012 10:59 AM, exarkun at twistedmatrix.com wrote:
> Hello all,
> Since #4558 was merged, introducing "gi reactor" based on the new Python
> bindings for gobject, all testing of the Gtk2 reactor has been disabled,
> on all platforms.
> This is a two-part problem.
> The first part is the more damaging part, but fortunately also the more
> easily fixed part.  #4558 made it impossible to import
> `twisted.internet.gtk2reactor` if `sys.modules` contains a "gi" key.
> This seems to overlook the fact that even a *failed* import of the `gi`
> module adds such a key to that dictionary.  Since the test suite tries
> to test `gireactor`, there will always be such a key, so `gtk2reactor`
> can never be imported by the test suite.
However, if you run with "trial -r gtk2" you *do* get the gtk2 tests to 
> The result is that gtk2reactor is no longer tested by buildbot on any
> platform.
... and as a result the buildbot *would* be testing gtk2 except that, 
unfortunately, the fedora32-py2.5-reactors buildslave is down. Which I 
will follow up on if I can figure out who's running it.
> The second part will show up once the first problem is fixed.  Once the
> check correctly ignores `sys.modules["gi"] == None`, it will still be
> impossible to test both gireactor and gtk2reactor in our current
> buildbot configuration.  One or the other will win, and the loser will
> be quietly skipped (apparently too quietly for most people to notice).
> Some new strategy is required so that we can test both of these reactors
> on all our supported platforms.

The reactors buildslave is a reasonable strategy: have multiple runs 
with different reactors as the main trial reactor. Especially since, 
even in the absence of this problem, we'd want to continue to have full 
runs under the different reactors because the reactor mixin tests don't 
cover everything yet.

More information about the Twisted-Python mailing list