xref: /openbsd-src/gnu/usr.bin/perl/ext/File-Glob/t/global.t (revision 5486feefcc8cb79b19e014ab332cc5dfd05b3b33)
143003dfeSmillert#!./perl
243003dfeSmillert
343003dfeSmillertBEGIN {
443003dfeSmillert    chdir 't' if -d 't';
5898184e3Ssthen    @INC = '../lib';
643003dfeSmillert    require Config; import Config;
743003dfeSmillert    if ($Config{'extensions'} !~ /\bFile\/Glob\b/i) {
843003dfeSmillert        print "1..0\n";
943003dfeSmillert        exit 0;
1043003dfeSmillert    }
1143003dfeSmillert}
12898184e3Ssthen
13898184e3Ssthenuse Test::More tests => 11;
1443003dfeSmillert
1543003dfeSmillertBEGIN {
1643003dfeSmillert    *CORE::GLOBAL::glob = sub { "Just another Perl hacker," };
1743003dfeSmillert}
1843003dfeSmillert
1943003dfeSmillertBEGIN {
2043003dfeSmillert    if ("Just another Perl hacker," ne (<*>)[0]) {
2143003dfeSmillert        die <<EOMessage;
2243003dfeSmillertYour version of perl ($]) doesn't seem to allow extensions to override
2343003dfeSmillertthe core glob operator.
2443003dfeSmillertEOMessage
2543003dfeSmillert    }
2643003dfeSmillert}
2743003dfeSmillert
28898184e3SsthenBEGIN {
29898184e3Ssthen    use_ok('File::Glob', ':globally');
3043003dfeSmillert}
31898184e3Ssthen
32898184e3Ssthen$_ = "op/*.t";
33898184e3Ssthenmy @r = glob;
34*5486feefSafresh1is($_, "op/*.t", 'pattern intact after use of core glob function');
35898184e3Ssthen
36*5486feefSafresh1cmp_ok(scalar @r, '>=', 3, 'check if core glob function works');
37898184e3Ssthen
38898184e3Ssthen@r = <*/*.t>;
3943003dfeSmillert# at least t/global.t t/basic.t, t/taint.t
40898184e3Ssthencmp_ok(scalar @r, '>=', 3, 'check if <*/*> works');
4143003dfeSmillertmy $r = scalar @r;
4243003dfeSmillert
4343003dfeSmillert@r = ();
4443003dfeSmillertwhile (defined($_ = <*/*.t>)) {
4543003dfeSmillert  #print "# $_\n";
4643003dfeSmillert  push @r, $_;
4743003dfeSmillert}
48898184e3Ssthenis(scalar @r, $r, 'check if scalar context works');
4943003dfeSmillert
5043003dfeSmillert@r = ();
5143003dfeSmillertfor (<*/*.t>) {
5243003dfeSmillert  #print "# $_\n";
5343003dfeSmillert  push @r, $_;
5443003dfeSmillert}
55898184e3Ssthenis(scalar @r, $r, 'check if list context works');
5643003dfeSmillert
5743003dfeSmillert@r = ();
5843003dfeSmillertwhile (<*/*.t>) {
5943003dfeSmillert  #print "# $_\n";
6043003dfeSmillert  push @r, $_;
6143003dfeSmillert}
62898184e3Ssthenis(scalar @r, $r, 'implicit assign to $_ in while()');
6343003dfeSmillert
6443003dfeSmillertmy @s = ();
65898184e3Ssthenwhile (glob('*/*.t')) {
6643003dfeSmillert    #print "# $_\n";
6743003dfeSmillert    push @s, $_;
6843003dfeSmillert}
69898184e3Ssthenis("@r", "@s", 'explicit glob() gets assign magic too');
7043003dfeSmillert
7143003dfeSmillertpackage Foo;
7243003dfeSmillertuse File::Glob ':globally';
7343003dfeSmillert@s = ();
74898184e3Ssthenwhile (glob('*/*.t')) {
7543003dfeSmillert    #print "# $_\n";
7643003dfeSmillert    push @s, $_;
7743003dfeSmillert}
78898184e3Ssthenmain::is("@r", "@s", 'in a different package');
7943003dfeSmillert
8043003dfeSmillert# test if different glob ops maintain independent contexts
8143003dfeSmillert@s = ();
8243003dfeSmillertmy $i = 0;
8343003dfeSmillertwhile (<*/*.t>) {
8443003dfeSmillert  #print "# $_ <";
8543003dfeSmillert  push @s, $_;
8643003dfeSmillert  while (<bas*/*.t>) {
8743003dfeSmillert    #print " $_";
8843003dfeSmillert    $i++;
8943003dfeSmillert  }
9043003dfeSmillert  #print " >\n";
9143003dfeSmillert}
92898184e3Ssthen
93898184e3Ssthenmain::is("@r", "@s", 'different glob ops maintain independent contexts');
94898184e3Ssthenmain::isnt($i, 0, 'different glob ops maintain independent contexts');
95