BEGIN {
$| = 1; print "1..8\n";
%tempfiles = ();
}
END {
print("not ok 1\n") unless $loaded;
for my $f (keys %tempfiles) {
warn("unlink($f)...\n"), unlink($f) if -e $f;
}
}
use Fan::Scan;
$loaded = 1;
print("ok 1\n");
$tmp1 = "tmp$$.1";
$tempfiles{$tmp1}++;
$tmp2 = "tmp$$.2";
$tempfiles{$tmp2}++;
$Fan::Scan::LOG = 6;
$scan = Fan::Scan->new(
scan_type => 'LOCAL',
scan_dir => '../.',
);
ref($scan) && $scan->isa('Fan::Scan')
or print("not ok 2\n"), exit(1);
print("ok 2\n");
$scan->add_filter(\&filter, $tmp1, $tmp2)
or print("not ok 3\n"), exit(1);
print("ok 3\n");
$fh = Fan::Scan::fileglob($tmp1, 'w');
defined(fileno($fh))
or print("not ok 4\n"), exit(1);
print("ok 4\n");
while (defined($a = $scan->get)) {
$a->fill_checksum;
print $fh $a->to_line."\n";
}
undef $a;
undef $fh; # this cause closing $tmp1.
undef $scan;
$scan = Fan::Scan->guess('..'),
ref($scan) && $scan->isa('Fan::Scan')
or print("not ok 5\n"), exit(1);
print("ok 5\n");
$scan->add_filter(\&filter, $tmp1, $tmp2)
or print("not ok 6\n"), exit(1);
print("ok 6\n");
Fan::Scan::scan_mklist($tmp2, $scan)
or print("not ok 7\n");
print("ok 7\n");
$f1 = &Fan::Scan::fileglob($tmp1);
defined(fileno($f1)) or die("fileglob: $!");
$f2 = &Fan::Scan::fileglob($tmp2);
defined(fileno($f2)) or die("fileglob: $!");
system 'diff', $tmp1, $tmp2;
while (1) {
my $a = <$f1>;
my $b = <$f2>;
last if !defined($a) && !defined($b);
defined($a) && defined($b) && !($a cmp $b)
or print("not ok 8\n"), exit(1);
}
print("ok 8\n");
sub filter {
my $a = shift;
if ($a->type eq 'F') {
$n = $a->name;
for my $bad (@_) {
return undef if $bad eq $n;
}
}
1;
}
syntax highlighted by Code2HTML, v. 0.9.1