summaryrefslogtreecommitdiff
path: root/t/lib/dosglob.t
blob: ea537bf6d1cb732856ddabf403c5d42b4419186b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#!./perl

#
# test glob() in File::DosGlob
#

BEGIN {
    chdir 't' if -d 't';
    unshift @INC, '../lib';
}

print "1..10\n";

# override it in main::
use File::DosGlob 'glob';

# test if $_ takes as the default
$_ = "lib/a*.t";
my @r = glob;
print "not " if $_ ne 'lib/a*.t';
print "ok 1\n";
# we should have at least abbrev.t, anydbm.t, autoloader.t
print "# |@r|\nnot " if @r < 3;
print "ok 2\n";

# check if <*/*> works
@r = <*/a*.t>;
# atleast {argv,abbrev,anydbm,autoloader,append,arith,array,assignwarn,auto}.t
print "not " if @r < 9;
print "ok 3\n";
my $r = scalar @r;

# check if scalar context works
@r = ();
while (defined($_ = <*/a*.t>)) {
    print "# $_\n";
    push @r, $_;
}
print "not " if @r != $r;
print "ok 4\n";

# check if array context works
@r = ();
for (<*/a*.t>) {
    print "# $_\n";
    push @r, $_;
}
print "not " if @r != $r;
print "ok 5\n";

# test if implicit assign to $_ in while() works
@r = ();
while (<*/a*.t>) {
    print "# $_\n";
    push @r, $_;
}
print "not " if @r != $r;
print "ok 6\n";

# test if explicit glob() gets assign magic too
my @s = ();
while (glob '*/a*.t') {
    print "# $_\n";
    push @s, $_;
}
print "not " if "@r" ne "@s";
print "ok 7\n";

# how about in a different package, like?
package Foo;
use File::DosGlob 'glob';
@s = ();
while (glob '*/a*.t') {
    print "# $_\n";
    push @s, $_;
}
print "not " if "@r" ne "@s";
print "ok 8\n";

# test if different glob ops maintain independent contexts
@s = ();
while (<*/a*.t>) {
    my $i = 0;
    print "# $_ <";
    push @s, $_;
    while (<*/b*.t>) {
        print " $_";
	$i++;
    }
    print " >\n";
}
print "not " if "@r" ne "@s";
print "ok 9\n";

# how about a global override, hm?
eval <<'EOT';
use File::DosGlob 'GLOBAL_glob';
package Bar;
@s = ();
while (<*/a*.t>) {
    my $i = 0;
    print "# $_ <";
    push @s, $_;
    while (glob '*/b*.t') {
        print " $_";
	$i++;
    }
    print " >\n";
}
print "not " if "@r" ne "@s";
print "ok 10\n";
EOT