* Multiple: resize FR RA network commands screenshot This is now more in line with the text (and the english version). * Multiple: optimize EN RA network commands screenshot The URL has changed, so it's a good time to optimize. * WebHost, Worlds: fix retroarch images not showing Implements a src/url replacement for relative paths. Moves the RA screenshots to worlds/generic since they are shared. Also now uses the FR version in ffmq. Also fixes the formatting that resultet in the list breaking. Also moves imports in render_markdown. Guides now also properly render on Github. * Factorio: optimize screenshots The URL has changed, so it's a good time to optimize. * Factorio: change guide screenshots to use relative URL * Test: markdown: fix tests on Windows We also can't use delete=True, delete_on_close=False because that's not supported in Py3.11. * Test: markdown: fix typo I hope that's it now. *sigh* * Landstalker: fix doc images not showing Change to relative img urls. * Landstalker: optimize doc PNGs The URL has changed, so it's a good time to optimize.
79 lines
2.8 KiB
Python
79 lines
2.8 KiB
Python
import os
|
|
import unittest
|
|
from tempfile import NamedTemporaryFile
|
|
|
|
from mistune import HTMLRenderer, Markdown
|
|
|
|
from WebHostLib.markdown import ImgUrlRewriteInlineParser, render_markdown
|
|
|
|
|
|
class ImgUrlRewriteTest(unittest.TestCase):
|
|
markdown: Markdown
|
|
base_url = "/static/generated/docs/some_game"
|
|
|
|
def setUp(self) -> None:
|
|
self.markdown = Markdown(
|
|
renderer=HTMLRenderer(escape=False),
|
|
inline=ImgUrlRewriteInlineParser(self.base_url),
|
|
)
|
|
|
|
def test_relative_img_rewrite(self) -> None:
|
|
html = self.markdown("")
|
|
self.assertIn(f'src="{self.base_url}/image.png"', html)
|
|
|
|
def test_absolute_img_no_rewrite(self) -> None:
|
|
html = self.markdown("")
|
|
self.assertIn(f'src="/image.png"', html)
|
|
self.assertNotIn(self.base_url, html)
|
|
|
|
def test_remote_img_no_rewrite(self) -> None:
|
|
html = self.markdown("")
|
|
self.assertIn(f'src="https://example.com/image.png"', html)
|
|
self.assertNotIn(self.base_url, html)
|
|
|
|
def test_relative_link_no_rewrite(self) -> None:
|
|
# The parser is only supposed to update images, not links.
|
|
html = self.markdown("[Link](image.png)")
|
|
self.assertIn(f'href="image.png"', html)
|
|
self.assertNotIn(self.base_url, html)
|
|
|
|
def test_absolute_link_no_rewrite(self) -> None:
|
|
html = self.markdown("[Link](/image.png)")
|
|
self.assertIn(f'href="/image.png"', html)
|
|
self.assertNotIn(self.base_url, html)
|
|
|
|
def test_auto_link_no_rewrite(self) -> None:
|
|
html = self.markdown("<https://example.com/image.png>")
|
|
self.assertIn(f'href="https://example.com/image.png"', html)
|
|
self.assertNotIn(self.base_url, html)
|
|
|
|
def test_relative_img_to_other_game(self) -> None:
|
|
html = self.markdown("")
|
|
self.assertIn(f'src="{self.base_url}/../Archipelago/image.png"', html)
|
|
|
|
|
|
class RenderMarkdownTest(unittest.TestCase):
|
|
"""Tests that render_markdown does the right thing."""
|
|
base_url = "/static/generated/docs/some_game"
|
|
|
|
def test_relative_img_rewrite(self) -> None:
|
|
f = NamedTemporaryFile(delete=False)
|
|
try:
|
|
f.write("".encode("utf-8"))
|
|
f.close()
|
|
html = render_markdown(f.name, self.base_url)
|
|
self.assertIn(f'src="{self.base_url}/image.png"', html)
|
|
finally:
|
|
os.unlink(f.name)
|
|
|
|
def test_no_img_rewrite(self) -> None:
|
|
f = NamedTemporaryFile(delete=False)
|
|
try:
|
|
f.write("".encode("utf-8"))
|
|
f.close()
|
|
html = render_markdown(f.name)
|
|
self.assertIn(f'src="image.png"', html)
|
|
self.assertNotIn(self.base_url, html)
|
|
finally:
|
|
os.unlink(f.name)
|