parent
f4bc3f7568
commit
a90b513369
@ -0,0 +1,45 @@
|
||||
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 $")
|
Loading…
Reference in new issue