/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to tools/rst2prettyhtml.py

  • Committer: Vincent Ladeuil
  • Date: 2009-04-11 16:06:53 UTC
  • mto: (4286.1.1 integration)
  • mto: This revision was merged to the branch mainline in revision 4287.
  • Revision ID: v.ladeuil+lp@free.fr-20090411160653-eq1gfn41q3lzhmss
Cleanup test imports and use features to better track skipped tests.

* bzrlib/tests/workingtree_implementations/__init__.py: 
Fix imports. Delete obsolete comment.

* bzrlib/tests/tree_implementations/test_walkdirs.py:
(TestWalkdirs.get_all_subdirs_expected): Reduce duplication.

* bzrlib/tests/tree_implementations/test_test_trees.py: 
Fix import.

* bzrlib/tests/tree_implementations/test_path_content_summary.py: 
Fix imports.

(TestPathContentSummary.test_unicode_symlink_content_summary,
TestPathContentSummary.test_unicode_symlink_target_summary):Use
UnicodeFilenameFeature instead of try/except UnicodeError.

* bzrlib/tests/tree_implementations/test_inv.py: 
Fix imports.
(TestInventoryWithSymlinks): Factor out test that requires
symlinks and use _test_needs_features.
(TestInventory.test_canonical_path,
TestInventory.test_canonical_path_dir,
TestInventory.test_canonical_path_root,
TestInventory.test_canonical_path_invalid_all,
TestInventory.test_canonical_invalid_child): Use assert(expected,
actual)

* bzrlib/tests/tree_implementations/test_get_symlink_target.py: 
Fix imports.
(TestGetSymlinkTarget.test_get_unicode_symlink_target): Use
UnicodeFilenameFeature instead of try/except UnicodeError.

* bzrlib/tests/tree_implementations/__init__.py: 
Fix imports.

(TestCaseWithTree.get_tree_with_subdirs_and_all_supported_content_types,
TestCaseWithTree._create_tree_with_utf8): Use
UnicodeFilenameFeature instead of try/except UnicodeError.

* bzrlib/tests/test_workingtree_4.py:
Fix too long lines.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/env python
 
2
 
 
3
import errno
 
4
import os
 
5
from StringIO import StringIO
 
6
import sys
 
7
 
 
8
try:
 
9
    from docutils.core import publish_file
 
10
    from docutils.parsers import rst
 
11
except ImportError:
 
12
    print "Missing dependency.  Please install docutils."
 
13
    sys.exit(1)
 
14
try:
 
15
    from elementtree.ElementTree import XML
 
16
    from elementtree import HTMLTreeBuilder
 
17
except ImportError:
 
18
    print "Missing dependency.  Please install ElementTree."
 
19
    sys.exit(1)
 
20
try:
 
21
    import kid
 
22
except ImportError:
 
23
    print "Missing dependency.  Please install Kid."
 
24
    sys.exit(1)
 
25
 
 
26
 
 
27
def kidified_rest(rest_file, template_name):
 
28
    xhtml_file = StringIO()
 
29
    # prevent docutils from autoclosing the StringIO
 
30
    xhtml_file.close = lambda: None
 
31
    xhtml = publish_file(rest_file, writer_name='html', destination=xhtml_file,
 
32
                         settings_overrides={"doctitle_xform": 0} 
 
33
    
 
34
    )
 
35
    xhtml_file.seek(0)
 
36
    xml = HTMLTreeBuilder.parse(xhtml_file)
 
37
    head = xml.find('head')
 
38
    body = xml.find('body')
 
39
    assert head is not None
 
40
    assert body is not None
 
41
    template=kid.Template(file=template_name, 
 
42
                          head=head, body=body)
 
43
    return (template.serialize(output="html"))
 
44
 
 
45
 
 
46
def safe_open(filename, mode):
 
47
    try:
 
48
        return open(filename, mode + 'b')
 
49
    except IOError, e:
 
50
        if e.errno != errno.ENOENT:
 
51
            raise
 
52
        sys.stderr.write('file not found: %s\n' % sys.argv[2])
 
53
        sys.exit(3)
 
54
 
 
55
 
 
56
def main(template, source=None, target=None):
 
57
    if source is not None:
 
58
        rest_file = safe_open(source, 'r')
 
59
    else:
 
60
        rest_file = sys.stdin
 
61
    if target is not None:
 
62
        out_file = safe_open(target, 'w')
 
63
    else:
 
64
        out_file = sys.stdout
 
65
    out_file.write(kidified_rest(rest_file, template))
 
66
 
 
67
assert len(sys.argv) > 1
 
68
 
 
69
# Strip options so only the arguments are passed
 
70
args = [x for x in sys.argv[1:] if not x.startswith('-')]
 
71
main(*args)