The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;

use Test::NoTabs;
use FindBin qw/$Bin/;

use File::Temp qw( tempdir tempfile );

all_perl_files_ok("$Bin/../lib");

notabs_ok( $0, "$0 is tab free" );

my $tabbed_file1 = make_tabbed_file1();
notabs_ok( $tabbed_file1 );

my $tabbed_file2 = make_tabbed_file2();
notabs_ok( $tabbed_file2 );

my $tabbed_file3 = make_tabbed_file3();
notabs_ok( $tabbed_file3 );

unlink foreach ( $tabbed_file1, $tabbed_file2, $tabbed_file3 );

sub make_tabbed_file1 {
  my ($fh, $filename) = tempfile();
  print $fh <<'DUMMY';
#!/usr/bin/perl -w

=pod

=head1 NAME

This test script doesn't do anything.

=cut

sub main {
    my ($name) = @_;
    print "Hello $name!\n";
}

DUMMY
  return $filename;
}

sub make_tabbed_file2 {
  my ($fh, $filename) = tempfile();
  print $fh <<'DUMMY';
#!/usr/bin/perl -w

=pod

=head1 NAME

This test script doesn't do anything.

	Its OK to have tabs in pod

=cut

sub main {
    my ($name) = @_;
    print "Hello $name!\n";
}

DUMMY
  return $filename;
}

sub make_tabbed_file3 {
  my ($fh, $filename) = tempfile();
  print $fh <<'DUMMY';
package My::Test;

use strict;
use warnings;

sub new {
    my ($class) = @_;
    my $self = bless {}, $class;
    return $self;
}

1;
__END__
	I can have tabs here too!
DUMMY
  return $filename;
}