The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

# Regression testing for rt.cpan.org

use strict;
BEGIN {
	$|  = 1;
	$^W = 1;
}

use File::Spec::Functions ':ALL';
use Test::More tests => 7;
use Test::Inline ();





# Change to the correct directory
chdir catdir( 't', 'data', '09_regression' ) or die "Failed to change to test directory";





#####################################################################
# Regression tests for rt.cpan.org bug #557
# (Test::Inline doesn't catch improper nesting)

{
	# Create basic Test::Inline object
	my $Inline = My::Inline->new();
	isa_ok( $Inline, 'Test::Inline' );

	my @errors = '';

	# Add the files
	my $rv = $Inline->add( 'My/BadPodNesting.pm' );
	is( $rv, undef, 'Adding bad file returns undef' );
	is_deeply( \@errors, [ 
		'Failed to parse sections: Test::Inline::Section: POD statement \'=begin testing bar\' illegally nested inside of section \'=begin testing foo\''
		],
		'Bad nesting error is triggered as expected' );

	package My::Inline;
	
	use base 'Test::Inline';

	sub _error {
		shift;
		@errors = @_;
		undef;
	}

	1;
}




#####################################################################
# Regression tests for anonymous bug
# "=begin testing SETUP after DDS::Info 1" is not a setup section

{
	my $POD = <<'END_POD';
=begin testing SETUP after DDS::Info 1

# This is ok
ok( 1, 'This is true' );

=end testing
END_POD

	# Create the Section
	my $Section = Test::Inline::Section->new( $POD );
	isa_ok( $Section, 'Test::Inline::Section' );

	ok( $Section->setup, 'Is a setup section' );
	ok( ! $Section->example, 'Is not an example section' );
	is( $Section->name, '', 'Does not have a name' );
}