You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Bebop/bebop/tests/test_external.py

46 lines
1.5 KiB

from bebop.metalines import RenderOptions
import unittest
from ..external import substitute_external_command
from ..page import Page
URL = "gemini://example.com"
GEMTEXT = """\
# Test page
Blablabla
=> gemini://example.com/index.gmi Link to index
=> gemini://example.com/sub/gemlog.gmi Link to gemlog
"""
PAGE = Page.from_gemtext(GEMTEXT, RenderOptions(80, "fancy", "- "))
class TestExternal(unittest.TestCase):
def test_substitute_external_command(self):
# Replace URLs occurences.
command = "gmni $u | grep $u" # Grep for a page's own URL.
result = substitute_external_command(command, URL, PAGE)
self.assertEqual(result, "gmni {u} | grep {u}".format(u=URL))
# Replace link ID's with the target URL.
command = "gmni $1 && gmni $2" # Get both links
result = substitute_external_command(command, URL, PAGE)
expected = (
"gmni gemini://example.com/index.gmi"
" && gmni gemini://example.com/sub/gemlog.gmi"
)
self.assertEqual(result, expected)
# Invalid link ID raise a ValueError.
command = "gmni $8"
with self.assertRaises(Exception):
substitute_external_command(command, URL, PAGE)
# Replace escaped $$ with literal $.
command = "grep ^iamaregex$$ | echo dollar $" # Do nothing with last.
result = substitute_external_command(command, URL, PAGE)
self.assertEqual(result, "grep ^iamaregex$ | echo dollar $")