Added a test to make sure pickled doctrees still have their uids

This commit is contained in:
Daniel Neuhäuser 2010-08-14 11:11:50 +02:00
parent 24979fbde1
commit 07db8c03d2

View File

@ -8,10 +8,14 @@
:copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
import pickle
from util import *
from docutils.statemachine import ViewList
from docutils.parsers.rst.directives.html import MetaBody
from sphinx import addnodes
from sphinx.versioning import make_diff, add_uids, merge_doctrees
def setup_module():
@ -50,6 +54,19 @@ def is_paragraph(node):
def test_add_uids():
assert len(original_uids) == 3
def test_picklablility():
# we have to modify the doctree so we can pickle it
copy = original.copy()
copy.reporter = None
copy.transformer = None
copy.settings.warning_stream = None
copy.settings.env = None
copy.settings.record_dependencies = None
for metanode in copy.traverse(MetaBody.meta):
metanode.__class__ = addnodes.meta
loaded = pickle.loads(pickle.dumps(copy, pickle.HIGHEST_PROTOCOL))
assert all(getattr(n, 'uid', False) for n in loaded.traverse(is_paragraph))
def test_modified():
modified = doctrees['versioning/modified']
new_nodes = list(merge_doctrees(original, modified, is_paragraph))