Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock
Please unblock package python-irc. Version “8.5.3+dfsg-4” resolves bug#854539 by patching some unit tests. unblock python-irc/8.5.3+dfsg-4 -- \ “Nothing exists except atoms and empty space; everything else | `\ is opinion.” —Democritus | _o__) | Ben Finney <bign...@debian.org>
diff -Nru python-irc-8.5.3+dfsg/debian/changelog python-irc-8.5.3+dfsg/debian/changelog --- python-irc-8.5.3+dfsg/debian/changelog 2016-12-29 08:41:09.000000000 +1100 +++ python-irc-8.5.3+dfsg/debian/changelog 2017-02-18 06:48:31.000000000 +1100 @@ -1,3 +1,11 @@ +python-irc (8.5.3+dfsg-4) unstable; urgency=medium + + * The “Faisal Arefin Dipan” release. + * Patch the unit tests to use a fake system clock. + Closes: bug#854539. + + -- Ben Finney <bign...@debian.org> Sat, 18 Feb 2017 06:48:31 +1100 + python-irc (8.5.3+dfsg-3) unstable; urgency=medium * The “Mukto-Mona” release. diff -Nru python-irc-8.5.3+dfsg/debian/patches/02-fake-clock-for-tests.patch python-irc-8.5.3+dfsg/debian/patches/02-fake-clock-for-tests.patch --- python-irc-8.5.3+dfsg/debian/patches/02-fake-clock-for-tests.patch 1970-01-01 10:00:00.000000000 +1000 +++ python-irc-8.5.3+dfsg/debian/patches/02-fake-clock-for-tests.patch 2017-02-18 06:48:31.000000000 +1100 @@ -0,0 +1,57 @@ +Description: Use a fake system clock for unit tests. + . + This removes a non-deterministic dependency on the real system clock. +Bug-Debian: http://bugs.debian.org/854539 +Author: Ben Finney <bign...@debian.org> +Last-Update: 2017-02-18 + + +diff --git i/irc/tests/test_client.py w/irc/tests/test_client.py +index 1e2a8ddb..fd6fb9bf 100644 +--- i/irc/tests/test_client.py ++++ w/irc/tests/test_client.py +@@ -44,6 +44,44 @@ class TestHandlers(object): + assert not handler1 < handler2 + assert not handler2 < handler1 + ++ ++class FakeClock(object): ++ """ A fake clock that is under control of test cases. """ ++ ++ _default_initial_seconds = 1450000000.0 ++ _default_tick_duration = 0.0005 ++ ++ def __init__( ++ self, ++ seconds=_default_initial_seconds, ++ tick_duration=_default_tick_duration, ++ ): ++ self._tick_duration = tick_duration ++ self.reset(seconds) ++ ++ def reset(self, seconds): ++ """ Reset the clock time to `seconds`. """ ++ self._seconds = seconds ++ ++ def advance(self, seconds): ++ """ Advance the clock by `seconds`. """ ++ self._seconds += max(0, seconds) ++ ++ def tick(self): ++ """ Advance the clock by its tick duration. """ ++ self.advance(self._tick_duration) ++ ++ def time(self): ++ """ Get the current time, as seconds since epoch. """ ++ self.tick() ++ return self._seconds ++ ++ ++fake_clock = FakeClock() ++ ++ ++@mock.patch.object(time, 'time', new=fake_clock.time) ++@mock.patch.object(time, 'sleep', new=fake_clock.advance) + class TestThrottler(object): + def test_function_throttled(self): + """ diff -Nru python-irc-8.5.3+dfsg/debian/patches/series python-irc-8.5.3+dfsg/debian/patches/series --- python-irc-8.5.3+dfsg/debian/patches/series 2016-12-29 08:41:09.000000000 +1100 +++ python-irc-8.5.3+dfsg/debian/patches/series 2017-02-18 06:48:31.000000000 +1100 @@ -1 +1,2 @@ 01-setup.patch +02-fake-clock-for-tests.patch
signature.asc
Description: PGP signature