forked from rjbs/Pod-Weaver
-
Notifications
You must be signed in to change notification settings - Fork 0
/
version_options.t
72 lines (55 loc) · 2.02 KB
/
version_options.t
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
use strict;
use warnings;
use Test::More;
use Test::Differences;
use Moose::Autobox 0.10;
use PPI;
use Pod::Elemental;
use Pod::Weaver;
# Test various combinations of options for Section::Version
do_weave( configer( ), 'version_t1' );
do_weave( configer( is_verbatim => 1 ), 'version_t2' );
do_weave( configer( format => "%v FOOBAZ" ), 'version_t3' );
do_weave( configer( format => "%t%v%t-%t%m", is_verbatim => 1 ), 'version_t4' );
# In order to test DateTime, we have to avoid touching the time! Hence UTC and the weird CLDR here...
do_weave( configer( format => "%v - %{ZZZZ G}d", time_zone => 'UTC' ), 'version_t5' );
sub configer {
my %opts = @_;
# TODO Hmpf, is there an easier way for this? --APOCAL
my $assembler = Pod::Weaver::Config::Assembler->new;
$assembler->sequence->add_section( $assembler->section_class->new({ name => '_' }) );
$assembler->change_section('@CorePrep');
$assembler->change_section('Name');
$assembler->change_section('Version');
foreach my $k ( keys %opts ) {
$assembler->add_value( $k => $opts{ $k } );
}
$assembler->change_section('Leftovers');
return Pod::Weaver->new_from_config_sequence( $assembler->sequence );
}
my $perl_document;
sub do_weave {
my( $weaver, $filename ) = @_;
my $in_pod = do { local $/; open my $fh, '<', "t/eg/$filename.in.pod"; <$fh> };
my $expected = do { local $/; open my $fh, '<', "t/eg/$filename.out.pod"; <$fh> };
my $document = Pod::Elemental->read_string($in_pod);
$perl_document = do { local $/; <DATA> } if ! defined $perl_document;
my $ppi_document = PPI::Document->new(\$perl_document);
my $woven = $weaver->weave_document({
pod_document => $document,
ppi_document => $ppi_document,
version => '1.012078',
});
# XXX: This test is extremely risky as things change upstream.
# -- rjbs, 2009-10-23
eq_or_diff(
$woven->as_pod_string,
$expected,
"exactly the pod string we wanted after weaving for $filename!",
);
}
done_testing;
__DATA__
package Module::Name;
# ABSTRACT: abstract text
my $this = 'a test';