diff options
Diffstat (limited to 'gnu/usr.bin/perl/cpan/File-CheckTree/t/CheckTree.t')
-rw-r--r-- | gnu/usr.bin/perl/cpan/File-CheckTree/t/CheckTree.t | 181 |
1 files changed, 181 insertions, 0 deletions
diff --git a/gnu/usr.bin/perl/cpan/File-CheckTree/t/CheckTree.t b/gnu/usr.bin/perl/cpan/File-CheckTree/t/CheckTree.t new file mode 100644 index 00000000000..d12d60cb02f --- /dev/null +++ b/gnu/usr.bin/perl/cpan/File-CheckTree/t/CheckTree.t @@ -0,0 +1,181 @@ +#!./perl -w + +use Test::More tests => 23; + +use strict; + +require overload; + +use File::CheckTree; +use File::Spec; # used to get absolute paths + +# We assume that we start from the dist/File-CheckTree in the perl repository, +# or the dist root directory for the CPAN version. + + +#### TEST 1 -- No warnings #### +# usings both relative and full paths, indented comments + +{ + my ($num_warnings, $path_to_libFileCheckTree); + $path_to_libFileCheckTree = File::Spec->rel2abs( + File::Spec->catfile('lib', 'File', 'CheckTree.pm'), + ); + + my @warnings; + local $SIG{__WARN__} = sub { push @warnings, "@_" }; + + eval { + $num_warnings = validate qq{ + lib -d +# comment, followed "blank" line (w/ whitespace): + + # indented comment, followed blank line (w/o whitespace): + + lib/File/CheckTree.pm -f + '$path_to_libFileCheckTree' -e || warn + }; + }; + + diag($_) for @warnings; + is( $@, '' ); + is( scalar @warnings, 0 ); + is( $num_warnings, 0 ); +} + + +#### TEST 2 -- One warning #### + +{ + my ($num_warnings, @warnings); + + local $SIG{__WARN__} = sub { push @warnings, "@_" }; + + eval { + $num_warnings = validate qq{ + lib -f + lib/File/CheckTree.pm -f + }; + }; + + is( $@, '' ); + is( scalar @warnings, 1 ); + like( $warnings[0], qr/lib is not a plain file/); + is( $num_warnings, 1 ); +} + + +#### TEST 3 -- Multiple warnings #### +# including first warning only from a bundle of tests, +# generic "|| warn", default "|| warn" and "|| warn '...' " + +{ + my ($num_warnings, @warnings); + + local $SIG{__WARN__} = sub { push @warnings, "@_" }; + + eval { + $num_warnings = validate q{ + lib -effd + lib/File/CheckTree.pm -f || die + lib/File/CheckTree.pm -d || warn + lib -f || warn "my warning: $file\n" + }; + }; + + is( $@, '' ); + is( scalar @warnings, 3 ); + like( $warnings[0], qr/lib is not a plain file/); + like( $warnings[1], qr{lib/File/CheckTree.pm is not a directory}); + like( $warnings[2], qr/my warning: lib/); + is( $num_warnings, 3 ); +} + + +#### TEST 4 -- cd directive #### +# cd directive followed by relative paths, followed by full paths +{ + my ($num_warnings, @warnings, $path_to_lib, $path_to_dist); + $path_to_lib = File::Spec->rel2abs(File::Spec->catdir('lib')); + $path_to_dist = File::Spec->rel2abs(File::Spec->curdir); + + local $SIG{__WARN__} = sub { push @warnings, "@_" }; + + eval { + $num_warnings = validate qq{ + lib -d || die + '$path_to_lib' cd + File -e + File -f + '$path_to_dist' cd + lib/File/CheckTree.pm -ef + lib/File/CheckTree.pm -d || warn + '$path_to_lib' -d || die + }; + }; + + is( $@, '' ); + is( scalar @warnings, 2 ); + like( $warnings[0], qr/File is not a plain file/); + like( $warnings[1], qr/CheckTree\.pm is not a directory/); + is( $num_warnings, 2 ); +} + + +#### TEST 5 -- Exception #### +# test with generic "|| die" +{ + my $num_warnings; + + eval { + $num_warnings = validate q{ + lib -ef || die + lib/File/CheckTree.pm -d + }; + }; + + like($@, qr/lib is not a plain file/); +} + + +#### TEST 6 -- Exception #### +# test with "|| die 'my error message'" +{ + my $num_warnings; + + eval { + $num_warnings = validate q{ + lib -ef || die "yadda $file yadda...\n" + lib/File/CheckTree.pm -d + }; + }; + + like($@, qr/yadda lib yadda/); + is( $num_warnings, undef ); +} + +#### TEST 7 -- Quoted file names #### +{ + my $num_warnings; + eval { + $num_warnings = validate q{ + "a file with whitespace" !-ef + 'a file with whitespace' !-ef + }; + }; + + is ( $@, '', 'No errors mean we compile correctly'); +} + +#### TEST 8 -- Malformed query #### +{ + my $num_warnings; + eval { + $num_warnings = validate q{ + a file with whitespace !-ef + }; + }; + + like( $@, qr/syntax error/, + 'We got a syntax error for a malformed file query' ); +} |