my $pod = get_raw_pod_section_from_string( $code, 'SYNOPSIS' );

is(
    $pod,
    undef,
    q<get_raw_pod_section_from_string('=pod', 'SYNOPSIS')>,
);

$pod = get_pod_section_from_string( $code, 'SYNOPSIS' );

is(
    $pod,
    undef,
    q<get_pod_section_from_string('=pod', 'SYNOPSIS')>,
);
}

{ my $code = <<'END_CODE'; =pod

FOO

Some plain text.

FOO

Some plain text.

END_EXPECTED is( $pod, $expected, q<get_raw_pod_section_from_string('=head1 FOO Some plain text.', 'FOO')>, );

$pod = get_pod_section_from_string( $code, 'FOO' );

$expected = <<'END_EXPECTED';
FOO
Some plain text.

END_EXPECTED is( $pod, $expected, q<get_pod_section_from_string('=head1 FOO Some plain text.', 'FOO')>, ); }

{ my $code = <<'END_CODE'; =pod

FOO

Some escaped text.

FOO

Some escaped text.

END_EXPECTED is( $pod, $expected, q/get_raw_pod_section_from_string('=head1 FOO Some escaped text.', 'FOO')/, );

$pod = get_pod_section_from_string( $code, 'FOO' );

$expected = <<'END_EXPECTED';
FOO
Some `escaped' text.

END_EXPECTED is( $pod, $expected, q/get_pod_section_from_string('=head1 FOO Some escaped text.', 'FOO')/, ); }

{ my $code = <<'END_CODE'; =pod

FOO

Some plain text.

BAR

FOO

Some plain text.

END_EXPECTED is( $pod, $expected, q<get_raw_pod_section_from_string('=head1 FOO ... =head1 BAR', 'FOO')>, );

$pod = get_pod_section_from_string( $code, 'FOO' );

$expected = <<'END_EXPECTED';
FOO
Some plain text.

END_EXPECTED is( $pod, $expected, q<get_pod_section_from_string('=head1 FOO ... =head1 BAR', 'FOO')>, ); }

{ my $code = <<'END_CODE'; =pod

FOO

Some plain text.

BAR

FOO

Some plain text.

BAR

END_EXPECTED is( $pod, $expected, q<get_raw_pod_section_from_string('=head1 FOO ... =head2 BAR', 'FOO')>, );

  $pod = get_pod_section_from_string( $code, 'FOO' );

  $expected = <<'END_EXPECTED';
FOO
  Some plain text.

BAR

END_EXPECTED is( $pod, $expected, q<get_pod_section_from_string('=head1 FOO ... =head2 BAR', 'FOO')>, ); }

{ my $code = <<'END_CODE'; =pod

FOO

Some plain text.

LYRICS

We like talking dirty. We smoke and we drink. We're KMFDM and all other bands stink.

END_POD

my $trimmed = trim_raw_pod_section( $original );

my $expected =
    q<We like talking dirty. We smoke and we drink. >
    . qq<We're KMFDM and all other bands\n>
    . q<stink.>;

is(
    $trimmed,
    $expected,
    'trim_raw_pod_section() with section header',
);

$trimmed = trim_pod_section( $original );

is(
    $trimmed,
    $expected,
    'trim_pod_section() with section header',
);
}

{ my $original = <<'END_VOCAL_SAMPLE';

You see, I believe in the noble, aristocratic art of doin' absolutely nothin'. And I hope someday to be in a position where I can do even less.

END_VOCAL_SAMPLE

my $trimmed = trim_raw_pod_section( $original );

my $expected =
    q<You see, I believe in the noble, aristocratic art of doin' >
    . qq<absolutely nothin'.\n>
    . q<And I hope someday to be in a position where I can do even >
    . q<less.>;

is(
    $trimmed,
    $expected,
    'trim_raw_pod_section() without section header',
);

$trimmed = trim_pod_section( $original );

is(
    $trimmed,
    $expected,
    'trim_pod_section() without section header',
);
}

{ my $original = <<'END_INDENTATION';

Some indented text.

END_INDENTATION

my $trimmed = trim_raw_pod_section( $original );

my $expected = q<Some indented text.>;

is(
    $trimmed,
    $expected,
    'trim_raw_pod_section() indented',
);

$trimmed = trim_pod_section( $original );

$expected = q<    > . $expected;

is(
    $trimmed,
    $expected,
    'trim_pod_section() indented',
);
}

#-----------------------------------------------------------------------------

{ my $source = <<'END_MODULE';

NAME

A::Stupendous::Module - An abstract.

END_MODULE

my $expected = q<An abstract.>;

my $result = get_raw_module_abstract_from_string( $source );

is(
    $result,
    $expected,
    q<get_raw_module_abstract_from_string() with proper abstract>,
);

$result = get_module_abstract_from_string( $source );

is(
    $result,
    $expected,
    q<get_module_abstract_from_string() with proper abstract>,
);
}

{ my $source = <<'END_MODULE';

NAME

A::Stupendous::Code::Module - An abstract involving $code.

END_MODULE

my $expected = q<An abstract involving C<$code>.>; ## no critic (RequireInterpolationOfMetachars)

my $result = get_raw_module_abstract_from_string( $source );

is(
    $result,
    $expected,
    q<get_raw_module_abstract_from_string() with proper abstract>,
);

$expected = q<An abstract involving `$code'.>; ## no critic (RequireInterpolationOfMetachars)

$result = get_module_abstract_from_string( $source );

is(
    $result,
    $expected,
    q<get_module_abstract_from_string() with proper abstract>,
);
}

{ my $source = <<'END_MODULE';

NOT NAME

There's nobody home.

END_MODULE

my $result = get_raw_module_abstract_from_string( $source );

is(
    $result,
    undef,
    q<get_raw_module_abstract_from_string() with no name section>,
);

$result = get_module_abstract_from_string( $source );

is(
    $result,
    undef,
    q<get_module_abstract_from_string() with no name section>,
);
}

{ my $source = <<'END_MODULE';

NAME

DESCRIPTION

END_MODULE

my $result = get_raw_module_abstract_from_string( $source );

is(
    $result,
    undef,
    q<get_raw_module_abstract_from_string() without NAME section content>,
);

$result = get_module_abstract_from_string( $source );

is(
    $result,
    undef,
    q<get_module_abstract_from_string() without NAME section content>,
);
}

{ my $source = <<'END_MODULE';

NAME

A::Not::So::Stupendous::Module

END_MODULE

my $result = get_raw_module_abstract_from_string( $source );

is(
    $result,
    undef,
    q<get_raw_module_abstract_from_string() with no abstract>,
);

$result = get_module_abstract_from_string( $source );

is(
    $result,
    undef,
    q<get_module_abstract_from_string() with no abstract>,
);
}

{ my $source = <<'END_MODULE';

NAME

A::Not::So::Stupendous::Module -

END_MODULE

my $result = get_raw_module_abstract_from_string( $source );

is(
    $result,
    undef,
    q<get_raw_module_abstract_from_string() with hyphen but no abstract>,
);

$result = get_module_abstract_from_string( $source );

is(
    $result,
    undef,
    q<get_module_abstract_from_string() with hyphen but no abstract>,
);
}

{ my $source = <<'END_MODULE';

NAME

A::Not::So::Stupendous::Module No hyphen.

END_MODULE

test_exception_from_get_raw_module_abstract_from_string(
    $source, q<with abstract but no hyphen>,
);

test_exception_from_get_module_abstract_from_string(
    $source, q<with abstract but no hyphen>,
);
}

{ my $source = <<'END_MODULE';

NAME

A::Not::So::Stupendous::Module -- Double hyphen.

END_MODULE

test_exception_from_get_raw_module_abstract_from_string(
    $source, q<with double hyphen>,
);

test_exception_from_get_module_abstract_from_string(
    $source, q<with double hyphen>,
);
}

{ my $source = <<'END_MODULE';

NAME

A::Not::So::Stupendous::Module - Abstract goes across multiple lines.

END_MODULE

test_exception_from_get_raw_module_abstract_from_string(
    $source, q<with multiple lines>,
);

# Cannot do this test: Pod::PlainText merges the lines. # test_exception_from_get_module_abstract_from_string( # $source, q<with multiple lines>, # ); }

#-----------------------------------------------------------------------------

sub test_exception_from_get_raw_module_abstract_from_string { my ($source, $name) = @_;

my $result;
my $message_like_name =
    qq<Got expected message for get_raw_module_abstract_from_string() $name>;

local $EVAL_ERROR = undef;
eval {
    $result = get_raw_module_abstract_from_string( $source );
};
_test_exception_from_get_module_abstract_from_string(
    $source, $name, $result, $message_like_name,
);

return;
}

sub test_exception_from_get_module_abstract_from_string { my ($source, $name) = @_;

my $result;
my $message_like_name =
    qq<Got expected message for get_module_abstract_from_string() $name>;

local $EVAL_ERROR = undef;
eval {
    $result = get_module_abstract_from_string( $source );
};
_test_exception_from_get_module_abstract_from_string(
    $source, $name, $result, $message_like_name,
);

return;
}

sub _test_exception_from_get_module_abstract_from_string { my ($source, $name, $result, $message_like_name) = @_;

my $eval_error = $EVAL_ERROR;
my $exception = Perl::Critic::Exception::Fatal::Generic->caught();

if (
    ok(
        ref $exception,
        qq<Got the right kind of exception for get_module_abstract_from_string() $name>,
    )
) {
    like( $exception->message(), $EXCEPTION_MESSAGE_REGEX, $message_like_name );
}
else {
    diag( 'Result: ', (defined $result ? ">$result<" : '<undef>') );
    if ($eval_error) {
        diag(
            qq<However, did get an exception: $eval_error>,
        );
        like( $eval_error, $EXCEPTION_MESSAGE_REGEX, $message_like_name );
    }
    else {
        fail($message_like_name);
    }
}

return;
}

#-----------------------------------------------------------------------------

# ensure we run true if this test is loaded by # t/05_utils_pod.t_without_optional_dependencies.t 1;

# Local Variables: # mode: cperl # cperl-indent-level: 4 # fill-column: 78 # indent-tabs-mode: nil # c-indentation-style: bsd # End: # ex: set ts=8 sts=4 sw=4 tw=78 ft=perl expandtab shiftround :

1 POD Error

The following errors were encountered while parsing the POD:

Around line 81:

=pod directives shouldn't be over one line long! Ignoring all 2 lines of content