Blame t/findorule.t

Packit 26bf30
#!perl
Packit 26bf30
Packit 26bf30
use strict;
Packit 26bf30
use warnings;
Packit 26bf30
Packit 26bf30
use lib './t/lib';
Packit 26bf30
Packit 26bf30
use Test::More tests => 5;
Packit 26bf30
use File::Spec;
Packit 26bf30
Packit 26bf30
use File::Path;
Packit 26bf30
use File::Find::Object::TreeCreate;
Packit 26bf30
Packit 26bf30
my $tree_creator = File::Find::Object::TreeCreate->new();
Packit 26bf30
Packit 26bf30
{
Packit 26bf30
    my $tree =
Packit 26bf30
    {
Packit 26bf30
        'name' => "findorule-t-copy-to/",
Packit 26bf30
        'subs' =>
Packit 26bf30
        [
Packit 26bf30
            {
Packit 26bf30
                'name' => "File-Find-Rule.t",
Packit 26bf30
                'contents' => $tree_creator->cat(
Packit 26bf30
                    "./t/sample-data/to-copy-from/File-Find-Rule.t"
Packit 26bf30
                ),
Packit 26bf30
            },
Packit 26bf30
            {
Packit 26bf30
                'name' => "findorule.t",
Packit 26bf30
                'contents' => $tree_creator->cat(
Packit 26bf30
                    "./t/sample-data/to-copy-from/findorule.t"
Packit 26bf30
                ),
Packit 26bf30
            },
Packit 26bf30
            {
Packit 26bf30
                'name' => "foobar",
Packit 26bf30
                'contents' => $tree_creator->cat(
Packit 26bf30
                    "./t/sample-data/to-copy-from/foobar"
Packit 26bf30
                ),
Packit 26bf30
Packit 26bf30
            },
Packit 26bf30
            {
Packit 26bf30
                'name' => "lib/",
Packit 26bf30
                'subs' =>
Packit 26bf30
                [
Packit 26bf30
                    {
Packit 26bf30
                        'name' => "File/",
Packit 26bf30
                        'subs' =>
Packit 26bf30
                        [
Packit 26bf30
                            {
Packit 26bf30
                                name => "Find/",
Packit 26bf30
                                subs =>
Packit 26bf30
                                [
Packit 26bf30
                                    {
Packit 26bf30
                                        name => "Object/",
Packit 26bf30
                                        subs =>
Packit 26bf30
                                        [
Packit 26bf30
                                            {
Packit 26bf30
                                                name => "Rule/",
Packit 26bf30
                                                subs =>
Packit 26bf30
                                                [
Packit 26bf30
                                                    {
Packit 26bf30
                                                        name => "Test/",
Packit 26bf30
                                                        subs =>
Packit 26bf30
                                                        [
Packit 26bf30
                                                        {
Packit 26bf30
                                                            name => "ATeam.pm",
Packit 26bf30
content => $tree_creator->cat(
Packit 26bf30
    "./t/sample-data/to-copy-from/lib/File/Find/Object/Rule/Test/ATeam.pm"
Packit 26bf30
Packit 26bf30
),
Packit 26bf30
}
Packit 26bf30
                                                        ],
Packit 26bf30
                                                    },
Packit 26bf30
                                                ],
Packit 26bf30
                                            }
Packit 26bf30
                                        ],
Packit 26bf30
                                    },
Packit 26bf30
                                ],
Packit 26bf30
                            },
Packit 26bf30
                        ],
Packit 26bf30
                    },
Packit 26bf30
                ],
Packit 26bf30
            },
Packit 26bf30
        ],
Packit 26bf30
    };
Packit 26bf30
Packit 26bf30
    $tree_creator->create_tree("./t/sample-data/", $tree);
Packit 26bf30
}
Packit 26bf30
Packit 26bf30
# extra tests for findorule.  these are more for testing the parsing code.
Packit 26bf30
Packit 26bf30
sub run ($) {
Packit 26bf30
    my $expr = shift;
Packit 26bf30
    my $script = File::Spec->catfile(
Packit 26bf30
        File::Spec->curdir(), "scripts", "findorule"
Packit 26bf30
    );
Packit 26bf30
Packit 26bf30
    [ sort split /\n/, `$^X -Mblib $script $expr` ];
Packit 26bf30
}
Packit 26bf30
Packit 26bf30
my $copy_fn = $tree_creator->get_path(
Packit 26bf30
    "./t/sample-data/findorule-t-copy-to/"
Packit 26bf30
);
Packit 26bf30
Packit 26bf30
my $FFR_t = $tree_creator->get_path(
Packit 26bf30
    "./t/sample-data/findorule-t-copy-to/File-Find-Rule.t"
Packit 26bf30
);
Packit 26bf30
my $findorule_t = $tree_creator->get_path(
Packit 26bf30
    "./t/sample-data/findorule-t-copy-to/findorule.t"
Packit 26bf30
);
Packit 26bf30
my $foobar_fn = $tree_creator->get_path(
Packit 26bf30
    "./t/sample-data/findorule-t-copy-to/foobar"
Packit 26bf30
);
Packit 26bf30
Packit 26bf30
# TEST
Packit 26bf30
is_deeply(run $copy_fn . ' -file -name foobar', [ $foobar_fn ],
Packit 26bf30
          '-file -name foobar');
Packit 26bf30
Packit 26bf30
# TEST
Packit 26bf30
is_deeply(run $copy_fn . ' -maxdepth 0 -directory',
Packit 26bf30
          [ $copy_fn ], 'last clause has no args');
Packit 26bf30
Packit 26bf30
Packit 26bf30
{
Packit 26bf30
    local $TODO = "Win32 cmd.exe hurts my brane"
Packit 26bf30
      if ($^O =~ m/Win32/ || $^O eq 'dos');
Packit 26bf30
Packit 26bf30
    # TEST
Packit 26bf30
    is_deeply(run $copy_fn . ' -file -name \( foobar \*.t \)',
Packit 26bf30
              [ $FFR_t, $findorule_t, $foobar_fn ],
Packit 26bf30
              'grouping ()');
Packit 26bf30
Packit 26bf30
    # TEST
Packit 26bf30
    is_deeply(run $copy_fn . ' -name \( -foo foobar \)',
Packit 26bf30
              [ $foobar_fn ], 'grouping ( -literal )');
Packit 26bf30
}
Packit 26bf30
Packit 26bf30
# Remming out due to capturing STDERR using unixisms. In the future, we
Packit 26bf30
# may implement this using Test::Trap.
Packit 26bf30
# is_deeply(run $copy_fn . ' -file -name foobar baz',
Packit 26bf30
#          [ "unknown option 'baz'" ], 'no implicit grouping');
Packit 26bf30
Packit 26bf30
# TEST
Packit 26bf30
is_deeply(run $copy_fn . ' -maxdepth 0 -name -file',
Packit 26bf30
          [], 'terminate at next -');
Packit 26bf30
Packit 26bf30
rmtree($copy_fn);