Pod-Weaver

 view release on metacpan or  search on metacpan

t/version_options.t  view on Meta::CPAN

use strict;
use warnings;

use Test::More;
use Test::Differences;

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',
);

do_weave(
  configer( format => ["%v", "FOOBAZ", "", "EXPLANATION"] ),
  'version_t6',
);

do_weave(
  configer(format => [
    "%v",
    "FOOBAZ",
    "",
    "EXPLANATION",
    "%T",
    "%T This is a trial release.",
  ]),
  'version_t6',
  'version_t6',
);

do_weave(
  configer(format => [
    "%v",
    "FOOBAZ",
    "",
    "EXPLANATION",
    "%T",
    "%T This is a trial release.",
  ]),
  'version_t6',
  'version_t6-trial',
  { is_trial => 1 },
);

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 ) {
    if (ref $opts{ $k }) {
      $assembler->add_value( $k => $_ ) for @{ $opts{ $k } };
    } else {
      $assembler->add_value( $k => $opts{ $k } );
    }
  }
  $assembler->change_section('Leftovers');

  return Pod::Weaver->new_from_config_sequence( $assembler->sequence );
}



( run in 1.593 second using v1.01-cache-2.11-cpan-39bf76dae61 )