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
|
Bugs fixed
|
||||||
----------
|
----------
|
||||||
|
|
||||||
|
* #12514: intersphinx: fix the meaning of a negative value for
|
||||||
|
:confval:`intersphinx_cache_limit`.
|
||||||
|
Patch by Shengyu Zhang.
|
||||||
|
|
||||||
Testing
|
Testing
|
||||||
-------
|
-------
|
||||||
|
@ -201,7 +201,10 @@ def _fetch_inventory_group(
|
|||||||
config: Config,
|
config: Config,
|
||||||
srcdir: Path,
|
srcdir: Path,
|
||||||
) -> bool:
|
) -> bool:
|
||||||
cache_time = now - config.intersphinx_cache_limit * 86400
|
if config.intersphinx_cache_limit < 0:
|
||||||
|
cache_time = now - config.intersphinx_cache_limit * 86400
|
||||||
|
else:
|
||||||
|
cache_time = 0
|
||||||
|
|
||||||
updated = False
|
updated = False
|
||||||
failures = []
|
failures = []
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import http.server
|
import http.server
|
||||||
|
import time
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
from unittest import mock
|
from unittest import mock
|
||||||
|
|
||||||
@ -19,7 +20,13 @@ from sphinx.ext.intersphinx import (
|
|||||||
validate_intersphinx_mapping,
|
validate_intersphinx_mapping,
|
||||||
)
|
)
|
||||||
from sphinx.ext.intersphinx import setup as intersphinx_setup
|
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 sphinx.util.console import strip_colors
|
||||||
|
|
||||||
from tests.test_util.intersphinx_data import (
|
from tests.test_util.intersphinx_data import (
|
||||||
@ -665,3 +672,33 @@ def test_intersphinx_role(app):
|
|||||||
|
|
||||||
# explicit title
|
# explicit title
|
||||||
assert html.format('index.html#foons') in content
|
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