Skip to content

Commit

Permalink
Merge branch 'feature/filetemp_cleanup' into devel
Browse files Browse the repository at this point in the history
  • Loading branch information
ambs committed Jul 5, 2011
2 parents 32eb3ee + 597ed6b commit 97cc085
Show file tree
Hide file tree
Showing 20 changed files with 120 additions and 75 deletions.
15 changes: 6 additions & 9 deletions lib/Dancer/Logger/File.pm
Expand Up @@ -4,7 +4,6 @@ use warnings;
use Carp;
use base 'Dancer::Logger::Abstract';

use File::Temp qw/tempdir/;
use Dancer::Config 'setting';
use Dancer::FileUtils qw(open_file);
use IO::File;
Expand All @@ -20,14 +19,12 @@ sub logdir {
carp "log directory $logroot doesn't exist, am unable to create it";
return;
}
} else {
unless($logroot = tempdir(CLEANUP => 1, TMPDIR => 1)) {
carp "cannot create temp log directory";
return;
}
}

my $expected_path = Dancer::FileUtils::path($logroot, 'logs');
my $expected_path = $logroot ?
Dancer::FileUtils::path($logroot, 'logs') :
Dancer::FileUtils::path('logs');

return $expected_path if (-d $expected_path && -x _ && -w _);

unless (-w $logroot and -x _) {
Expand Down Expand Up @@ -98,8 +95,8 @@ file.
=head2 logdir
Returns the log directory, decided by "logs" either in "appdir" setting or in a
temp directory. It's also possible to specify a logs directory with the log_path option.
Returns the log directory, decided by "logs" either in "appdir" setting.
It's also possible to specify a logs directory with the log_path option.
setting log_path => $dir;
Expand Down
31 changes: 17 additions & 14 deletions lib/Dancer/Session/YAML.pm
Expand Up @@ -5,12 +5,11 @@ use warnings;
use Carp;
use base 'Dancer::Session::Abstract';

use Fcntl ':flock';
use Dancer::Logger;
use Dancer::ModuleLoader;
use Dancer::Config 'setting';
use Dancer::FileUtils qw(path set_file_mode);
use File::Copy;
use File::Temp qw(tempfile);

# static

Expand Down Expand Up @@ -60,9 +59,16 @@ sub reset {
# Return the session object corresponding to the given id
sub retrieve {
my ($class, $id) = @_;
my $session_file = yaml_file($id);

return unless -f yaml_file($id);
return YAML::LoadFile(yaml_file($id));
return unless -f $session_file;

open my $fh, '<', $session_file or die "Can't open '$session_file': $!\n";
flock $fh, LOCK_EX or die "Can't lock file '$session_file': $!\n";
my $content = YAML::LoadFile($session_file);
close $fh or die "Can't close '$session_file': $!\n";

return $content;
}

# instance
Expand All @@ -72,11 +78,6 @@ sub yaml_file {
return path(setting('session_dir'), "$id.yml");
}

sub tmp_yaml_file {
my ($id) = @_;
return path(setting('session_dir'), "$id.tmp");
}

sub destroy {
my ($self) = @_;
use Dancer::Logger;
Expand All @@ -86,13 +87,15 @@ sub destroy {
}

sub flush {
my $self = shift;
my ( $fh, $tmpname ) =
tempfile( $self->id . '.XXXXXXXX', DIR => setting('session_dir') );
my $self = shift;
my $session_file = yaml_file( $self->id );

open my $fh, '>', $session_file or die "Can't open '$session_file': $!\n";
flock $fh, LOCK_EX or die "Can't lock file '$session_file': $!\n";
set_file_mode($fh);
print {$fh} YAML::Dump($self);
close $fh;
move($tmpname, yaml_file($self->id));
close $fh or die "Can't close '$session_file': $!\n";

return $self;
}

Expand Down
5 changes: 3 additions & 2 deletions t/00_base/11_file_utils.t
@@ -1,6 +1,5 @@
use Test::More import => ['!pass'];
use File::Spec;
use File::Temp;

use Dancer ':syntax';
use Dancer::FileUtils qw/read_file_content path_or_empty/;
Expand All @@ -11,8 +10,10 @@ use TestUtils;
use strict;
use warnings;

plan tests => 3;
plan skip_all => "File::Temp 0.22 required"
unless Dancer::ModuleLoader->load( 'File::Temp', '0.22' );

plan tests => 3;

my $tmp = File::Temp->new();
write_file($tmp, "one$/two");
Expand Down
10 changes: 7 additions & 3 deletions t/01_config/03_logger.t
@@ -1,12 +1,16 @@
use Test::More tests => 15, import => ['!pass'];
use Test::More import => ['!pass'];

use Dancer ':syntax';
use Dancer::FileUtils;

use File::Temp qw/tempdir/;
use File::Spec qw/catfile/;

my $dir = tempdir(CLEANUP => 1, TMPDIR => 1);
plan skip_all => "File::Temp 0.22 required"
unless Dancer::ModuleLoader->load( 'File::Temp', '0.22' );

plan tests => 15;

my $dir = File::Temp::tempdir(CLEANUP => 1, TMPDIR => 1);
set appdir => $dir;

eval { set logger => 'foobar' };
Expand Down
5 changes: 3 additions & 2 deletions t/01_config/04_config_file.t
Expand Up @@ -4,15 +4,16 @@ use Test::More import => ['!pass'];

plan skip_all => "YAML needed to run this tests"
unless Dancer::ModuleLoader->load('YAML');
plan skip_all => "File::Temp 0.22 required"
unless Dancer::ModuleLoader->load( 'File::Temp', '0.22' );
plan tests => 17;

use File::Temp qw/tempdir/;
use Dancer ':syntax';
use File::Spec;
use lib File::Spec->catdir( 't', 'lib' );
use TestUtils;

my $dir = tempdir(CLEANUP => 1, TMPDIR => 1);
my $dir = File::Temp::tempdir(CLEANUP => 1, TMPDIR => 1);
set appdir => $dir;
my $envdir = File::Spec->catdir($dir, 'environments');
mkdir $envdir;
Expand Down
6 changes: 4 additions & 2 deletions t/01_config/06_config_api.t
Expand Up @@ -3,11 +3,13 @@ use warnings;
use Test::More import => ['!pass'];

use Dancer::Config;
use File::Temp qw/tempdir/;

plan skip_all => "YAML needed to run this tests"
unless Dancer::ModuleLoader->load('YAML');

plan skip_all => "File::Temp 0.22 required"
unless Dancer::ModuleLoader->load( 'File::Temp', '0.22' );

plan tests => 2;

eval {
Expand All @@ -16,7 +18,7 @@ eval {

like $@, qr/Unable to parse the configuration file/;

my $dir = tempdir(CLEANUP => 1, TMPDIR => 1);
my $dir = File::Temp::tempdir(CLEANUP => 1, TMPDIR => 1);

my $config_file = File::Spec->catfile($dir, 'settings.yml');

Expand Down
7 changes: 4 additions & 3 deletions t/02_request/14_uploads.t
Expand Up @@ -5,9 +5,10 @@ use Dancer ':syntax';
use Dancer::Request;
use Dancer::Test;
use Dancer::FileUtils;
use File::Temp qw(tempdir);
use Test::More 'import' => ['!pass'];

plan skip_all => "File::Temp 0.22 required"
unless Dancer::ModuleLoader->load( 'File::Temp', '0.22' );

sub test_path {
my ($file, $dir) = @_;
Expand Down Expand Up @@ -104,7 +105,7 @@ do {
"filename is accessible via params";

# copy_to, link_to
my $dest_dir = tempdir(CLEANUP => 1, TMPDIR => 1);
my $dest_dir = File::Temp::tempdir(CLEANUP => 1, TMPDIR => 1);
my $dest_file = File::Spec->catfile( $dest_dir, $upload->basename );
$upload->copy_to($dest_file);
ok( ( -f $dest_file ), "file '$dest_file' has been copied" );
Expand All @@ -126,7 +127,7 @@ do {
};

# test with Dancer::Test
my $dest_dir = tempdir(CLEANUP => 1, TMPDIR => 1);
my $dest_dir = File::Temp::tempdir(CLEANUP => 1, TMPDIR => 1);
my $dest_file = File::Spec->catfile( $dest_dir, 'foo' );

post(
Expand Down
6 changes: 4 additions & 2 deletions t/03_route_handler/07_compilation_warning.t
Expand Up @@ -3,9 +3,11 @@ use Test::More;
use Dancer ':syntax', ':tests';
use Dancer::Test;
use Dancer::Logger;
use File::Temp qw/tempdir/;

my $dir = tempdir(CLEANUP => 1, TMPDIR => 1);
plan skip_all => "File::Temp 0.22 required"
unless Dancer::ModuleLoader->load( 'File::Temp', '0.22' );

my $dir = File::Temp::tempdir(CLEANUP => 1, TMPDIR => 1);
set appdir => $dir;
Dancer::Logger->init('File');

Expand Down
10 changes: 7 additions & 3 deletions t/03_route_handler/29_forward.t
@@ -1,13 +1,17 @@
use strict;
use warnings;
use Test::More tests => 16, import => ['!pass'];
use Test::More import => ['!pass'];

use Dancer ':syntax';
use Dancer::Logger;
use File::Temp qw/tempdir/;
use Dancer::Test;

my $dir = tempdir(CLEANUP => 1, TMPDIR => 1);
plan skip_all => "File::Temp 0.22 required"
unless Dancer::ModuleLoader->load( 'File::Temp', '0.22' );

plan tests => 16;

my $dir = File::Temp::tempdir(CLEANUP => 1, TMPDIR => 1);
set appdir => $dir;
Dancer::Logger->init('File');

Expand Down
6 changes: 4 additions & 2 deletions t/05_views/03_layout.t
Expand Up @@ -7,14 +7,16 @@ BEGIN {
unless Dancer::ModuleLoader->load('Template');
plan skip_all => "YAML needed to run this tests"
unless Dancer::ModuleLoader->load('YAML');
plan skip_all => "File::Temp 0.22 required"
unless Dancer::ModuleLoader->load( 'File::Temp', '0.22' );


use File::Spec;
use lib File::Spec->catdir( 't', 'lib' );
use TestUtils;
};

use Dancer::Test;
use File::Temp qw/tempdir/;

set views => path(dirname(__FILE__), 'views');

Expand All @@ -37,7 +39,7 @@ my @tests = (

plan tests => scalar(@tests) + 4;

my $dir = tempdir(CLEANUP => 1, TMPDIR => 1);
my $dir = File::Temp::tempdir(CLEANUP => 1, TMPDIR => 1);
set appdir => $dir;
my $envdir = File::Spec->catdir($dir, 'environments');
mkdir $envdir;
Expand Down
6 changes: 4 additions & 2 deletions t/08_session/03_http_requests.t
Expand Up @@ -6,17 +6,19 @@ BEGIN {
use Dancer::ModuleLoader;

plan skip_all => "skip test with Test::TCP in win32" if $^O eq 'MSWin32';

plan skip_all => 'Test::TCP is needed to run this test'
unless Dancer::ModuleLoader->load('Test::TCP' => "1.13");
plan skip_all => 'YAML is needed to run this test'
unless Dancer::ModuleLoader->load('YAML');
plan skip_all => "File::Temp 0.22 required"
unless Dancer::ModuleLoader->load( 'File::Temp', '0.22' );
}

use LWP::UserAgent;

use File::Spec;
use File::Temp 'tempdir';
my $tempdir = tempdir(CLEANUP => 1, TMPDIR => 1);
my $tempdir = File::Temp::tempdir(CLEANUP => 1, TMPDIR => 1);

use Dancer;
use Dancer::Logger;
Expand Down
12 changes: 8 additions & 4 deletions t/08_session/05_yaml.t
Expand Up @@ -10,17 +10,17 @@ use File::Path qw(mkpath rmtree);
# use t::lib::TestUtils;
# use t::lib::EasyMocker;

use File::Temp qw/tempdir/;

BEGIN {
plan skip_all => "need YAML"
unless Dancer::ModuleLoader->load('YAML');
plan skip_all => "File::Temp 0.22 required"
unless Dancer::ModuleLoader->load( 'File::Temp', '0.22' );
plan tests => 12;
use_ok 'Dancer::Session::YAML'
}


my $dir = tempdir(CLEANUP => 1, TMPDIR => 1);
my $dir = File::Temp::tempdir(CLEANUP => 1, TMPDIR => 1);
set appdir => $dir;

my $session = Dancer::Session::YAML->create();
Expand Down Expand Up @@ -55,7 +55,11 @@ ok( -d $session_dir, "session dir was created");
rmtree($session_dir);
eval { $session = Dancer::Session::YAML->create() };
my $error = $@;
like ($@, qr/Parent directory .* does not exist/, "session dir was not recreated");
like(
$@,
qr/Can't open .* No such file or directory/,
'session dir was not recreated',
);

Dancer::Session::YAML->reset();
$session = Dancer::Session::YAML->create();
Expand Down
5 changes: 3 additions & 2 deletions t/09_cookies/03_persistence.t
Expand Up @@ -8,14 +8,15 @@ BEGIN {
plan skip_all => "skip test with Test::TCP in win32" if $^O eq 'MSWin32';
plan skip_all => 'Test::TCP is needed to run this test'
unless Dancer::ModuleLoader->load('Test::TCP' => "1.13");
plan skip_all => "File::Temp 0.22 required"
unless Dancer::ModuleLoader->load( 'File::Temp', '0.22' );
};

use LWP::UserAgent;
use Dancer;

use File::Spec;
use File::Temp 'tempdir';
my $tempdir = tempdir(CLEANUP => 1, TMPDIR => 1);
my $tempdir = File::Temp::tempdir(CLEANUP => 1, TMPDIR => 1);

plan tests => 9;
Test::TCP::test_tcp(
Expand Down
10 changes: 7 additions & 3 deletions t/11_logger/02_factory.t
@@ -1,13 +1,17 @@
use Test::More tests => 8, import => ['!pass'];
use Test::More import => ['!pass'];

use strict;
use warnings;
use t::lib::TestUtils;

use File::Temp qw/tempdir/;
use Dancer ':syntax';

my $dir = tempdir(CLEANUP => 1, TMPDIR => 1);
plan skip_all => "File::Temp 0.22 required"
unless Dancer::ModuleLoader->load( 'File::Temp', '0.22' );

plan tests => 8;

my $dir = File::Temp::tempdir(CLEANUP => 1, TMPDIR => 1);
setting appdir => $dir;

use_ok 'Dancer::Logger';
Expand Down

0 comments on commit 97cc085

Please sign in to comment.