diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-05 16:20:58 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-05 16:20:58 +0000 |
commit | ffcb4b87846b4e4a2d9eee8df4b7ec40365878b8 (patch) | |
tree | 3c64877dd20ad1141111c77b3463e95686002b39 /tests/test_util/test_util_inventory.py | |
parent | Adding debian version 7.2.6-8. (diff) | |
download | sphinx-ffcb4b87846b4e4a2d9eee8df4b7ec40365878b8.tar.xz sphinx-ffcb4b87846b4e4a2d9eee8df4b7ec40365878b8.zip |
Merging upstream version 7.3.7.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/test_util/test_util_inventory.py')
-rw-r--r-- | tests/test_util/test_util_inventory.py | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/tests/test_util/test_util_inventory.py b/tests/test_util/test_util_inventory.py new file mode 100644 index 0000000..81d31b0 --- /dev/null +++ b/tests/test_util/test_util_inventory.py @@ -0,0 +1,78 @@ +"""Test inventory util functions.""" +import os +import posixpath +from io import BytesIO + +import sphinx.locale +from sphinx.testing.util import SphinxTestApp +from sphinx.util.inventory import InventoryFile + +from tests.test_util.intersphinx_data import ( + INVENTORY_V1, + INVENTORY_V2, + INVENTORY_V2_NO_VERSION, +) + + +def test_read_inventory_v1(): + f = BytesIO(INVENTORY_V1) + invdata = InventoryFile.load(f, '/util', posixpath.join) + assert invdata['py:module']['module'] == \ + ('foo', '1.0', '/util/foo.html#module-module', '-') + assert invdata['py:class']['module.cls'] == \ + ('foo', '1.0', '/util/foo.html#module.cls', '-') + + +def test_read_inventory_v2(): + f = BytesIO(INVENTORY_V2) + invdata = InventoryFile.load(f, '/util', posixpath.join) + + assert len(invdata['py:module']) == 2 + assert invdata['py:module']['module1'] == \ + ('foo', '2.0', '/util/foo.html#module-module1', 'Long Module desc') + assert invdata['py:module']['module2'] == \ + ('foo', '2.0', '/util/foo.html#module-module2', '-') + assert invdata['py:function']['module1.func'][2] == \ + '/util/sub/foo.html#module1.func' + assert invdata['c:function']['CFunc'][2] == '/util/cfunc.html#CFunc' + assert invdata['std:term']['a term'][2] == \ + '/util/glossary.html#term-a-term' + assert invdata['std:term']['a term including:colon'][2] == \ + '/util/glossary.html#term-a-term-including-colon' + + +def test_read_inventory_v2_not_having_version(): + f = BytesIO(INVENTORY_V2_NO_VERSION) + invdata = InventoryFile.load(f, '/util', posixpath.join) + assert invdata['py:module']['module1'] == \ + ('foo', '', '/util/foo.html#module-module1', 'Long Module desc') + + +def _write_appconfig(dir, language, prefix=None): + prefix = prefix or language + os.makedirs(dir / prefix, exist_ok=True) + (dir / prefix / 'conf.py').write_text(f'language = "{language}"', encoding='utf8') + (dir / prefix / 'index.rst').write_text('index.rst', encoding='utf8') + assert sorted(os.listdir(dir / prefix)) == ['conf.py', 'index.rst'] + assert (dir / prefix / 'index.rst').exists() + return dir / prefix + + +def _build_inventory(srcdir): + app = SphinxTestApp(srcdir=srcdir) + app.build() + sphinx.locale.translators.clear() + return app.outdir / 'objects.inv' + + +def test_inventory_localization(tmp_path): + # Build an app using Estonian (EE) locale + srcdir_et = _write_appconfig(tmp_path, "et") + inventory_et = _build_inventory(srcdir_et) + + # Build the same app using English (US) locale + srcdir_en = _write_appconfig(tmp_path, "en") + inventory_en = _build_inventory(srcdir_en) + + # Ensure that the inventory contents differ + assert inventory_et.read_bytes() != inventory_en.read_bytes() |