Thomas Waldmann avatar Thomas Waldmann committed 7d91132 Merge

merged

Comments (0)

Files changed (1)

MoinMoin/converter/_tests/test_include.py

 import pytest
 
 from MoinMoin.converter.include import *
+from MoinMoin.items import MoinWiki
+from MoinMoin.config import CONTENTTYPE
+from MoinMoin._tests import wikiconfig, update_item
 
-def test_XPointer():
-    x = XPointer('a')
-    assert len(x) == 1
-    e = x[0]
-    assert e.name == 'a'
-    assert e.data is None
+class TestInclude(object):
+    class Config(wikiconfig.Config):
+        """
+        we just have this so the test framework creates a new app with empty backends for us.
+        """
 
-    x = XPointer('a(b)')
-    assert len(x) == 1
-    e = x[0]
-    assert e.name == 'a'
-    assert e.data == 'b'
+    def test_XPointer(self):
+        x = XPointer('a')
+        assert len(x) == 1
+        e = x[0]
+        assert e.name == 'a'
+        assert e.data is None
 
-    x = XPointer('a(^(b^)^^)')
-    assert len(x) == 1
-    e = x[0]
-    assert e.name == 'a'
-    assert e.data == '^(b^)^^'
-    assert e.data_unescape == '(b)^'
+        x = XPointer('a(b)')
+        assert len(x) == 1
+        e = x[0]
+        assert e.name == 'a'
+        assert e.data == 'b'
 
-    x = XPointer('a(b)c(d)')
-    assert len(x) == 2
-    e = x[0]
-    assert e.name == 'a'
-    assert e.data == 'b'
-    e = x[1]
-    assert e.name == 'c'
-    assert e.data == 'd'
+        x = XPointer('a(^(b^)^^)')
+        assert len(x) == 1
+        e = x[0]
+        assert e.name == 'a'
+        assert e.data == '^(b^)^^'
+        assert e.data_unescape == '(b)^'
 
-    x = XPointer('a(b) c(d)')
-    assert len(x) == 2
-    e = x[0]
-    assert e.name == 'a'
-    assert e.data == 'b'
-    e = x[1]
-    assert e.name == 'c'
-    assert e.data == 'd'
+        x = XPointer('a(b)c(d)')
+        assert len(x) == 2
+        e = x[0]
+        assert e.name == 'a'
+        assert e.data == 'b'
+        e = x[1]
+        assert e.name == 'c'
+        assert e.data == 'd'
 
-    x = XPointer('a(a(b))')
-    assert len(x) == 1
-    e = x[0]
-    assert e.name == 'a'
-    assert e.data == 'a(b)'
+        x = XPointer('a(b) c(d)')
+        assert len(x) == 2
+        e = x[0]
+        assert e.name == 'a'
+        assert e.data == 'b'
+        e = x[1]
+        assert e.name == 'c'
+        assert e.data == 'd'
 
+        x = XPointer('a(a(b))')
+        assert len(x) == 1
+        e = x[0]
+        assert e.name == 'a'
+        assert e.data == 'a(b)'
+
+    def test_IncludeHandlesCircularRecursion(self):
+        # issue #80
+        # we choosed MoinWiki items so tests get simpler
+        update_item(u'page1', {CONTENTTYPE: u'text/x.moin.wiki'}, u'{{page2}}')
+        update_item(u'page2', {CONTENTTYPE: u'text/x.moin.wiki'}, u'{{page3}}')
+        update_item(u'page3', {CONTENTTYPE: u'text/x.moin.wiki'}, u'{{page1}}')
+
+        page1 = MoinWiki.create(u'page1')
+
+        page1._render_data()
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.