[PATCH 2 of 3] drawdag: add a couple of doctests to help with python3 porting
Augie Fackler
raf at durin42.com
Wed Aug 23 10:57:57 EDT 2017
# HG changeset patch
# User Augie Fackler <raf at durin42.com>
# Date 1503499886 14400
# Wed Aug 23 10:51:26 2017 -0400
# Node ID de96681ea4cc716967307ccfdb7c4a1684c14f50
# Parent 9445a48c8752fafbfdbd5a5c51378119e1f3ea23
drawdag: add a couple of doctests to help with python3 porting
diff --git a/tests/drawdag.py b/tests/drawdag.py
--- a/tests/drawdag.py
+++ b/tests/drawdag.py
@@ -110,7 +110,52 @@ def _isname(ch):
return ch in _nonpipechars
def _parseasciigraph(text):
- """str -> {str : [str]}. convert the ASCII graph to edges"""
+ r"""str -> {str : [str]}. convert the ASCII graph to edges
+
+ >>> import pprint
+ >>> pprint.pprint({pycompat.sysstr(k): [pycompat.sysstr(vv) for vv in v]
+ ... for k, v in _parseasciigraph(b'''
+ ... G
+ ... |
+ ... I D C F # split: B -> E, F, G
+ ... \ \| | # replace: C -> D -> H
+ ... H B E # prune: F, I
+ ... \|/
+ ... A
+ ... ''').items()})
+ {'A': [],
+ 'B': ['A'],
+ 'C': ['B'],
+ 'D': ['B'],
+ 'E': ['A'],
+ 'F': ['E'],
+ 'G': ['F'],
+ 'H': ['A'],
+ 'I': ['H']}
+ >>> pprint.pprint({pycompat.sysstr(k): [pycompat.sysstr(vv) for vv in v]
+ ... for k, v in _parseasciigraph(b'''
+ ... o foo
+ ... |\
+ ... +---o bar
+ ... | | |
+ ... | o | baz
+ ... | /
+ ... +---o d
+ ... | |
+ ... +---o c
+ ... | |
+ ... o | b
+ ... |/
+ ... o a
+ ... ''').items()})
+ {'a': [],
+ 'b': ['a'],
+ 'bar': ['baz'],
+ 'baz': [],
+ 'c': ['b'],
+ 'd': ['b'],
+ 'foo': ['b']}
+ """
lines = text.splitlines()
edges = collections.defaultdict(list) # {node: []}
@@ -277,6 +322,18 @@ def _walkgraph(edges):
v.remove(leaf)
def _getcomments(text):
+ """
+ >>> [pycompat.sysstr(s) for s in _getcomments(b'''
+ ... G
+ ... |
+ ... I D C F # split: B -> E, F, G
+ ... \ \| | # replace: C -> D -> H
+ ... H B E # prune: F, I
+ ... \|/
+ ... A
+ ... ''')]
+ ['split: B -> E, F, G', 'replace: C -> D -> H', 'prune: F, I']
+ """
for line in text.splitlines():
if ' # ' not in line:
continue
diff --git a/tests/test-doctest.py b/tests/test-doctest.py
--- a/tests/test-doctest.py
+++ b/tests/test-doctest.py
@@ -55,3 +55,5 @@ testmod('hgext.convert.filemap')
testmod('hgext.convert.p4')
testmod('hgext.convert.subversion')
testmod('hgext.mq')
+# Helper scripts in tests/ that have doctests:
+testmod('drawdag')
More information about the Mercurial-devel
mailing list