#!/usr/bin/env perl
# vim: ts=8 sts=4 et sw=4 sr sta
use strict;
use warnings;
use Test::More tests => 10;
use Path::Class;
use File::Temp qw(tempdir);
BEGIN {
use FindBin;
use lib qq{$FindBin::Bin/testlib};
use Zucchini::Test;
use Zucchini::TestConfig;
}
BEGIN {
use_ok 'Zucchini';
}
# evil globals
my ($test_config, $zucchini);
# get a test_config object
$test_config = Zucchini::TestConfig->new(
{
templatedir =>
dir(
$FindBin::Bin,
'testdata',
'impressum'
)
}
);
isa_ok($test_config, q{Zucchini::TestConfig});
# create a Zucchini object using our test-config
$zucchini = Zucchini->new(
{
config_data => $test_config->site_config,
site => 'impressum',
}
);
isa_ok($zucchini, q{Zucchini});
ok(defined($zucchini->get_config), q{object has configuration data});
my %testinfo_of = (
'normal.html' => {
always_process => 0,
},
'impressum.html' => {
always_process => 1,
},
'special.imp' => {
always_process => 1,
},
);
# process the site once
$zucchini->process_templates;
# make sure our file(s) of interest exist, and make a note of their last
# modified time
my $directory = $zucchini->get_config->get_siteconfig->{output_dir};
diag $directory;
foreach my $file (keys %testinfo_of) {
my $filename = file($directory, $file);
ok(
-f $filename,
qq{$file exists in output_dir}
);
# store last modified time
$testinfo_of{$file}->{mtime_1} = (stat($filename))[9];
}
# process the site a second time
sleep(1); # make sure there's at least 1 second difference for modified files
$zucchini->process_templates;
foreach my $file (keys %testinfo_of) {
my $filename = file($directory, $file);
$testinfo_of{$file}->{mtime_2} = (stat($filename))[9];
# make sure a "special" file has
if ($testinfo_of{$file}->{always_process}) {
ok(
$testinfo_of{$file}->{mtime_1}
<
$testinfo_of{$file}->{mtime_2},
qq{$file has been updated}
);
}
# make sure a "normal" file hasn't been re-written
else {
ok(
$testinfo_of{$file}->{mtime_1}
==
$testinfo_of{$file}->{mtime_2},
qq{$file is unchanged}
);
}
}