summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-François B <2589111+jfbu@users.noreply.github.com>2023-04-03 18:19:35 +0200
committerJean-François B <2589111+jfbu@users.noreply.github.com>2023-04-03 18:26:34 +0200
commit126737c3cda13d063565d48499d0a5b0fe685eb9 (patch)
tree66a1b2caed376a109cfe884c34050f0efb2d7a08
parente1b15a5c11050cfa50a46ebf1b075427ae3cae05 (diff)
downloadsphinx-git-126737c3cda13d063565d48499d0a5b0fe685eb9.tar.gz
Add unit test for issue #11110 as fixed by #11113
-rw-r--r--tests/roots/test-ext-imgmockconverter/1/svgimg.svg3
-rw-r--r--tests/roots/test-ext-imgmockconverter/2/svgimg.svg4
-rw-r--r--tests/roots/test-ext-imgmockconverter/conf.py5
-rw-r--r--tests/roots/test-ext-imgmockconverter/index.rst6
-rw-r--r--tests/roots/test-ext-imgmockconverter/mocksvgconverter.py39
-rw-r--r--tests/test_ext_imgmockconverter.py17
6 files changed, 74 insertions, 0 deletions
diff --git a/tests/roots/test-ext-imgmockconverter/1/svgimg.svg b/tests/roots/test-ext-imgmockconverter/1/svgimg.svg
new file mode 100644
index 000000000..981e3017c
--- /dev/null
+++ b/tests/roots/test-ext-imgmockconverter/1/svgimg.svg
@@ -0,0 +1,3 @@
+<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
+ <circle cx="50" cy="50" r="50" />
+</svg>
diff --git a/tests/roots/test-ext-imgmockconverter/2/svgimg.svg b/tests/roots/test-ext-imgmockconverter/2/svgimg.svg
new file mode 100644
index 000000000..2bae0b9b9
--- /dev/null
+++ b/tests/roots/test-ext-imgmockconverter/2/svgimg.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="60" width="60">
+ <circle cx="40" cy="40" r="24" style="stroke:#000000; fill:#ffffff"/>
+</svg>
diff --git a/tests/roots/test-ext-imgmockconverter/conf.py b/tests/roots/test-ext-imgmockconverter/conf.py
new file mode 100644
index 000000000..679bb5acc
--- /dev/null
+++ b/tests/roots/test-ext-imgmockconverter/conf.py
@@ -0,0 +1,5 @@
+import os
+import sys
+
+sys.path.insert(0, os.path.abspath('.'))
+extensions = ['mocksvgconverter']
diff --git a/tests/roots/test-ext-imgmockconverter/index.rst b/tests/roots/test-ext-imgmockconverter/index.rst
new file mode 100644
index 000000000..bc665f658
--- /dev/null
+++ b/tests/roots/test-ext-imgmockconverter/index.rst
@@ -0,0 +1,6 @@
+test-ext-imgconverter
+=====================
+
+.. image:: ./1/svgimg.svg
+.. image:: ./2/svgimg.svg
+
diff --git a/tests/roots/test-ext-imgmockconverter/mocksvgconverter.py b/tests/roots/test-ext-imgmockconverter/mocksvgconverter.py
new file mode 100644
index 000000000..43368de9d
--- /dev/null
+++ b/tests/roots/test-ext-imgmockconverter/mocksvgconverter.py
@@ -0,0 +1,39 @@
+"""
+ Does foo.svg --> foo.pdf with no change to the file.
+"""
+
+import shutil
+
+from sphinx.transforms.post_transforms.images import ImageConverter
+
+if False:
+ # For type annotation
+ from typing import Any, Dict # NOQA
+
+ from sphinx.application import Sphinx # NOQA
+
+class MyConverter(ImageConverter):
+ conversion_rules = [
+ ('image/svg+xml', 'application/pdf'),
+ ]
+
+ def is_available(self):
+ # type: () -> bool
+ return True
+
+ def convert(self, _from, _to):
+ # type: (unicode, unicode) -> bool
+ """Mock converts the image from SVG to PDF."""
+ shutil.copyfile(_from, _to)
+ return True
+
+
+def setup(app):
+ # type: (Sphinx) -> Dict[unicode, Any]
+ app.add_post_transform(MyConverter)
+
+ return {
+ 'version': 'builtin',
+ 'parallel_read_safe': True,
+ 'parallel_write_safe': True,
+ }
diff --git a/tests/test_ext_imgmockconverter.py b/tests/test_ext_imgmockconverter.py
new file mode 100644
index 000000000..b5d4e7975
--- /dev/null
+++ b/tests/test_ext_imgmockconverter.py
@@ -0,0 +1,17 @@
+"""Test image converter with identical basenames"""
+
+import pytest
+
+
+@pytest.mark.sphinx('latex', testroot='ext-imgmockconverter')
+def test_ext_imgmockconverter(app, status, warning):
+ app.builder.build_all()
+
+ content = (app.outdir / 'python.tex').read_text(encoding='utf8')
+
+ # check identical basenames give distinct files
+ assert '\\sphinxincludegraphics{{svgimg}.pdf}' in content
+ assert '\\sphinxincludegraphics{{svgimg1}.pdf}' in content
+ assert not (app.outdir / 'svgimg.svg').exists()
+ assert (app.outdir / 'svgimg.pdf').exists()
+ assert (app.outdir / 'svgimg1.pdf').exists()