import py |
from py.__.apigen import htmlgen |
from py.__.apigen.linker import Linker |
|
def assert_eq_string(string1, string2): |
if string1 == string2: |
return |
__tracebackhide__ = True |
for i, (c1, c2) in py.builtin.enumerate(zip(string1, string2)): |
if c1 != c2: |
start = max(0, i-20) |
end = i + 20 |
py.test.fail("strings not equal in position i=%d\n" |
"string1[%d:%d] = %r\n" |
"string2[%d:%d] = %r\n" |
"string1 = %r\n" |
"string2 = %r\n" |
% (i, |
start, end, string1[start:end], |
start, end, string2[start:end], |
string1, string2 |
)) |
|
def test_create_namespace_tree(): |
tree = htmlgen.create_namespace_tree(['foo.bar.baz']) |
assert tree == {'': ['foo'], |
'foo': ['foo.bar'], |
'foo.bar': ['foo.bar.baz']} |
tree = htmlgen.create_namespace_tree(['foo.bar.baz', 'foo.bar.qux']) |
assert tree == {'': ['foo'], |
'foo': ['foo.bar'], |
'foo.bar': ['foo.bar.baz', 'foo.bar.qux']} |
tree = htmlgen.create_namespace_tree(['pkg.sub.func', |
'pkg.SomeClass', |
'pkg.SomeSubClass']) |
assert tree == {'': ['pkg'], |
'pkg.sub': ['pkg.sub.func'], |
'pkg': ['pkg.sub', 'pkg.SomeClass', |
'pkg.SomeSubClass']} |
|
def test_source_dirs_files(): |
temp = py.test.ensuretemp('test_source_dirs_files') |
temp.join('dir').ensure(dir=True) |
temp.join('dir/file1.py').ensure(file=True) |
temp.join('dir/file2.pyc').ensure(file=True) |
temp.join('dir/file3.c').ensure(file=True) |
temp.join('dir/.hidden_file').ensure(file=True) |
temp.join('dir/sub').ensure(dir=True) |
temp.join('dir/.hidden_dir').ensure(dir=True) |
dirs, files = htmlgen.source_dirs_files(temp.join('dir')) |
dirnames = py.builtin.sorted([d.basename for d in dirs]) |
filenames = py.builtin.sorted([f.basename for f in files]) |
assert dirnames == ['sub'] |
assert filenames == ['file1.py', 'file3.c'] |
|
def test_deindent(): |
assert htmlgen.deindent('foo\n\n bar\n ') == 'foo\n\nbar\n' |
assert htmlgen.deindent(' foo\n\n bar\n ') == 'foo\n\nbar\n' |
assert htmlgen.deindent('foo\n\n bar\n baz') == 'foo\n\nbar\nbaz\n' |
assert htmlgen.deindent(' foo\n\n bar\n baz\n') == ( |
'foo\n\nbar\n baz\n') |
assert htmlgen.deindent('foo\n\n bar\n baz\n') == ( |
'foo\n\n bar\nbaz\n') |
|
def test_enumerate_and_color(): |
colored = htmlgen.enumerate_and_color(['def foo():', ' print "bar"'], 0, |
'ascii') |
div = py.xml.html.div(colored).unicode(indent=0) |
print repr(div) |
assert_eq_string(div, |
u'<div>' |
'<table class="codeblock">' |
'<tbody>' |
'<tr>' |
'<td style="width: 1%">' |
'<table>' |
'<tbody>' |
'<tr><td class="lineno">1</td></tr>' |
'<tr><td class="lineno">2</td></tr>' |
'</tbody>' |
'</table>' |
'</td>' |
'<td>' |
'<table>' |
'<tbody>' |
'<tr><td class="codecell">' |
'<pre class="code">' |
'<span class="alt_keyword">def</span> foo():' |
'</pre>' |
'</td></tr>' |
'<tr><td class="codecell">' |
'<pre class="code">' |
' <span class="alt_keyword">print</span>' |
' <span class="string">"bar"</span>' |
'</pre>' |
'</td></tr>' |
'</tbody>' |
'</table>' |
'</td>' |
'</tr>' |
'</tbody>' |
'</table>' |
'</div>') |
|
def test_enumerate_and_color_multiline(): |
colored = htmlgen.enumerate_and_color(['code = """\\', 'foo bar', '"""'], |
0, 'ascii') |
div = py.xml.html.div(colored).unicode(indent=0) |
print repr(div) |
assert_eq_string (div, |
u'<div>' |
'<table class="codeblock">' |
'<tbody>' |
'<tr>' |
'<td style="width: 1%">' |
'<table>' |
'<tbody>' |
'<tr><td class="lineno">1</td></tr>' |
'<tr><td class="lineno">2</td></tr>' |
'<tr><td class="lineno">3</td></tr>' |
'</tbody>' |
'</table>' |
'</td>' |
'<td>' |
'<table>' |
'<tbody>' |
'<tr><td class="codecell">' |
'<pre class="code">' |
'code = <span class="string">"""\\</span>' |
'</pre>' |
'</td></tr>' |
'<tr><td class="codecell">' |
'<pre class="code">' |
'<span class="string">foo bar</span>' |
'</pre>' |
'</td></tr>' |
'<tr><td class="codecell">' |
'<pre class="code">' |
'<span class="string">"""</span>' |
'</pre>' |
'</td></tr>' |
'</tbody>' |
'</table>' |
'</td>' |
'</tr>' |
'</tbody>' |
'</table>' |
'</div>') |
|
def test_show_property(): |
assert htmlgen.show_property('foo') |
assert not htmlgen.show_property('_foo') |
assert htmlgen.show_property('__foo__') |
assert not htmlgen.show_property('__doc__') |
assert not htmlgen.show_property('__dict__') |
assert not htmlgen.show_property('__name__') |
assert not htmlgen.show_property('__class__') |
|
def test_get_rel_sourcepath(): |
projpath = py.path.local('/proj') |
assert (htmlgen.get_rel_sourcepath(projpath, py.path.local('/proj/foo')) == |
'foo') |
assert (htmlgen.get_rel_sourcepath(projpath, py.path.local('/foo')) is |
None) |
assert (htmlgen.get_rel_sourcepath(projpath, py.path.local('<string>')) is |
None) |
|
|