1#!./perl 2 3BEGIN { 4 chdir 't' if -d 't'; 5 @INC = '../lib'; 6} 7 8use Test::More tests => 7; 9 10BEGIN { use_ok('Shell'); } 11 12my $so = Shell->new; 13ok($so, 'Shell->new'); 14 15my $Is_VMS = $^O eq 'VMS'; 16my $Is_MSWin32 = $^O eq 'MSWin32'; 17my $Is_NetWare = $^O eq 'NetWare'; 18 19$Shell::capture_stderr = 1; 20 21# Now test that that works .. 22 23my $tmpfile = 'sht0001'; 24while ( -f $tmpfile ) { 25 $tmpfile++; 26} 27END { -f $tmpfile && (open STDERR, '>&SAVERR' and unlink $tmpfile) } 28 29 30open(SAVERR, ">&STDERR"); 31open(STDERR, ">$tmpfile"); 32 33xXx_not_there(); # Ok someone could have a program called this :( 34 35# On os2 the warning is on by default... 36ok(($^O eq 'os2' xor !(-s $tmpfile)), '$Shell::capture_stderr'); 37 38$Shell::capture_stderr = 0; 39 40# someone will have to fill in the blanks for other platforms 41 42if ($Is_VMS) { 43 ok(directory(), 'Execute command'); 44 my @files = directory('*.*'); 45 ok(@files, 'Quoted arguments'); 46 47 ok(eq_array(\@files, [$so->directory('*.*')]), 'object method'); 48 eval { $so->directory }; 49 ok(!$@, '2 methods calls'); 50} elsif ($Is_MSWin32) { 51 ok(dir(), 'Execute command'); 52 my @files = dir('*.*'); 53 ok(@files, 'Quoted arguments'); 54 55 ok(eq_array(\@files, [$so->dir('*.*')]), 'object method'); 56 eval { $so->dir }; 57 ok(!$@, '2 methods calls'); 58} else { 59 ok(ls(), 'Execute command'); 60 my @files = ls('*'); 61 ok(@files, 'Quoted arguments'); 62 63 ok(eq_array(\@files, [$so->ls('*')]), 'object method'); 64 eval { $so->ls }; 65 ok(!$@, '2 methods calls'); 66 67} 68open(STDERR, ">&SAVERR") ; 69