|
| 1 | +from __future__ import annotations |
| 2 | + |
1 | 3 | import email
|
| 4 | +import importlib |
2 | 5 | import os
|
3 | 6 | import sys
|
4 | 7 | import tarfile
|
@@ -404,6 +407,31 @@ def test_build_wheel_preserve_permission(dist: Path) -> None:
|
404 | 407 | assert filemode & 0o111
|
405 | 408 |
|
406 | 409 |
|
| 410 | +@pytest.mark.parametrize("name", ["demo-package"]) |
| 411 | +@pytest.mark.parametrize( |
| 412 | + ("epoch", "expected_date_time"), |
| 413 | + [ |
| 414 | + ("0", (1980, 1, 1, 0, 0, 0)), |
| 415 | + ("nan", (2016, 1, 1, 0, 0, 0)), |
| 416 | + ("1580601700", (2020, 2, 2, 0, 1, 40)), |
| 417 | + ], |
| 418 | +) |
| 419 | +def test_build_wheel_respects_source_date_epoch( |
| 420 | + monkeypatch: pytest.MonkeyPatch, |
| 421 | + dist: Path, |
| 422 | + epoch: str, |
| 423 | + expected_date_time: tuple[int, ...], |
| 424 | +) -> None: |
| 425 | + monkeypatch.setenv("SOURCE_DATE_EPOCH", epoch) |
| 426 | + from pdm.backend import wheel |
| 427 | + |
| 428 | + importlib.reload(wheel) |
| 429 | + wheel_name = api.build_wheel(dist.as_posix()) |
| 430 | + with zipfile.ZipFile(dist / wheel_name) as zf: |
| 431 | + zip_info = zf.getinfo("demo_package-0.1.0.dist-info/WHEEL") |
| 432 | + assert zip_info.date_time == expected_date_time |
| 433 | + |
| 434 | + |
407 | 435 | @pytest.mark.usefixtures("scm")
|
408 | 436 | @pytest.mark.parametrize("name", ["demo-using-scm"])
|
409 | 437 | def test_build_wheel_write_version_to_file(fixture_project: Path, dist) -> None:
|
|
0 commit comments