diff options
author | Simon McVittie <smcv@debian.org> | 2011-07-29 20:46:07 +0100 |
---|---|---|
committer | Simon McVittie <smcv@debian.org> | 2013-02-24 13:10:24 +0000 |
commit | 82537ecf19e57d2a4b096bcc51180df0a0cf6ad7 (patch) | |
tree | 8e6a0a3fd209c35c2b566e16428c4b102266333e /t/map.t | |
parent | 54a48e15d8804a7e61d01b70a5c5f2bbbfa6bf71 (diff) | |
download | ikiwiki-82537ecf19e57d2a4b096bcc51180df0a0cf6ad7.tar ikiwiki-82537ecf19e57d2a4b096bcc51180df0a0cf6ad7.tar.gz |
extend test, some cases now fail
Diffstat (limited to 't/map.t')
-rwxr-xr-x | t/map.t | 91 |
1 files changed, 71 insertions, 20 deletions
@@ -3,7 +3,7 @@ package IkiWiki; use warnings; use strict; -use HTML::TreeBuilder; +use XML::Twig; use Test::More; BEGIN { use_ok("IkiWiki"); } @@ -72,8 +72,8 @@ sub check_nodes { # expected is a list of hashes # ul is a list of li - foreach my $li ($ul->content_list) { - my @kids = $li->content_list; + foreach my $li ($ul->children) { + my @kids = $li->children; is($li->tag, 'li'); @@ -83,16 +83,15 @@ sub check_nodes { my $a = $kids[0]; if ($expectation->{parent}) { - is($a->attr('class'), 'mapparent'); + is($a->att('class'), 'mapparent'); } else { - is($a->attr('class'), 'mapitem'); + is($a->att('class'), 'mapitem'); } - is_deeply([$a->content_list], [$expectation->{name}]); + is_deeply([$a->text], [$expectation->{name}]); if (@{$expectation->{kids}}) { - is($kids[1]->tag, 'ul'); is(scalar @kids, 2); check_nodes($kids[1], $expectation->{kids}); @@ -106,30 +105,37 @@ sub check_nodes { sub check { my $pagespec = shift; my $expected = shift; + print "*** $pagespec ***\n"; my $html = IkiWiki::Plugin::map::preprocess(pages => $pagespec, page => 'map', destpage => 'map'); - my $tree = HTML::TreeBuilder->new; - $tree->implicit_tags(0); - $tree->unbroken_text(1); - $tree->strict_end(1); - $tree->strict_names(1); - $tree->strict_comment(1); - $tree->empty_element_tags(1); - $tree->parse_content($html); - my $fragment = $tree->disembowel; - print $fragment->dump; + my $tree = XML::Twig->new(pretty_print => 'indented'); + eval { + $tree->parse($html); + }; + if ($@) { + print "malformed XML: $@\n$html\n"; + ok(0); + } + my $fragment = $tree->root; is($fragment->tag, 'div'); - is($fragment->attr('class'), 'map'); + is($fragment->att('class'), 'map'); - check_nodes(($fragment->content_list)[0], $expected); + if (@$expected) { + check_nodes(($fragment->children)[0], $expected); + } + else { + ok(! $fragment->children); + } - $fragment->delete; + $tree->dispose; print "<!-- -->\n"; } +check('doesnotexist', []); + check('alpha', [node('alpha', [])]); check('alpha/*', @@ -172,6 +178,51 @@ check('alpha or alpha/1 or beta', node('beta', []), ]); +check('alpha/1 or beta', + [ + node('alpha', [ + node('1', []), + ], parent => 1), + node('beta', []), + ]); + +check('alpha/1/i* or alpha/2/a or beta', + [ + node('alpha', [ + node('1', [ + node('i', []), + node('ii', []), + node('iii', []), + node('iv', []), + ], parent => 1), + node('2', [ + node('a', []), + ], parent => 1), + ], parent => 1), + node('beta', []), + ]); + +check('alpha/1/i* or alpha/2/a', + [ + node('1', [ + node('i', []), + node('ii', []), + node('iii', []), + node('iv', []), + ], parent => 1), + node('2', [ + node('a', []), + ], parent => 1), + ]); + +check('alpha/1/i*', + [ + node('i', []), + node('ii', []), + node('iii', []), + node('iv', []), + ]); + done_testing; 1; |