mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
intersphinx: Handle a negative `intersphinx_cache_limit
` (#12514)
Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
This commit is contained in:
parent
4a95555eae
commit
03d684fe9f
@ -16,5 +16,9 @@ Features added
|
||||
Bugs fixed
|
||||
----------
|
||||
|
||||
* #12514: intersphinx: fix the meaning of a negative value for
|
||||
:confval:`intersphinx_cache_limit`.
|
||||
Patch by Shengyu Zhang.
|
||||
|
||||
Testing
|
||||
-------
|
||||
|
@ -201,7 +201,10 @@ def _fetch_inventory_group(
|
||||
config: Config,
|
||||
srcdir: Path,
|
||||
) -> bool:
|
||||
if config.intersphinx_cache_limit < 0:
|
||||
cache_time = now - config.intersphinx_cache_limit * 86400
|
||||
else:
|
||||
cache_time = 0
|
||||
|
||||
updated = False
|
||||
failures = []
|
||||
|
@ -3,6 +3,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import http.server
|
||||
import time
|
||||
from typing import TYPE_CHECKING
|
||||
from unittest import mock
|
||||
|
||||
@ -19,7 +20,13 @@ from sphinx.ext.intersphinx import (
|
||||
validate_intersphinx_mapping,
|
||||
)
|
||||
from sphinx.ext.intersphinx import setup as intersphinx_setup
|
||||
from sphinx.ext.intersphinx._load import _fetch_inventory, _get_safe_url, _strip_basic_auth
|
||||
from sphinx.ext.intersphinx._load import (
|
||||
_fetch_inventory,
|
||||
_fetch_inventory_group,
|
||||
_get_safe_url,
|
||||
_strip_basic_auth,
|
||||
)
|
||||
from sphinx.ext.intersphinx._shared import _IntersphinxProject
|
||||
from sphinx.util.console import strip_colors
|
||||
|
||||
from tests.test_util.intersphinx_data import (
|
||||
@ -665,3 +672,33 @@ def test_intersphinx_role(app):
|
||||
|
||||
# explicit title
|
||||
assert html.format('index.html#foons') in content
|
||||
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from sphinx.ext.intersphinx._shared import InventoryCacheEntry
|
||||
|
||||
|
||||
def test_intersphinx_cache_limit(app):
|
||||
url = 'https://example.org/'
|
||||
app.config.intersphinx_cache_limit = -1
|
||||
app.config.intersphinx_mapping = {
|
||||
'inv': (url, None),
|
||||
}
|
||||
# load the inventory and check if it's done correctly
|
||||
intersphinx_cache: dict[str, InventoryCacheEntry] = {
|
||||
url: ('', 0, {}), # 0 is a timestamp, make sure the entry is expired
|
||||
}
|
||||
validate_intersphinx_mapping(app, app.config)
|
||||
load_mappings(app)
|
||||
|
||||
now = int(time.time())
|
||||
for name, (uri, locations) in app.config.intersphinx_mapping.values():
|
||||
project = _IntersphinxProject(name=name, target_uri=uri, locations=locations)
|
||||
# no need to read from remote
|
||||
assert not _fetch_inventory_group(
|
||||
project=project,
|
||||
cache=intersphinx_cache,
|
||||
now=now,
|
||||
config=app.config,
|
||||
srcdir=app.srcdir,
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user