The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Module::Setup::Test::Utils;
use Test::More tests => 7;

my $obj = Module::Setup->new;

do {
    no warnings 'redefine';
    local *File::HomeDir::my_home = sub { setup_dir };
    $obj->setup_base_dir;
    is $obj->base_dir->path, setup_dir('.module-setup');
    ok -d setup_dir('.module-setup');
};

do {
    local $ENV{MODULE_SETUP_DIR} = setup_dir('env');
    $obj->setup_base_dir;
    is $obj->base_dir->path, setup_dir('env');
    ok -d setup_dir('env');
};

do {
    local $obj->{options}->{module_setup_dir} = setup_dir('options');
    $obj->setup_base_dir;
    is $obj->base_dir->path, setup_dir('options');
    ok -d setup_dir('options');
};

do {
    no warnings 'redefine';
    local *Path::Class::Dir::new = sub {};
    eval { $obj->setup_base_dir };
    like $@, qr/module_setup directory was not able to be discovered/;
};