def test_freelink_with_spacelink(): # a freelink followed by a spacelink will get confused tiddler = Tiddler('Bar') environ = { 'tiddlyweb.config': { 'markdown.wiki_link_base': '', 'markdown.interlinker': space_uri, 'server_host': { 'scheme': 'http', 'host': 'tiddlyspace.com', 'port': '80' } } } tiddler.text = 'I see [[fire]] and [[rain]] business' output = render(tiddler, environ) assert '>fire<' in output assert '>rain<' in output assert 'href="fire"' in output assert 'href="rain"' in output tiddler.text = 'I see [[fire]]@monkey and [[rain]]@monkey business' output = render(tiddler, environ) assert 'href="http://monkey.tiddlyspace.com/fire"' in output assert 'href="http://monkey.tiddlyspace.com/rain"' in output tiddler.text = 'I see [[fire]] and [[rain]]@monkey business' output = render(tiddler, environ) assert '>fire<' in output assert 'href="fire"' in output assert 'href="http://monkey.tiddlyspace' in output tiddler.text = 'I see [[rain]]@monkey and [[fire]] business' output = render(tiddler, environ) assert '>fire<' in output assert 'href="fire"' in output assert 'href="http://monkey.tiddlyspace.com/rain"' in output
def test_spaced_target(): tiddler = Tiddler('Bar') environ = { 'tiddlyweb.config': { 'markdown.wiki_link_base': '', 'markdown.interlinker': tank_uri, 'server_host': { 'scheme': 'http', 'host': 'tiddlyspace.com', 'port': '80' } } } tiddler.text = 'I see [[cow fire]]@[[monkey business]] oh hello' output = render(tiddler, environ) assert '>cow fire<' in output assert 'href="http://tiddlyspace.com/tanks/monkey%20business/cow%20fire"' in output assert 'fire</a> oh hello' in output tiddler.text = 'I see [[fire]]@[[monkey business]]' output = render(tiddler, environ) assert '>fire<' in output assert 'href="http://tiddlyspace.com/tanks/monkey%20business/fire"' in output tiddler.text = 'I see @[[monkey business]] inside you' output = render(tiddler, environ) assert 'href="http://tiddlyspace.com/tanks/monkey%20business"' in output
def test_spacelink_first(): tiddler = Tiddler('test') tiddler.text = '@cdent for more info.' output = render(tiddler, environ) assert '<a href="http://cdent.tiddlyspace.org:8080/">@cdent</a>' in output tiddler.text = '\n\n@cdent for more info.' output = render(tiddler, environ) assert '<a href="http://cdent.tiddlyspace.org:8080/">@cdent</a>' in output
def test_no_wiki(): tiddler = Tiddler('hello') tiddler.text = sample environ = {} output = render(tiddler, environ) assert '<h1>' in output assert '<li>' in output assert 'href' not in output environ = {'tiddlyweb.config': {'markdown.wiki_link_base': ''}} output = render(tiddler, environ) assert 'href' in output
def test_spacewiki_first(): tiddler = Tiddler('test') tiddler.text = "WikiLink@cdent" output = render(tiddler, environ) assert '<a href="http://cdent.tiddlyspace.org:8080/WikiLink">WikiLink</a>' in output tiddler.text = "Hi WikiLink@cdent." output = render(tiddler, environ) assert '<a href="http://cdent.tiddlyspace.org:8080/WikiLink">WikiLink</a>' in output tiddler.text = "Hi (WikiLink@cdent)" output = render(tiddler, environ) assert '<a href="http://cdent.tiddlyspace.org:8080/WikiLink">WikiLink</a>' in output
def test_instance_extensions(): tiddler = Tiddler('Foo') tiddler.text = "hello world" environ = { 'tiddlyweb.config': { 'markdown.extensions': (['markdown.foo', 'markdown.bar'], { 'foo': 'lipsum' }) } } try: render(tiddler, environ) assert False except ImportError, exc: assert 'markdown.foo' in exc.args[0]
def test_fragments(): tiddler = Tiddler('Foo') tiddler.text = 'oh [[hi#cow]] bye' environ = { 'tiddlyweb.config': { 'markdown.wiki_link_base': '' } } output = render(tiddler, environ) assert 'a class="wikilink" href="hi#cow">hi#cow</a>' in output tiddler = Tiddler('Foo') tiddler.text = 'oh [[what|hi#cow]] bye' environ = { 'tiddlyweb.config': { 'markdown.wiki_link_base': '' } } output = render(tiddler, environ) assert 'a class="wikilink" href="hi#cow">what</a>' in output
def test_simple_fence(): tiddler = Tiddler('Foo') tiddler.text = """ Crikey ====== There was a problem in the system so we decided to make some changes to the config: ``` True = False ``` We did not get the desired results: ``` the cow died ``` """ output = render(tiddler, environ) assert """config:</p> <pre><code>True = False </code></pre>""" in output # see those 4 spaces assert """</p> <pre><code>the cow died </code></pre>""" in output
def test_simple_spacelink(): tiddler = Tiddler('test') tiddler.text = '# Hi\nVisit @cdent for more info.' output = render(tiddler, environ) assert '<a href="http://cdent.tiddlyspace.org:8080/">@cdent</a>' in output
def test_disallowed(): environ['tiddlyweb.config']['markdown.safe_mode'] = 'monkey' output = render(tiddler, environ) assert '<h1 id="h1-header">h1 header</h1>' in output assert '<h3' not in output assert '<p><h3' in output
def test_remove(): environ['tiddlyweb.config']['markdown.safe_mode'] = 'remove' output = render(tiddler, environ) assert '<h1 id="h1-header">h1 header</h1>' in output assert '<h3' not in output assert '<p><h3' not in output assert 'h3 header' not in output
def test_false(): environ['tiddlyweb.config']['markdown.safe_mode'] = False output = render(tiddler, environ) assert '<h1 id="h1-header">h1 header</h1>' in output assert '<h3>h3 header</h3>' in output assert '<p><h3' not in output assert '<p>[HTML_REMOVED]</p>' not in output
def test_spacefree_link(): tiddler = Tiddler('test') tiddler.text = "[[Free Link]]@cdent" output = render(tiddler, environ) assert '<a href="http://cdent.tiddlyspace.org:8080/Free%20Link">Free Link</a>' in output tiddler.text = "lorem\n[[Free Link]]@cdent\nipsum" output = render(tiddler, environ) assert '<a href="http://cdent.tiddlyspace.org:8080/Free%20Link">Free Link</a>' in output tiddler.text = "This is [[Free Link]]@cdent" output = render(tiddler, environ) assert '<a href="http://cdent.tiddlyspace.org:8080/Free%20Link">Free Link</a>' in output tiddler.text = "This is [[Free Link]]@cdent: lorem ipsum" output = render(tiddler, environ) assert '<a href="http://cdent.tiddlyspace.org:8080/Free%20Link">Free Link</a>' in output
def test_double_render_transclude(): tiddlerA = store.get(Tiddler('tiddler a', 'bag')) tiddlerA.type = 'text/x-markdown' store.put(tiddlerA) output = render(tiddlerB, environ) assert 'I am <em>tiddler</em>' in output assert 'You wish' in output
def test_labeled_freelinks(): tiddler = Tiddler('Foo') tiddler.text = 'lorem [[hello world|Foo]] ipsum' environ = { 'tiddlyweb.config': { 'markdown.wiki_link_base': '' } } output = render(tiddler, environ) assert '<a class="wikilink" href="Foo">' in output assert '>hello world</a>' in output assert '[[hello world|Foo]]' not in output assert output == '<p>lorem <a class="wikilink" href="Foo">hello world</a> ipsum</p>' tiddler = Tiddler('Foo') tiddler.text = 'lorem [[hello [] world|Foo]] ipsum' environ = { 'tiddlyweb.config': { 'markdown.wiki_link_base': '' } } output = render(tiddler, environ) assert '[[hello [] world|Foo]]' in output
def test_simple_freelinks(): tiddler = Tiddler('Foo') tiddler.text = 'lorem [[Foo]] ipsum' environ = { 'tiddlyweb.config': { 'markdown.wiki_link_base': '' } } output = render(tiddler, environ) assert '<a class="wikilink" href="Foo">' in output assert '>Foo</a>' in output assert '[[Foo]]' not in output assert output == '<p>lorem <a class="wikilink" href="Foo">Foo</a> ipsum</p>' tiddler = Tiddler('Foo') tiddler.text = 'lorem [[Foo [] Bar]] ipsum' environ = { 'tiddlyweb.config': { 'markdown.wiki_link_base': '' } } output = render(tiddler, environ) assert '[[Foo [] Bar]]' in output
def test_precedence(): tiddler = Tiddler('cow') tiddler.text = """ * [Pry](http://www.philaquilina.com/2012/05/17/tossing-out-irb-for-pry/) * [Rails console](http://37signals.com/svn/posts/3176-three-quick-rails-console-tips) """ environ = {'tiddlyweb.config': {'markdown.wiki_link_base': ''}} output = render(tiddler, environ) assert "http://<a href" not in output
def test_no_wiki(): tiddler = Tiddler('hello') tiddler.text = sample environ = {} output = render(tiddler, environ) assert '<h1>' in output assert '<li>' in output assert 'href' not in output environ = {'tiddlyweb.config': {'markdown.wiki_link_base': ''}} output = render(tiddler, environ) assert 'href' in output assert '<a href="WikiLink">' in output assert '>WikiLink</a>' in output tiddler.text = sample_linked output = render(tiddler, environ) assert '"NotLink"' not in output assert '<a href="http://example.org/CamelCase">label</a>' in output
def test_labeled_freelinks(): tiddler = Tiddler('Foo') tiddler.text = 'lorem [[hello world|Foo]] ipsum' environ = { 'tiddlyweb.config': { 'markdown.wiki_link_base': '' } } output = render(tiddler, environ) assert '<a href="Foo">' in output assert '>hello world</a>' in output assert '[[hello world|Foo]]' not in output assert output == '<p>lorem <a href="Foo">hello world</a> ipsum</p>\n' tiddler = Tiddler('Foo') tiddler.text = 'lorem [[hello [] world|Foo]] ipsum' environ = { 'tiddlyweb.config': { 'markdown.wiki_link_base': '' } } output = render(tiddler, environ) assert '[[hello [] world|Foo]]' not in output assert '<a href="Foo">hello [] world</a>' in output assert output == '<p>lorem <a href="Foo">hello [] world</a> ipsum</p>\n'
def test_urlification(): tiddler = Tiddler('blah') tiddler.text = """ lorem ipsum http://example.org dolor sit amet ... http://www.example.com/foo/bar ... """ environ = {'tiddlyweb.config': {'markdown.wiki_link_base': ''}} output = render(tiddler, environ) for url in ["http://example.org", "http://www.example.com/foo/bar"]: assert '<a href="%(url)s">%(url)s</a>' % { "url": url } in output
def test_simple_freelinks(): tiddler = Tiddler('Foo') tiddler.text = 'lorem [[Foo]] ipsum' environ = { 'tiddlyweb.config': { 'markdown.wiki_link_base': '' } } output = render(tiddler, environ) assert '<a href="Foo">' in output assert '>Foo</a>' in output assert '[[Foo]]' not in output assert output == '<p>lorem <a href="Foo">Foo</a> ipsum</p>\n' tiddler = Tiddler('Foo') tiddler.text = 'lorem [[Foo [] Bar]] ipsum' environ = { 'tiddlyweb.config': { 'markdown.wiki_link_base': '' } } output = render(tiddler, environ) assert '[[Foo [] Bar]]' not in output assert '<a href="Foo [] Bar">Foo [] Bar</a>' in output assert output == '<p>lorem <a href="Foo [] Bar">Foo [] Bar</a> ipsum</p>\n'
def test_precedence(): tiddler = Tiddler('Foo') tiddler.text = 'lorem [[hello FooBar world]] ipsum' environ = { 'tiddlyweb.config': { 'markdown.wiki_link_base': '' } } output = render(tiddler, environ) assert '[[hello FooBar world]]' not in output assert '<a class="wikilink" href="FooBar">FooBar</a>' not in output assert '<a class="wikilink" href="hello%20FooBar%20world">hello FooBar world</a>' in output assert output == '<p>lorem <a class="wikilink" href="hello%20FooBar%20world">hello FooBar world</a> ipsum</p>' tiddler = Tiddler('Foo') tiddler.text = 'lorem [[...|hello FooBar world]] ipsum' environ = { 'tiddlyweb.config': { 'markdown.wiki_link_base': '' } } output = render(tiddler, environ) assert '[[...|hello FooBar world]]' not in output assert '<a class="wikilink" href="FooBar">FooBar</a>' not in output assert '<a class="wikilink" href="hello%20FooBar%20world">...</a>' in output assert output == '<p>lorem <a class="wikilink" href="hello%20FooBar%20world">...</a> ipsum</p>'
def test_precedence(): tiddler = Tiddler('Foo') tiddler.text = 'lorem [[hello FooBar world]] ipsum' environ = { 'tiddlyweb.config': { 'markdown.wiki_link_base': '' } } output = render(tiddler, environ) assert '[[hello FooBar world]]' not in output assert '<a href="FooBar">FooBar</a>' not in output assert '<a href="hello FooBar world">hello FooBar world</a>' in output assert output == '<p>lorem <a href="hello FooBar world">hello FooBar world</a> ipsum</p>\n' tiddler = Tiddler('Foo') tiddler.text = 'lorem [[...|hello FooBar world]] ipsum' environ = { 'tiddlyweb.config': { 'markdown.wiki_link_base': '' } } output = render(tiddler, environ) assert '[[...|hello FooBar world]]' not in output assert '<a href="FooBar">FooBar</a>' not in output assert '<a href="hello FooBar world">...</a>' in output assert output == '<p>lorem <a href="hello FooBar world">...</a> ipsum</p>\n'
def test_space_include(): tiddlerB.text = ''' Hey There {{tiddler a}}@recipe We called that from outside, yo ''' output = render(tiddlerB, environ) assert '<article class="transclusion" data-title="tiddler a" ' \ 'data-bag="bag"><p>I am <em>tiddler</em></p>\n</article>' in output assert 'We called that from outside,' in output
def test_simple_def_list(): tiddler = Tiddler('Foo') tiddler.text = """ Apple : Pomaceous fruit of plants of the genus Malus in the family Rosaceae. Orange : The fruit of an evergreen tree of the genus Citrus. """ output = render(tiddler, environ) assert """<dt>Apple</dt> <dd>Pomaceous fruit of plants of the genus Malus in the family Rosaceae.</dd> <dt>Orange</dt> <dd>The fruit of an evergreen tree of the genus Citrus.</dd> </dl>""" in output # Note: the single space after the : is _required_ tiddler.text = """ Apple : Pomaceous fruit of plants of the genus Malus in the family Rosaceae. Orange : The fruit of an evergreen tree of the genus Citrus. """ output = render(tiddler, environ) assert """<dt>Apple</dt> <dd>Pomaceous fruit of plants of the genus Malus in the family Rosaceae.</dd> <dt>Orange</dt> <dd>The fruit of an evergreen tree of the genus Citrus.</dd> </dl>""" in output
def test_footnote_linked(): tiddler = Tiddler('Foo') tiddler.text = """ Welcome ======= I want to make a footnote[^1] for all the world to see. And it will be glorious. [^1]: http://example.com/ """ output = render(tiddler, environ) assert ' ">http' not in output
def test_no_wiki(): tiddler = Tiddler('hello') tiddler.text = sample environ = {} output = render(tiddler, environ) assert '<h1 id="hello">' in output assert '<li>' in output assert 'href' not in output environ = {'tiddlyweb.config': {'markdown.wiki_link_base': ''}} output = render(tiddler, environ) assert 'href' in output assert '<a class="wikilink" href="WikiLink">' in output assert '>WikiLink</a>' in output assert 'is not WikiLink because we escaped' in output tiddler.text = sample_linked output = render(tiddler, environ) assert '"NotLink"' not in output assert '<a href="http://example.org/CamelCase">label</a>' in output assert '(<a class="wikilink" href="HtmlJavascript">HtmlJavascript</a> in parens)' in output assert '(parens around <a class="wikilink" href="HtmlJavascript">HtmlJavascript</a>)' in output
def test_spacing(): tiddler = Tiddler('Foo') tiddler.text = 'lorem[[Foo]] ipsum' environ = { 'tiddlyweb.config': { 'markdown.wiki_link_base': '' } } output = render(tiddler, environ) assert 'lorem[[Foo]]' in output tiddler = Tiddler('Foo') tiddler.text = '[[Foo]] ipsum' environ = { 'tiddlyweb.config': { 'markdown.wiki_link_base': '' } } output = render(tiddler, environ) assert '<a class="wikilink" href="Foo">Foo</a>' in output tiddler = Tiddler('Foo') tiddler.text = '[[Foo|Bar Zoom]] ipsum' environ = { 'tiddlyweb.config': { 'markdown.wiki_link_base': '' } } output = render(tiddler, environ) assert '<a class="wikilink" href="Bar%20Zoom">Foo</a>' in output
def test_urlification(): tiddler = Tiddler('blah') tiddler.text = """ lorem ipsum http://example.org dolor sit amet ... http://www.example.com/foo/bar ... and <http://example.com> don't forget about http://www.example.com/search?q=tag:hello or goodbye and you know this too http://example.com/tiddlers?select=tag:monkey;sort=-modified so much stuff! and http://example.com/tiddlers?q=tag:@cdent wow and how could we have forgotten http://example.com/~cdent of hyplan fame! """ environ = {'tiddlyweb.config': {'markdown.wiki_link_base': ''}} output = render(tiddler, environ) for url in ["http://example.org", "http://www.example.com/foo/bar", 'http://example.com', 'http://www.example.com/search?q=tag:hello', 'http://example.com/tiddlers?select=tag:monkey;sort=-modified', 'http://example.com/tiddlers?q=tag:@cdent', 'http://example.com/~cdent']: assert '<a href="%(url)s">%(url)s</a>' % { "url": url } in output
def test_space_include(): from tiddlywebplugins.markdown.transclusion import tiddlyspace_target_resolver from tiddlywebplugins.tiddlyspace.fixups import web_tiddler_url as tu def tiddler_url(environ, tiddler): return tu(environ, tiddler, friendly=True) environ['tiddlyweb.config']['markdown.transclude_url'] = tiddler_url environ['tiddlyweb.config']['markdown.target_resolver'] = tiddlyspace_target_resolver tiddlerB.text = ''' Hey There {{tiddler a}}@recipe We called that from outside, yo, and we'll call it again. {{tiddler a}}@recipe ''' output = render(tiddlerB, environ) # Note: the URI here is funkity because of the above config settings assert '<article id="t-tiddler-a" class="transclusion" data-uri="http://bag.tiddlyspace.com/tiddler%20a" data-title="tiddler a" ' \ 'data-bag="bag_public"><p>I am <em>tiddler</em></p></article>' in output assert 'We called that from outside,' in output
def test_spaced_target_include(): def target_resolver(environ, target, interior_tiddler): interior_tiddler.bag = target environ['tiddlyweb.config']['markdown.transclude_url'] = tiddler_url environ['tiddlyweb.config']['markdown.target_resolver'] = target_resolver tiddlerB.text = ''' Hey There {{tiddler x}}@[[spaced bag]] We called that from outside, yo, and we'll call it again. {{tiddler x}}@[[spaced bag]] {{tiddler a}}@bag_public ''' output = render(tiddlerB, environ) # Note: the URI here is funkity because of the above config settings assert '<article id="t-tiddler-x" class="transclusion" data-uri="http://tiddlyspace.com/bags/spaced%20bag/tiddlers/tiddler%20x" data-title="tiddler x" ' \ 'data-bag="spaced bag"><p>X is not Y</p></article>' in output assert 'We called that from outside,' in output assert 'I am <em>tiddler</em>' in output
def test_simple_footnote(): tiddler = Tiddler('Foo') tiddler.text = """ Oh Now ====== We always talked[^1] about how much this should happen, but chose the wrong tools. We should have known[^inevitable]. [^1]: Asynch, of course. [^inevitable]: Time. Flows. """ output = render(tiddler, environ) # slip in a headerid test assert '<h1 id="oh-now">Oh Now</h1>' in output # check footnotes get in there assert 'talked<sup id="fnref-1"><a class="footnote-ref" href="#fn-1">1</a></sup> about' in output assert '<li id="fn-1">' in output assert '<a class="footnote-backref" href="#fnref-1" title="Jump back to footnote 1 in the text">↩</a>' in output
def test_spacewiki_link(): tiddler = Tiddler('test') tiddler.text = "This is WikiLink@cdent" output = render(tiddler, environ) assert '<a href="http://cdent.tiddlyspace.org:8080/WikiLink">WikiLink</a>' in output assert 'This is <a' in output
def test_precedence_in_markdown_link(): tiddler = Tiddler('Foo') environ = { 'tiddlyweb.config': { 'markdown.wiki_link_base': '' } } tiddler.text = 'I see [foo LoremIpsum bar](http://example.org) you' output = render(tiddler, environ) assert output == '<p>I see <a href="http://example.org">foo LoremIpsum bar</a>you</p>'