This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add perldelta entry for 8a384d3a99 (ParseXS and locales).
[perl5.git] / t / op / glob.t
index 8ad827e..e6f3680 100644 (file)
@@ -6,7 +6,7 @@ BEGIN {
     require 'test.pl';
 }
 
-plan( tests => 17 );
+plan( tests => 18 );
 
 @oops = @ops = <op/*>;
 
@@ -110,3 +110,37 @@ SKIP: {
     eval 'CORE::glob("0")';
     ok !$called, 'CORE::glob bypasses overrides';
 }
+
+######## glob() bug Mon, 01 Sep 2003 02:25:41 -0700 <200309010925.h819Pf0X011457@smtp3.ActiveState.com>
+
+SKIP: {
+    use Config;
+    skip("glob() works when cross-compiling, but this test doesn't", 1)
+        if $Config{usecrosscompile};
+
+    my $switches = [qw(-lw)];
+    my $expected = "ok1\nok2\n";
+    my $name     = "Make sure the presence of the CORE::GLOBAL::glob typeglob does not affect whether File::Glob::csh_glob is called.";
+
+    fresh_perl_is(<<'EOP', $expected, { switches => $switches }, $name);
+    if ($^O eq 'VMS') {
+        # A pattern with a double quote in it is a syntax error to LIB$FIND_FILE
+        # Should we strip quotes in Perl_vms_start_glob the way csh_glob() does?
+        print "ok1\nok2\n";
+    }
+    else {
+        ++$INC{"File/Glob.pm"}; # prevent it from loading
+        my $called1 = 0;
+        my $called2 = 0;
+        *File::Glob::csh_glob = sub { ++$called1 };
+        my $output1 = eval q{ glob(q(./"TEST")) };
+        undef *CORE::GLOBAL::glob; # but leave the typeglob itself there
+        ++$CORE::GLOBAL::glob if 0; # "used only once"
+        undef *File::Glob::csh_glob; # avoid redefinition warnings
+        *File::Glob::csh_glob = sub { ++$called2 };
+        my $output2 = eval q{ glob(q(./"TEST")) };
+        print "ok1" if $called1 eq $called2;
+        print "ok2" if $output1 eq $output2;
+    }
+EOP
+}
\ No newline at end of file