mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-08-05 12:38:09 -07:00
dev-python/time-machine: Remove old
Signed-off-by: Michał Górny <mgorny@gentoo.org>
This commit is contained in:
@@ -1,3 +1 @@
|
||||
DIST time-machine-2.13.0.gh.tar.gz 28747 BLAKE2B 88836d2b9ad34c8d256b576ab6b2bfe263232fb50d2e95f13049f84dbc838283811ebc54c5bb68493ef966e64777983ab6bcb7fafccda6dc74e00d3bb6a2108f SHA512 26a852d93633e037585ec8fcd563c86af8d977a87633dbeb66cf23c9ca49ca0ae536bdcdcdf809ee2ab423c197610c630d506bc3bf4f13c373d806cee2d8c598
|
||||
DIST time-machine-2.14.0.gh.tar.gz 29270 BLAKE2B 55050879fe221204f14c77a90190c2ef5232e182d281885d60686230365b9249f8e90ec80e7a842d43a2c52b72bf463cd59b4a22fdc8b0cd25c5ad5b0306fc98 SHA512 7bc9d6d53da68c18ccdae1af6282ea482a0758a4fda9acabe9fa39bfe217a57e65b8041ae4436b7cef2c0b39835f3aae9590515d200b9b2962bd0610370e8454
|
||||
DIST time-machine-2.14.1.gh.tar.gz 29600 BLAKE2B b118e3a2f08f75cc6cd89181a9e533c89bc6e5312a520b2a854fb8aa7ac59f1570e48a85788261f781ef83f9864380318074724f6eadab9cda7a3374b2322e7d SHA512 42a127e2dc5a86e33896010e6d141fc9248fe685d3477ec71ec8a72315914cea99ae4a4d6623a59fd69505d935d2feadcfd831a7fff5617c3f98a93d48652ecf
|
||||
|
||||
@@ -1,252 +0,0 @@
|
||||
https://bugs.gentoo.org/show_bug.cgi?id=912709
|
||||
https://github.com/adamchainz/time-machine/pull/400
|
||||
|
||||
From b489a478193982c17cf7847d32cae2b53a904222 Mon Sep 17 00:00:00 2001
|
||||
From: matoro <matoro@users.noreply.github.com>
|
||||
Date: Thu, 9 Nov 2023 13:03:49 -0500
|
||||
Subject: [PATCH 1/2] Fix tests on platforms with low clock resolution
|
||||
|
||||
On platforms without a high-resolution clock, such as Alpha and PA-RISC
|
||||
is is likely that two sequential calls to time.time() will return the
|
||||
same value if the execution time is not sufficient to allow one full
|
||||
clock resolution cycle to pass. This adds sleeps of one cycle to
|
||||
enforce that the minimum amount of time to guarantee a clock change has
|
||||
passed.
|
||||
|
||||
On systems with high-resolution clocks, clock_getres() will return 1ns;
|
||||
in reality the sleep will take longer than 1ns to execute but should
|
||||
still be a negligible amount of time.
|
||||
---
|
||||
tests/test_time_machine.py | 13 +++++++++++++
|
||||
1 file changed, 13 insertions(+)
|
||||
|
||||
diff --git a/tests/test_time_machine.py b/tests/test_time_machine.py
|
||||
index fe98fb7..7b5abbe 100644
|
||||
--- a/tests/test_time_machine.py
|
||||
+++ b/tests/test_time_machine.py
|
||||
@@ -155,8 +155,10 @@ def test_time_clock_gettime_realtime():
|
||||
@py_have_clock_gettime
|
||||
def test_time_clock_gettime_monotonic_unaffected():
|
||||
start = time.clock_gettime(time.CLOCK_MONOTONIC)
|
||||
+ time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
|
||||
with time_machine.travel(EPOCH + 180.0):
|
||||
frozen = time.clock_gettime(time.CLOCK_MONOTONIC)
|
||||
+ time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
|
||||
assert isinstance(frozen, float)
|
||||
assert frozen > start
|
||||
|
||||
@@ -169,6 +171,7 @@ def test_time_clock_gettime_monotonic_unaffected():
|
||||
def test_time_clock_gettime_ns_realtime():
|
||||
with time_machine.travel(EPOCH + 190.0):
|
||||
first = time.clock_gettime_ns(time.CLOCK_REALTIME)
|
||||
+ time.sleep(time.clock_getres(time.CLOCK_REALTIME))
|
||||
assert isinstance(first, int)
|
||||
assert first == int((EPOCH + 190.0) * NANOSECONDS_PER_SECOND)
|
||||
second = time.clock_gettime_ns(time.CLOCK_REALTIME)
|
||||
@@ -182,8 +185,10 @@ def test_time_clock_gettime_ns_realtime():
|
||||
@py_have_clock_gettime
|
||||
def test_time_clock_gettime_ns_monotonic_unaffected():
|
||||
start = time.clock_gettime_ns(time.CLOCK_MONOTONIC)
|
||||
+ time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
|
||||
with time_machine.travel(EPOCH + 190.0):
|
||||
frozen = time.clock_gettime_ns(time.CLOCK_MONOTONIC)
|
||||
+ time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
|
||||
assert isinstance(frozen, int)
|
||||
assert frozen > start
|
||||
|
||||
@@ -279,6 +284,7 @@ def test_time_strftime_format_t():
|
||||
def test_time_time():
|
||||
with time_machine.travel(EPOCH):
|
||||
first = time.time()
|
||||
+ time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
|
||||
assert isinstance(first, float)
|
||||
assert first == EPOCH
|
||||
second = time.time()
|
||||
@@ -300,6 +306,7 @@ def test_time_time():
|
||||
def test_time_time_windows():
|
||||
with time_machine.travel(EPOCH):
|
||||
first = time.time()
|
||||
+ time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
|
||||
assert isinstance(first, float)
|
||||
assert first == windows_epoch_in_posix
|
||||
|
||||
@@ -316,6 +323,7 @@ def test_time_time_no_tick():
|
||||
def test_time_time_ns():
|
||||
with time_machine.travel(EPOCH + 150.0):
|
||||
first = time.time_ns()
|
||||
+ time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
|
||||
assert isinstance(first, int)
|
||||
assert first == int((EPOCH + 150.0) * NANOSECONDS_PER_SECOND)
|
||||
second = time.time_ns()
|
||||
@@ -561,6 +569,7 @@ def test_method_decorator(self):
|
||||
@time_machine.travel(EPOCH + 95.0)
|
||||
class UnitTestClassTests(TestCase):
|
||||
def test_class_decorator(self):
|
||||
+ time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
|
||||
assert EPOCH + 95.0 < time.time() < EPOCH + 96.0
|
||||
|
||||
@time_machine.travel(EPOCH + 25.0)
|
||||
@@ -578,6 +587,7 @@ def setUpClass(cls):
|
||||
cls.custom_setupclass_ran = True
|
||||
|
||||
def test_class_decorator(self):
|
||||
+ time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
|
||||
assert EPOCH + 95.0 < time.time() < EPOCH + 96.0
|
||||
assert self.custom_setupclass_ran
|
||||
|
||||
@@ -639,6 +649,7 @@ def test_move_to_datetime():
|
||||
traveller.move_to(EPOCH_PLUS_ONE_YEAR_DATETIME)
|
||||
|
||||
first = time.time()
|
||||
+ time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
|
||||
assert first == EPOCH_PLUS_ONE_YEAR
|
||||
|
||||
second = time.time()
|
||||
@@ -706,6 +717,7 @@ def test_move_to_datetime_change_tick_on():
|
||||
with time_machine.travel(EPOCH, tick=False) as traveller:
|
||||
traveller.move_to(EPOCH_PLUS_ONE_YEAR_DATETIME, tick=True)
|
||||
assert time.time() == EPOCH_PLUS_ONE_YEAR
|
||||
+ time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
|
||||
assert time.time() > EPOCH_PLUS_ONE_YEAR
|
||||
|
||||
|
||||
@@ -756,6 +768,7 @@ def test_fixture_used_tick_false(time_machine):
|
||||
def test_fixture_used_tick_true(time_machine):
|
||||
time_machine.move_to(EPOCH, tick=True)
|
||||
original = time.time()
|
||||
+ time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
|
||||
assert original == EPOCH
|
||||
assert original < time.time() < EPOCH + 10.0
|
||||
|
||||
|
||||
From 9e84584325ec06eb997716b6a0f42e9ca6540994 Mon Sep 17 00:00:00 2001
|
||||
From: matoro <matoro@users.noreply.github.com>
|
||||
Date: Fri, 10 Nov 2023 11:06:23 -0500
|
||||
Subject: [PATCH 2/2] Wrap sleep calls in "sleep_one_cycle" function
|
||||
|
||||
---
|
||||
tests/test_time_machine.py | 30 +++++++++++++++++-------------
|
||||
1 file changed, 17 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/tests/test_time_machine.py b/tests/test_time_machine.py
|
||||
index 7b5abbe..163ec2b 100644
|
||||
--- a/tests/test_time_machine.py
|
||||
+++ b/tests/test_time_machine.py
|
||||
@@ -38,6 +38,10 @@
|
||||
)
|
||||
|
||||
|
||||
+def sleep_one_cycle(clock: int) -> None:
|
||||
+ time.sleep(time.clock_getres(clock))
|
||||
+
|
||||
+
|
||||
@contextmanager
|
||||
def change_local_timezone(local_tz: str | None) -> typing.Iterator[None]:
|
||||
orig_tz = os.environ["TZ"]
|
||||
@@ -155,10 +159,10 @@ def test_time_clock_gettime_realtime():
|
||||
@py_have_clock_gettime
|
||||
def test_time_clock_gettime_monotonic_unaffected():
|
||||
start = time.clock_gettime(time.CLOCK_MONOTONIC)
|
||||
- time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
|
||||
+ sleep_one_cycle(time.CLOCK_MONOTONIC)
|
||||
with time_machine.travel(EPOCH + 180.0):
|
||||
frozen = time.clock_gettime(time.CLOCK_MONOTONIC)
|
||||
- time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
|
||||
+ sleep_one_cycle(time.CLOCK_MONOTONIC)
|
||||
assert isinstance(frozen, float)
|
||||
assert frozen > start
|
||||
|
||||
@@ -171,7 +175,7 @@ def test_time_clock_gettime_monotonic_unaffected():
|
||||
def test_time_clock_gettime_ns_realtime():
|
||||
with time_machine.travel(EPOCH + 190.0):
|
||||
first = time.clock_gettime_ns(time.CLOCK_REALTIME)
|
||||
- time.sleep(time.clock_getres(time.CLOCK_REALTIME))
|
||||
+ sleep_one_cycle(time.CLOCK_REALTIME)
|
||||
assert isinstance(first, int)
|
||||
assert first == int((EPOCH + 190.0) * NANOSECONDS_PER_SECOND)
|
||||
second = time.clock_gettime_ns(time.CLOCK_REALTIME)
|
||||
@@ -185,10 +189,10 @@ def test_time_clock_gettime_ns_realtime():
|
||||
@py_have_clock_gettime
|
||||
def test_time_clock_gettime_ns_monotonic_unaffected():
|
||||
start = time.clock_gettime_ns(time.CLOCK_MONOTONIC)
|
||||
- time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
|
||||
+ sleep_one_cycle(time.CLOCK_MONOTONIC)
|
||||
with time_machine.travel(EPOCH + 190.0):
|
||||
frozen = time.clock_gettime_ns(time.CLOCK_MONOTONIC)
|
||||
- time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
|
||||
+ sleep_one_cycle(time.CLOCK_MONOTONIC)
|
||||
assert isinstance(frozen, int)
|
||||
assert frozen > start
|
||||
|
||||
@@ -284,7 +288,7 @@ def test_time_strftime_format_t():
|
||||
def test_time_time():
|
||||
with time_machine.travel(EPOCH):
|
||||
first = time.time()
|
||||
- time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
|
||||
+ sleep_one_cycle(time.CLOCK_MONOTONIC)
|
||||
assert isinstance(first, float)
|
||||
assert first == EPOCH
|
||||
second = time.time()
|
||||
@@ -306,7 +310,7 @@ def test_time_time():
|
||||
def test_time_time_windows():
|
||||
with time_machine.travel(EPOCH):
|
||||
first = time.time()
|
||||
- time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
|
||||
+ sleep_one_cycle(time.CLOCK_MONOTONIC)
|
||||
assert isinstance(first, float)
|
||||
assert first == windows_epoch_in_posix
|
||||
|
||||
@@ -323,7 +327,7 @@ def test_time_time_no_tick():
|
||||
def test_time_time_ns():
|
||||
with time_machine.travel(EPOCH + 150.0):
|
||||
first = time.time_ns()
|
||||
- time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
|
||||
+ sleep_one_cycle(time.CLOCK_MONOTONIC)
|
||||
assert isinstance(first, int)
|
||||
assert first == int((EPOCH + 150.0) * NANOSECONDS_PER_SECOND)
|
||||
second = time.time_ns()
|
||||
@@ -569,7 +573,7 @@ def test_method_decorator(self):
|
||||
@time_machine.travel(EPOCH + 95.0)
|
||||
class UnitTestClassTests(TestCase):
|
||||
def test_class_decorator(self):
|
||||
- time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
|
||||
+ sleep_one_cycle(time.CLOCK_MONOTONIC)
|
||||
assert EPOCH + 95.0 < time.time() < EPOCH + 96.0
|
||||
|
||||
@time_machine.travel(EPOCH + 25.0)
|
||||
@@ -587,7 +591,7 @@ def setUpClass(cls):
|
||||
cls.custom_setupclass_ran = True
|
||||
|
||||
def test_class_decorator(self):
|
||||
- time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
|
||||
+ sleep_one_cycle(time.CLOCK_MONOTONIC)
|
||||
assert EPOCH + 95.0 < time.time() < EPOCH + 96.0
|
||||
assert self.custom_setupclass_ran
|
||||
|
||||
@@ -649,7 +653,7 @@ def test_move_to_datetime():
|
||||
traveller.move_to(EPOCH_PLUS_ONE_YEAR_DATETIME)
|
||||
|
||||
first = time.time()
|
||||
- time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
|
||||
+ sleep_one_cycle(time.CLOCK_MONOTONIC)
|
||||
assert first == EPOCH_PLUS_ONE_YEAR
|
||||
|
||||
second = time.time()
|
||||
@@ -717,7 +721,7 @@ def test_move_to_datetime_change_tick_on():
|
||||
with time_machine.travel(EPOCH, tick=False) as traveller:
|
||||
traveller.move_to(EPOCH_PLUS_ONE_YEAR_DATETIME, tick=True)
|
||||
assert time.time() == EPOCH_PLUS_ONE_YEAR
|
||||
- time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
|
||||
+ sleep_one_cycle(time.CLOCK_MONOTONIC)
|
||||
assert time.time() > EPOCH_PLUS_ONE_YEAR
|
||||
|
||||
|
||||
@@ -768,7 +772,7 @@ def test_fixture_used_tick_false(time_machine):
|
||||
def test_fixture_used_tick_true(time_machine):
|
||||
time_machine.move_to(EPOCH, tick=True)
|
||||
original = time.time()
|
||||
- time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
|
||||
+ sleep_one_cycle(time.CLOCK_MONOTONIC)
|
||||
assert original == EPOCH
|
||||
assert original < time.time() < EPOCH + 10.0
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
# Copyright 2022-2023 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
DISTUTILS_EXT=1
|
||||
DISTUTILS_USE_PEP517=setuptools
|
||||
PYTHON_COMPAT=( python3_{10..12} )
|
||||
|
||||
inherit distutils-r1
|
||||
|
||||
DESCRIPTION="Travel through time in your tests"
|
||||
HOMEPAGE="
|
||||
https://github.com/adamchainz/time-machine/
|
||||
https://pypi.org/project/time-machine/
|
||||
"
|
||||
SRC_URI="
|
||||
https://github.com/adamchainz/time-machine/archive/${PV}.tar.gz
|
||||
-> ${P}.gh.tar.gz
|
||||
"
|
||||
|
||||
LICENSE="MIT"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
|
||||
|
||||
RDEPEND="
|
||||
dev-python/python-dateutil[${PYTHON_USEDEP}]
|
||||
"
|
||||
|
||||
PATCHES=( "${FILESDIR}/${PN}-2.13.0-backport-pr400.patch" )
|
||||
|
||||
distutils_enable_tests pytest
|
||||
@@ -1,30 +0,0 @@
|
||||
# Copyright 2022-2024 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
DISTUTILS_EXT=1
|
||||
DISTUTILS_USE_PEP517=setuptools
|
||||
PYTHON_COMPAT=( python3_{10..12} )
|
||||
|
||||
inherit distutils-r1
|
||||
|
||||
DESCRIPTION="Travel through time in your tests"
|
||||
HOMEPAGE="
|
||||
https://github.com/adamchainz/time-machine/
|
||||
https://pypi.org/project/time-machine/
|
||||
"
|
||||
SRC_URI="
|
||||
https://github.com/adamchainz/time-machine/archive/${PV}.tar.gz
|
||||
-> ${P}.gh.tar.gz
|
||||
"
|
||||
|
||||
LICENSE="MIT"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
|
||||
|
||||
RDEPEND="
|
||||
dev-python/python-dateutil[${PYTHON_USEDEP}]
|
||||
"
|
||||
|
||||
distutils_enable_tests pytest
|
||||
Reference in New Issue
Block a user