~ubuntu-branches/ubuntu/natty/moin/natty-updates

« back to all changes in this revision

Viewing changes to MoinMoin/formatter/_tests/test_formatter.py

  • Committer: Bazaar Package Importer
  • Author(s): Jonas Smedegaard
  • Date: 2008-06-22 21:17:13 UTC
  • mfrom: (0.9.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20080622211713-fpo2zrq3s5dfecxg
Tags: 1.7.0-3
Simplify /etc/moin/wikilist format: "USER URL" (drop unneeded middle
CONFIG_DIR that was wrongly advertised as DATA_DIR).  Make
moin-mass-migrate handle both formats and warn about deprecation of
the old one.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# -*- coding: iso-8859-1 -*-
 
2
"""
 
3
    MoinMoin - MoinMoin.formatter.* Tests
 
4
 
 
5
    @copyright: 2005 by MoinMoin:AlexanderSchremmer
 
6
    @license: GNU GPL, see COPYING for details.
 
7
"""
 
8
 
 
9
import py
 
10
 
 
11
from MoinMoin.Page import Page
 
12
from MoinMoin import wikiutil
 
13
 
 
14
 
 
15
class TestFormatter:
 
16
    def testSyntaxReferenceDomXml(self):
 
17
        f_name = 'dom_xml'
 
18
        try:
 
19
            formatter = wikiutil.importPlugin(self.request.cfg, "formatter", f_name, "Formatter")
 
20
        except wikiutil.PluginAttributeError:
 
21
            pass
 
22
        else:
 
23
            print "Formatting using %r" % formatter
 
24
            self.formatPage("SyntaxReference", formatter)
 
25
            print "Done."
 
26
 
 
27
    def testSyntaxReferenceDocBook(self):
 
28
        py.test.skip("docbook is broken")
 
29
        try:
 
30
            from xml.dom import getDOMImplementation
 
31
            dom = getDOMImplementation("4DOM")
 
32
        except ImportError:
 
33
            # if we don't have 4suite installed, the docbook formatter would just raise an exception
 
34
            py.test.skip("not testing docbook formatter because no 4suite installed")
 
35
        else:
 
36
            f_name = 'text_docbook'
 
37
            try:
 
38
                formatter = wikiutil.importPlugin(self.request.cfg, "formatter", f_name, "Formatter")
 
39
            except wikiutil.PluginAttributeError:
 
40
                pass
 
41
            else:
 
42
                print "Formatting using %r" % formatter
 
43
                self.formatPage("HelpOnMoinWikiSyntax", formatter)
 
44
                print "Done."
 
45
 
 
46
    def testSyntaxReferenceOthers(self):
 
47
        formatters = wikiutil.getPlugins("formatter", self.request.cfg)
 
48
 
 
49
        # we have separate tests for those:
 
50
        formatters.remove('text_docbook')
 
51
        formatters.remove('dom_xml')
 
52
 
 
53
        for f_name in formatters:
 
54
            try:
 
55
                formatter = wikiutil.importPlugin(self.request.cfg, "formatter", f_name, "Formatter")
 
56
            except wikiutil.PluginAttributeError:
 
57
                pass
 
58
            else:
 
59
                print "Formatting using %r" % formatter
 
60
                self.formatPage("SyntaxReference", formatter)
 
61
                print "Done."
 
62
 
 
63
    def formatPage(self, pagename, formatter):
 
64
        """Parse a page. Should not raise an exception if the API of the
 
65
        formatter is correct.
 
66
        """
 
67
 
 
68
        self.request.reset()
 
69
        page = Page(self.request, pagename, formatter=formatter)
 
70
        self.request.formatter = page.formatter = formatter(self.request)
 
71
        #page.formatter.setPage(page)
 
72
        #page.hilite_re = None
 
73
 
 
74
        return self.request.redirectedOutput(page.send_page, content_only=1)
 
75
 
 
76
 
 
77
class TestIdIdempotency:
 
78
    def test_sanitize_to_id_idempotent(self):
 
79
        def _verify(formatter, id):
 
80
            origid = formatter.sanitize_to_id(id)
 
81
            id = origid
 
82
            for i in xrange(3):
 
83
                id = formatter.sanitize_to_id(id)
 
84
                assert id == origid
 
85
 
 
86
        formatters = wikiutil.getPlugins("formatter", self.request.cfg)
 
87
        try:
 
88
            from xml.dom import getDOMImplementation
 
89
            dom = getDOMImplementation("4DOM")
 
90
        except ImportError:
 
91
            # if we don't have 4suite installed, the docbook formatter would just raise an exception
 
92
            formatters.remove('text_docbook')
 
93
 
 
94
        testids = [
 
95
            r"tho/zeequeen&angu\za",
 
96
            r"quuirahz\iphohsaij,i",
 
97
            r"ashuifa+it[ohchieque",
 
98
            r"ohyie-lakoo`duaghaib",
 
99
            r"eixaepumuqu[ie\ba|eh",
 
100
            r"theegieque;zahmeitie",
 
101
            r"pahcooje&rahkeiz$oez",
 
102
            r"ohjeeng*iequao%fai?p",
 
103
            r"ahfoodahmepooquepee;",
 
104
            r"ubed_aex;ohwebeixah%",
 
105
            r"eitiekicaejuelae=g^u",
 
106
            r"",
 
107
            r'  ',
 
108
            r'--123',
 
109
            r'__$$',
 
110
            r'@@',
 
111
            u'\xf6\xf6llasdf\xe4',
 
112
        ]
 
113
 
 
114
        for f_name in formatters:
 
115
            try:
 
116
                formatter = wikiutil.importPlugin(self.request.cfg, "formatter",
 
117
                                                  f_name, "Formatter")
 
118
                f = formatter(self.request)
 
119
                for id in testids:
 
120
                    yield _verify, f, id
 
121
            except wikiutil.PluginAttributeError:
 
122
                pass
 
123
 
 
124
coverage_modules = ['MoinMoin.formatter',
 
125
                    'MoinMoin.formatter.text_html',
 
126
                    'MoinMoin.formatter.text_gedit',
 
127
                    'MoinMoin.formatter.text_xml',
 
128
                    'MoinMoin.formatter.text_docbook',
 
129
                    'MoinMoin.formatter.text_plain',
 
130
                    'MoinMoin.formatter.dom_xml',
 
131
                    'MoinMoin.formatter.text_python',
 
132
                    'MoinMoin.formatter.pagelinks',
 
133
                   ]
 
134