|
41 | 41 |
|
42 | 42 | # 3rd party
|
43 | 43 | import pytest
|
| 44 | +from domdf_python_tools.compat import PYPY |
44 | 45 | from domdf_python_tools.iterative import Len
|
45 | 46 | from domdf_python_tools.paths import PathPlus
|
46 | 47 |
|
@@ -97,42 +98,69 @@ def with_fixed_datetime(fixed_datetime: datetime.datetime):
|
97 | 98 | Using ``from datetime import datetime`` won't work.
|
98 | 99 | """
|
99 | 100 |
|
100 |
| - class D(datetime.date): |
101 |
| - |
102 |
| - @classmethod |
103 |
| - def today(cls): |
104 |
| - return datetime.date( |
105 |
| - fixed_datetime.year, |
106 |
| - fixed_datetime.month, |
107 |
| - fixed_datetime.day, |
| 101 | + if PYPY: # pragma: no cover (!PyPy) |
| 102 | + |
| 103 | + with pytest.MonkeyPatch.context() as monkeypatch: |
| 104 | + monkeypatch.setattr( |
| 105 | + datetime.date, |
| 106 | + "today", |
| 107 | + lambda *args: datetime.date( |
| 108 | + fixed_datetime.year, |
| 109 | + fixed_datetime.month, |
| 110 | + fixed_datetime.day, |
| 111 | + ) |
| 112 | + ) |
| 113 | + monkeypatch.setattr( |
| 114 | + datetime.datetime, |
| 115 | + "today", |
| 116 | + lambda *args: datetime.datetime( |
| 117 | + fixed_datetime.year, |
| 118 | + fixed_datetime.month, |
| 119 | + fixed_datetime.day, |
| 120 | + ) |
108 | 121 | )
|
| 122 | + monkeypatch.setattr(datetime.datetime, "now", lambda *args: fixed_datetime) |
109 | 123 |
|
110 |
| - class DT(datetime.datetime): |
| 124 | + yield |
111 | 125 |
|
112 |
| - @classmethod |
113 |
| - def today(cls): |
114 |
| - return datetime.datetime( |
115 |
| - fixed_datetime.year, |
116 |
| - fixed_datetime.month, |
117 |
| - fixed_datetime.day, |
118 |
| - ) |
| 126 | + else: # pragma: no cover (PyPy) |
| 127 | + |
| 128 | + class D(datetime.date): |
| 129 | + |
| 130 | + @classmethod |
| 131 | + def today(cls): |
| 132 | + return datetime.date( |
| 133 | + fixed_datetime.year, |
| 134 | + fixed_datetime.month, |
| 135 | + fixed_datetime.day, |
| 136 | + ) |
| 137 | + |
| 138 | + class DT(datetime.datetime): |
| 139 | + |
| 140 | + @classmethod |
| 141 | + def today(cls): |
| 142 | + return datetime.datetime( |
| 143 | + fixed_datetime.year, |
| 144 | + fixed_datetime.month, |
| 145 | + fixed_datetime.day, |
| 146 | + ) |
119 | 147 |
|
120 |
| - @classmethod |
121 |
| - def now(cls, tz: Optional[datetime.tzinfo] = None): |
122 |
| - return datetime.datetime.fromtimestamp(fixed_datetime.timestamp()) |
| 148 | + @classmethod |
| 149 | + def now(cls, tz: Optional[datetime.tzinfo] = None): |
| 150 | + return datetime.datetime.fromtimestamp(fixed_datetime.timestamp()) |
123 | 151 |
|
124 |
| - D.__name__ = "date" |
125 |
| - D.__qualname__ = "date" |
126 |
| - DT.__qualname__ = "datetime" |
127 |
| - DT.__name__ = "datetime" |
128 |
| - D.__module__ = "datetime" |
129 |
| - DT.__module__ = "datetime" |
| 152 | + D.__name__ = "date" |
| 153 | + D.__qualname__ = "date" |
| 154 | + DT.__qualname__ = "datetime" |
| 155 | + DT.__name__ = "datetime" |
| 156 | + D.__module__ = "datetime" |
| 157 | + DT.__module__ = "datetime" |
130 | 158 |
|
131 |
| - with pytest.MonkeyPatch.context() as monkeypatch: |
132 |
| - monkeypatch.setattr(datetime, "date", D) |
133 |
| - monkeypatch.setattr(datetime, "datetime", DT) |
| 159 | + with pytest.MonkeyPatch.context() as monkeypatch: |
| 160 | + monkeypatch.setattr(datetime, "date", D) |
| 161 | + monkeypatch.setattr(datetime, "datetime", DT) |
134 | 162 |
|
135 |
| - yield |
| 163 | + yield |
136 | 164 |
|
137 | 165 |
|
138 | 166 | def generate_truthy_values(
|
|
0 commit comments