Codebase list libfile-fu-perl / HEAD t / findknob.t
HEAD

Tree @HEAD (Download .tar.gz)

findknob.t @HEADraw · history · blame

#!/usr/bin/perl

use warnings;
use strict;

use Test::More no_plan =>;

use File::Fu;

my $topdir = File::Fu->dir('tmp.' . $$);
END { $topdir->remove; }

$topdir->mkdir;
($topdir+$_)->touch for('a'..'z');
my $foo = $topdir->subdir("foo");
$foo->mkdir;
$foo->basename->symlink($topdir/'link');
($foo+$_)->touch for('a'..'z');

# TODO multiple runs / fs order permutation?
my $x = 'j';

{ # without prune => recurse
  my @files = $topdir->find(sub {
    $_->basename eq $x
  });

  is(join('|', sort @files), join('|', sort
    $foo + $x,
    $topdir + $x
  ));
}
{ # with prune
  my @files = $topdir->find(sub {
    return shift->prune if $_->is_dir;
    $_->basename eq $x
  });

  is(join('|', sort @files), $topdir + $x);
}

# vim:ts=2:sw=2:et:sta