From a7a68417d0b0dd9499afb593c21cf1b5cda02ab3 Mon Sep 17 00:00:00 2001 From: Amitai Schlair Date: Mon, 18 Feb 2013 19:34:20 -0500 Subject: [PATCH] When inlining HTML pages, render enclosures. --- t/podcast.t | 38 ++++++++++++++++++++++++++++++++------ t/tinypodcast/fancy.mdwn | 1 + templates/inlinepage.tmpl | 6 ++++++ 3 files changed, 39 insertions(+), 6 deletions(-) create mode 100644 t/tinypodcast/fancy.mdwn diff --git a/t/podcast.t b/t/podcast.t index 3125a7e55..235c2e768 100755 --- a/t/podcast.t +++ b/t/podcast.t @@ -9,7 +9,7 @@ BEGIN { "XML::Feed and/or HTML::Parser not available"}; } else { - eval q{use Test::More tests => 81}; + eval q{use Test::More tests => 89}; } } @@ -125,6 +125,36 @@ sub single_page_html { ok(! system("rm -rf $tmp $statedir"), q{teardown}); } +sub inlined_pages_html { + my @command = (qw(./ikiwiki.out -plugin inline)); + push @command, qw(-underlaydir=underlays/basewiki); + push @command, qw(-set underlaydirbase=underlays -templatedir=templates); + push @command, qw(t/tinypodcast), "$tmp/out"; + + ok(! system("mkdir $tmp"), + q{setup}); + ok(! system(@command), + q{build}); + + my $html = "$tmp/out/fancy/index.html"; + my $contents = _extract_html_content($html, 'content'); + like($contents, qr/has content and an/m, + q{html body text from pianopost}); + like($contents, qr/has content and only one/m, + q{html body text from attempted_multiple_enclosures}); + my $enclosures = _extract_html_content($html, 'inlineenclosure'); + like($enclosures, qr/this episode/m, + q{html enclosure}); + my ($href) = _extract_html_links($html, 'piano.mp3'); + ok(-f $href, + q{html enclosure from pianopost exists}); + ($href) = _extract_html_links($html, 'walter.ogg'); + ok(-f $href, + q{html enclosure from attempted_multiple_enclosures exists}); + + ok(! system("rm -rf $tmp $statedir"), q{teardown}); +} + sub _extract_html_content { my ($file, $desired_id, $desired_tag) = @_; $desired_tag = 'div' unless defined $desired_tag; @@ -141,11 +171,6 @@ sub _extract_html_content { my ($dtext) = @_; $content .= $dtext; }, "dtext"); - - $self->handler(end => sub { - my ($tag, $self) = @_; - $self->eof if $tag eq $desired_tag; - }, "tagname,self"); }, "tagname,self,attr"); $p->parse_file($file) || die $!; @@ -172,3 +197,4 @@ sub _extract_html_links { simple_podcast(); single_page_html(); +inlined_pages_html(); diff --git a/t/tinypodcast/fancy.mdwn b/t/tinypodcast/fancy.mdwn new file mode 100644 index 000000000..290f4c2fd --- /dev/null +++ b/t/tinypodcast/fancy.mdwn @@ -0,0 +1 @@ +[[!inline pages="pianopost or attempted_multiple_enclosures"]] diff --git a/templates/inlinepage.tmpl b/templates/inlinepage.tmpl index b0b53d041..cf0b6037e 100644 --- a/templates/inlinepage.tmpl +++ b/templates/inlinepage.tmpl @@ -23,6 +23,12 @@ +
+