Skip to content

Commit

Permalink
[twisted/internet/_glibbase] Fix Typeerror in simulate for py3
Browse files Browse the repository at this point in the history
for more information, see https://pre-commit.ci
  • Loading branch information
doadin committed Jan 12, 2022
1 parent dee676b commit 9433c08
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/twisted/internet/_glibbase.py
Expand Up @@ -354,8 +354,8 @@ def simulate(self):
if self._simtag is not None:
self._source_remove(self._simtag)
self.iterate()
timeout = min(self.timeout(), 0.01)
if timeout is None:
timeout = self.timeout()
if timeout is None or timeout > 0.01:
timeout = 0.01
self._simtag = self._timeout_add(
int(timeout * 1000),
Expand Down
31 changes: 31 additions & 0 deletions src/twisted/internet/test/test_glibbase.py
Expand Up @@ -65,3 +65,34 @@ def test_ensureFailsWhenImported(self):
)
self.assertEqual(modules, {"m2": module})
self.assertEqual(e.args, ("A message.",))


class GlibReactorBaseTests(TestCase):
def test_simulate(self):
""" """
try:
from gi.repository import Gio # type: ignore[import]

from twisted.internet import gireactor as _gireactor
except ImportError:
gireactor = None
gtk3reactor = None
else:
gireactor = _gireactor
# gtk3reactor may be unavailable even if gireactor is available; in
# particular in pygobject 3.4/gtk 3.6, when no X11 DISPLAY is found.
try:
from twisted.internet import gtk3reactor as _gtk3reactor
except ImportError:
gtk3reactor = None
else:
gtk3reactor = _gtk3reactor

from twisted.trial.unittest import SkipTest

# Skip all tests if gi is unavailable:
if gireactor is None and gtk3reactor is None:
raise SkipTest("gtk3/gi not importable")

gireactor.install()
gireactor.simulate()
1 change: 1 addition & 0 deletions src/twisted/newsfragments/9660.bugfix
@@ -0,0 +1 @@
twisted.internet.glibbase.simulate no longer raises TypeError with no timeout on Python 3.

0 comments on commit 9433c08

Please sign in to comment.