From b7566742ffcf86c8a6d9fac0eace013e1ffd6d04 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Fri, 4 Mar 2011 09:12:13 +0100 Subject: App::Dthumb read_directories() tests --- lib/App/Dthumb.pm | 24 +++++++++++++++++++----- t/20-app-dthumb.t | 14 +++++++++++++- t/imgdir/.thumbs/invalid.png | 0 t/imgdir/one.png | Bin 0 -> 6525 bytes t/imgdir/two.png | Bin 0 -> 13552 bytes 5 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 t/imgdir/.thumbs/invalid.png create mode 100644 t/imgdir/one.png create mode 100644 t/imgdir/two.png diff --git a/lib/App/Dthumb.pm b/lib/App/Dthumb.pm index b3aa1cf..f1b39b4 100755 --- a/lib/App/Dthumb.pm +++ b/lib/App/Dthumb.pm @@ -61,6 +61,18 @@ Valid hash keys are: =over +=item B => I + +Set base directory for image reading, data creation etc. + +Default: F<.> (current working directory) + +=item B => I + +Set name of the html index file + +Default: F + =item B => I Include and use javascript lightbox code @@ -115,8 +127,10 @@ sub new { $conf{title} //= (split(qr{/}, cwd()))[-1]; $conf{file_index} //= 'index.xhtml'; - $conf{dir_thumbs} //= '.thumbs'; - $conf{dir_data} //= '.dthumb'; + $conf{dir_images} //= '.'; + + $conf{dir_data} = "$conf{dir_images}/.dthumb"; + $conf{dir_thumbs} = "$conf{dir_images}/.thumbs"; # helpers to directly pass GetOptions results $conf{lightbox} //= ( $conf{'no-lightbox'} ? 0 : 1 ); @@ -148,14 +162,14 @@ F<.thumbs> which do not have a corresponding full-size image. sub read_directories { my ($self) = @_; my $thumbdir = $self->{config}->{dir_thumbs}; - my $imgdir = '.'; + my $imgdir = $self->{config}->{dir_images}; my $dh; my (@files, @old_thumbs); opendir($dh, $imgdir); for my $file (readdir($dh)) { - if (-f $file and $file =~ qr{ \. (png | jp e? g) $ }iox) { + if (-f "${imgdir}/${file}" and $file =~ qr{ \. (png | jp e? g) $ }iox) { push(@files, $file); } } @@ -164,7 +178,7 @@ sub read_directories { if (-d $thumbdir) { opendir($dh, $thumbdir); for my $file (readdir($dh)) { - if ($file =~ qr{^ [^.] }ox and not -f $file) { + if ($file =~ qr{^ [^.] }ox and not -f "${imgdir}/${file}") { push(@old_thumbs, $file); } } diff --git a/t/20-app-dthumb.t b/t/20-app-dthumb.t index b591866..bb063e3 100755 --- a/t/20-app-dthumb.t +++ b/t/20-app-dthumb.t @@ -4,7 +4,7 @@ use warnings; use 5.010; use autodie; -use Test::More tests => 13; +use Test::More tests => 19; use_ok('App::Dthumb'); @@ -14,6 +14,12 @@ isa_ok($dthumb, 'App::Dthumb'); isa_ok($dthumb->{data}, 'App::Dthumb::Data'); +is($dthumb->{config}->{dir_data}, './.dthumb', 'Data directory is .dthumb'); +is($dthumb->{config}->{dir_images}, '.', 'Image directory is .'); +is($dthumb->{config}->{dir_thumbs}, './.thumbs', + 'Thumbnail directory is dthumbs'); +is($dthumb->{config}->{file_index}, 'index.xhtml', 'index is index.xhtml'); + is($dthumb->{config}->{lightbox}, 1, 'Lightbox enabled'); is($dthumb->{config}->{names} , 1, 'Show image names'); is($dthumb->{config}->{quality} , 75, 'Default quality'); @@ -34,3 +40,9 @@ $dthumb = App::Dthumb->new(); @{$dthumb->{old_thumbnails}} = 'e.png'; is_deeply($dthumb->{files}, [$dthumb->get_files()], '$dthumb->get_files()'); + +$dthumb = App::Dthumb->new(dir_images => 't/imgdir'); +$dthumb->read_directories(); + +is_deeply($dthumb->{old_thumbnails}, ['invalid.png'], '{old_thumbnails}'); +is_deeply($dthumb->{files}, ['one.png', 'two.png'], '{files}'); diff --git a/t/imgdir/.thumbs/invalid.png b/t/imgdir/.thumbs/invalid.png new file mode 100644 index 0000000..e69de29 diff --git a/t/imgdir/one.png b/t/imgdir/one.png new file mode 100644 index 0000000..5903c34 Binary files /dev/null and b/t/imgdir/one.png differ diff --git a/t/imgdir/two.png b/t/imgdir/two.png new file mode 100644 index 0000000..f16d150 Binary files /dev/null and b/t/imgdir/two.png differ -- cgit v1.2.3