mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Tests: explicitly unset SOURCE_DATE_EPOCH during 'test_html_multi_line_copyright' (#13224)
Sphinx's copyright substitution currently allows years identified as the current year to be downgraded to previous years when ``SOURCE_DATE_EPOCH`` is configured, to assist reproducibility [1] of documentation builds. However, we have a test case ``test_html_multi_line_copyright``, written in 2024, that mentioned a future year (2025). Now that we have reached 2025, it is eligible for substitution when ``SOURCE_DATE_EPOCH`` is configured. Many buildsystems, such as those used by Debian and Fedora, choose the most-recent packaging/commit timestamp to use as `SOURCE_DATE_EPOCH`'s timestamp, since those correspond sensibly to a time-of-build. However, for the Sphinx 8.1.3 release including the updated substitution logic, the year-of-release/commit was 2024. Thus, if a commit/packaging date from that year is chosen, and ``SOURCE_DATE_EPOCH`` is configured when the unit tests run, the ``test_html_multi_line_copyright`` test will fail. The fix suggested here is to explicitly unset ``SOURCE_DATE_EPOCH`` within ``test_html_multi_line_copyright``. [1]: https://www.reproducible-builds.org/ Authored-by: Colin Watson <cjwatson@debian.org> Co-authored-by: Colin Watson <cjwatson@debian.org> Authored-by: James Addison <55152140+jayaddison@users.noreply.github.com> Co-authored-by: James Addison <55152140+jayaddison@users.noreply.github.com>
This commit is contained in:
@@ -9,6 +9,18 @@ LT_NEW = (2009, *LT[1:], LT.tm_zone, LT.tm_gmtoff)
|
||||
LOCALTIME_2009 = type(LT)(LT_NEW)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def no_source_date_year(monkeypatch):
|
||||
"""
|
||||
Explicitly clear SOURCE_DATE_EPOCH from the environment; this
|
||||
fixture can be used to ensure that copyright substitution logic
|
||||
does not occur during selected test cases.
|
||||
"""
|
||||
with monkeypatch.context() as m:
|
||||
m.delenv('SOURCE_DATE_EPOCH', raising=False)
|
||||
yield
|
||||
|
||||
|
||||
@pytest.fixture(
|
||||
params=[
|
||||
1199145600, # 2008-01-01 00:00:00
|
||||
@@ -24,7 +36,7 @@ def source_date_year(request, monkeypatch):
|
||||
|
||||
|
||||
@pytest.mark.sphinx('html', testroot='copyright-multiline')
|
||||
def test_html_multi_line_copyright(app):
|
||||
def test_html_multi_line_copyright(no_source_date_year, app):
|
||||
app.build(force_all=True)
|
||||
|
||||
content = (app.outdir / 'index.html').read_text(encoding='utf-8')
|
||||
|
||||
Reference in New Issue
Block a user