⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basic.t

📁 source of perl for linux application,
💻 T
字号:
#!./perlBEGIN {    chdir 't' if -d 't';    if ($^O eq 'MacOS') { 	@INC = qw(: ::lib ::macos:lib);     } else { 	@INC = '.'; 	push @INC, '../lib';     }    require Config; import Config;    if ($Config{'extensions'} !~ /\bFile\/Glob\b/i) {        print "1..0\n";        exit 0;    }    print "1..13\n";}END {    print "not ok 1\n" unless $loaded;}use File::Glob ':glob';use Cwd ();$loaded = 1;print "ok 1\n";sub array {    return '(', join(", ", map {defined $_ ? "\"$_\"" : "undef"} @a), ")\n";}# look for the contents of the current directory$ENV{PATH} = "/bin";delete @ENV{BASH_ENV, CDPATH, ENV, IFS};@correct = ();if (opendir(D, $^O eq "MacOS" ? ":" : ".")) {   @correct = grep { !/^\./ } sort readdir(D);   closedir D;}@a = File::Glob::glob("*", 0);@a = sort @a;if ("@a" ne "@correct" || GLOB_ERROR) {    print "# |@a| ne |@correct|\nnot ";}print "ok 2\n";# look up the user's home directory# should return a list with one item, and not set ERRORif ($^O ne 'MSWin32' && $^O ne 'NetWare' && $^O ne 'VMS' && $^O ne 'os2'    && $^O ne 'beos') {  eval {    ($name, $home) = (getpwuid($>))[0,7];    1;  } and do {    if (defined $home && defined $name && -d $home) {	@a = bsd_glob("~$name", GLOB_TILDE);	if ((scalar(@a) != 1 || $a[0] ne $home || GLOB_ERROR)) {	    print "not ";	}    }  };}print "ok 3\n";# check backslashing# should return a list with one item, and not set ERROR@a = bsd_glob('TEST', GLOB_QUOTE);if (scalar @a != 1 || $a[0] ne 'TEST' || GLOB_ERROR) {    local $/ = "][";    print "# [@a]\n";    print "not ";}print "ok 4\n";# check nonexistent checks# should return an empty list# XXX since errfunc is NULL on win32, this test is not valid there@a = bsd_glob("asdfasdf", 0);if (($^O ne 'MSWin32' && $^O ne 'NetWare') and scalar @a != 0) {    print "# |@a|\nnot ";}print "ok 5\n";# check bad protections# should return an empty list, and set ERRORif ($^O eq 'mpeix' or $^O eq 'MSWin32' or $^O eq 'NetWare' or $^O eq 'os2' or $^O eq 'VMS'    or $^O eq 'cygwin' or Cwd::cwd() =~ m#^$Config{'afsroot'}#s or not $>){    print "ok 6 # skipped\n";}else {    $dir = "pteerslo";    mkdir $dir, 0;    @a = bsd_glob("$dir/*", GLOB_ERR);    #print "\@a = ", array(@a);    rmdir $dir;    if (scalar(@a) != 0 || GLOB_ERROR == 0) {	if ($^O eq 'vos') {	    print "not ok 6 # TODO hit VOS bug posix-956\n";	} else {	    print "not ok 6\n";	}    }    else {	print "ok 6\n";    }}# check for csh style globbing@a = bsd_glob('{a,b}', GLOB_BRACE | GLOB_NOMAGIC);unless (@a == 2 and $a[0] eq 'a' and $a[1] eq 'b') {    print "not ";}print "ok 7\n";@a = bsd_glob(    '{TES*,doesntexist*,a,b}',    GLOB_BRACE | GLOB_NOMAGIC | ($^O eq 'VMS' ? GLOB_NOCASE : 0));# Working on t/TEST often causes this test to fail because it sees Emacs temp# and RCS files.  Filter them out, and .pm files too, and patch temp files.@a = grep !/(,v$|~$|\.(pm|ori?g|rej)$)/, @a;@a = (grep !/test.pl/, @a) if $^O eq 'VMS';print "# @a\n";unless (@a == 3        and $a[0] eq ($^O eq 'VMS'? 'test.' : 'TEST')        and $a[1] eq 'a'        and $a[2] eq 'b'){    print "not ok 8 # @a\n";} else {    print "ok 8\n";}# "~" should expand to $ENV{HOME}$ENV{HOME} = "sweet home";@a = bsd_glob('~', GLOB_TILDE | GLOB_NOMAGIC);unless ($^O eq "MacOS" || (@a == 1 and $a[0] eq $ENV{HOME})) {    print "not ";}print "ok 9\n";# GLOB_ALPHASORT (default) should sort alphabetically regardless of casemkdir "pteerslo", 0777;chdir "pteerslo";@f_names = qw(Ax.pl Bx.pl Cx.pl aY.pl bY.pl cY.pl);@f_alpha = qw(Ax.pl aY.pl Bx.pl bY.pl Cx.pl cY.pl);if ('a' lt 'A') { # EBCDIC char sets sort lower case before UPPER    @f_names = sort(@f_names);}if ($^O eq 'VMS') { # VMS is happily caseignorant    @f_alpha = qw(ax.pl ay.pl bx.pl by.pl cx.pl cy.pl);    @f_names = @f_alpha;}for (@f_names) {    open T, "> $_";    close T;}$pat = "*.pl";$ok = 1;@g_names = bsd_glob($pat, 0);print "# f_names = @f_names\n";print "# g_names = @g_names\n";for (@f_names) {    $ok = 0 unless $_ eq shift @g_names;}print $ok ? "ok 10\n" : "not ok 10\n";$ok = 1;@g_alpha = bsd_glob($pat);print "# f_alpha = @f_alpha\n";print "# g_alpha = @g_alpha\n";for (@f_alpha) {    $ok = 0 unless $_ eq shift @g_alpha;}print $ok ? "ok 11\n" : "not ok 11\n";unlink @f_names;chdir "..";rmdir "pteerslo";# this can panic if PL_glob_index gets passed as flags to bsd_glob<*>; <*>;print "ok 12\n";{    use File::Temp qw(tempdir);    use File::Spec qw();    my($dir) = tempdir(CLEANUP => 1)	or die "Could not create temporary directory";    for my $file (qw(a_dej a_ghj a_qej)) {	open my $fh, ">", File::Spec->catfile($dir, $file)	    or die "Could not create file $dir/$file: $!";	close $fh;    }    my $cwd = Cwd::cwd();    chdir $dir	or die "Could not chdir to $dir: $!";    my(@glob_files) = glob("a*{d[e]}j");    if (!(@glob_files == 1 && "@glob_files" eq "a_dej")) {	print "not ";    }    my $todo = $^O ne 'VMS' ? '' : " # TODO home-made glob doesn't do regexes";    print "ok 13$todo\n";    chdir $cwd	or die "Could not chdir back to $cwd: $!";}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -