1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-16 00:01:05 -08:00
emacs/mps/qa/test/script/commands/index
Richard Tucker 2284f79d8a Add version hu, split version and product, and improve option handling
Copied from Perforce
 Change: 20564
 ServerID: perforce.ravenbrook.com
1999-02-17 17:09:36 +00:00

88 lines
1.5 KiB
Perl

#!/usr/local/bin/perl
# $HopeName: MMQA_harness!script:commands:index(trunk.8) $
#
# make an index of all the tests (all .c files) in the
# current directory, and write it on stdout.
#
if (@ARGV == 0) {
@ARGV = (".");
}
$index_obj=$ARGV[0];
{
if (-d $index_obj) {
chdir($index_obj);
$index_obj = ".";
} else {
$dir = $index_obj;
if ($dir =~ s/(\/|\\|:)([^\\\/:]*)$//) {
$leaf = $2;
if ($leaf eq "") {
$leaf = ".";
}
if (-d $dir) {
chdir($dir);
$index_obj = $leaf;
}
}
}
opendir(DIR, ".");
@names = readdir(DIR);
closedir(DIR);
@filtered = ();
while (@names) {
$file = pop(@names);
unless ($file =~ /^\./ || -d $file) {
if (&filematch($index_obj, $file)) {
push(@filtered, $file);
}
}
}
foreach $file (sort by_number_first @filtered) {
eval {
&readheader($file, 0);
$testname = $test_header{"summary"};
unless (defined $testname) {
print $file.": ** bad test header **\n";
} else {
print $file.": ".$testname."\n";
}
}
}
}
sub by_number_first {
$aa = $a;
$bb = $b;
$aa =~ s/\D*//g;
$bb =~ s/\D*//g;
("0".$aa <=> "0".$bb) || ($a cmp $b);
}
sub filematch {
local ($p, $f, $n, $q, $a, $b) = @_;
if ($p eq ".") {
return 1;
}
if ($p =~ /\/(.*)\//) {
return $f =~ $1;
}
$n = $f;
$n =~ s/\D*//g;
$n = "0".$n;
if ($p =~ /(\d*)(.*)-+(\d*)(.*)/) {
$a = $1; $b = $3;
$a = 0 if ($a eq "");
$b = $n if ($b eq "");
return ($n >= $a && $n <= $b);
}
$p =~ /^(\d*)/;
if ($1 ne "") {
return $1 == $n;
}
return ($p eq $f);
}