The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

#!/usr/bin/perl
# invalid_directory.t
# Copyright (c) 2006 Jonathan Rockway <jrockway@cpan.org>
use Test::More tests => 7;
use strict;
my $tmp = Directory::Scratch->new;
my $d;
ok($tmp->touch('foo'), 'create a file called foo');
$d = eval {
$tmp->mkdir('foo');
};
ok(!$d, 'no directory');
ok($@, "can't create a directory with the same name as a file: $@");
undef $d;
$d = eval {
no warnings 'redefine';
# mostly here to make devel::cover happy; the above is the real test
*Path::Class::Dir::mkpath = sub { mkdir $tmp->exists('foo') };
$tmp->mkdir('foo');
};
ok(!$d, 'no directory');
ok($@, "can't create a directory with the same name as a file: $@");
undef $d;
$d = eval {
# make mkdir not work
no warnings 'redefine';
*Path::Class::Dir::mkpath = sub { return };
$tmp->mkdir('bar');
};
ok(!$d, 'no directory');
ok($@, "can't create a directory when mkdir doesn't work: $@");