added warking on --strip-* options
[docutils.git] / test / test_traversals.py
blob831ef8e67b77200bd2f527d86a980442755a4289
1 #! /usr/bin/env python
3 # $Id$
4 # Author: Martin Blais <blais@furius.ca>
5 # Copyright: This module has been placed in the public domain.
7 """
8 Test module for traversals.
9 """
11 import unittest
12 import DocutilsTestSupport # must be imported before docutils
13 from docutils import nodes, core, io, utils, writers
14 from docutils.writers.null import Writer as NullWriter
15 import docutils
19 stop_traversal_input = '''
20 ==================
21 Train Travel
22 ==================
24 Happily, happily going by train.
26 .. attention:: Attention, attention. This is a public annoucement.
27 You must get off the train now.
29 KaZoom! Train crashes.
31 - Told ya!!! Get off the train next time.
33 '''
35 class AttentiveVisitor(nodes.SparseNodeVisitor):
37 def visit_attention(self, node):
38 raise nodes.StopTraversal
40 def visit_bullet_list(self, node):
41 raise RuntimeError("It's too late for attention, "
42 "more discipline is needed!.")
44 class AttentiveWriter(writers.Writer):
46 def translate(self):
47 self.visitor = visitor = AttentiveVisitor(self.document)
49 # Test both kinds of traversals.
50 self.document.walkabout(visitor)
51 self.document.walk(visitor)
53 class StopTraversalTests(unittest.TestCase, docutils.SettingsSpec):
54 """
55 Test interrupting the visitor during traversal. In this test we stop it
56 when we reach an attention node.
57 """
58 def test_stop_traversal(self):
59 # Load some document tree in memory.
60 doctree = docutils.core.publish_doctree(
61 source=stop_traversal_input,
62 reader_name='standalone',
63 parser_name='restructuredtext',
64 settings_spec=self)
65 self.assert_(isinstance(doctree, nodes.document))
67 parts = docutils.core.publish_parts(
68 reader_name='doctree', source_class=docutils.io.DocTreeInput,
69 source=doctree, source_path='test',
70 writer=AttentiveWriter())
73 if __name__ == '__main__':
74 unittest.main()