The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Test::More;
use Test::Deep;
use Test::Exception;
use File::Temp qw[tempdir];
use Cwd qw[getcwd];

eval {require Fcntl;};
if ($@) {
    print "1..0\n";
    exit;
}

plan skip_all => "Optional module (Fcntl) not installed"
  unless eval {
               require Fcntl;
              };

my $origdir = getcwd;
my $tempdir = tempdir( DIR => '.', CLEANUP => 1 );
chdir( $tempdir );

plan tests => 4;

my $package = 'Apache::Session::Lock::File';
use_ok $package;

my $lock    = $package->new;
my $session = {
    data => { _session_id   => 'foo' },
    args => { LockDirectory => '.'   },
};

$lock->acquire_read_lock($session);

ok -e './Apache-Session-foo.lock', 'lock file exists';

undef $lock;

unlink('./Apache-Session-foo.lock');

$lock = $package->new;

$lock->acquire_write_lock($session);

ok -e './Apache-Session-foo.lock', 'lock file exists';

$lock->release_all_locks($session);


$lock->clean('.', 0);

ok !-e './Apache-Session-foo.lock', 'lock file does not exist';

chdir( $origdir );