The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl -w

use strict;
use Test::More;

use Text::Xslate;
use File::Copy qw(copy move);
use File::Path qw(rmtree);
use File::Spec;
use t::lib::Util;

rmtree cache_dir;

my $base;
my $derived;
my $base_c;
my $derived_c;
BEGIN {
    my $tx = Text::Xslate->new(path => [path], cache_dir => cache_dir);

    my $fi  = $tx->find_file('myapp/base.tx');
    $base   = $fi->{fullpath};
    $base_c = $fi->{cachepath};

    $fi        = $tx->find_file('myapp/derived.tx');
    $derived   = $fi->{fullpath};
    $derived_c = $fi->{cachepath};
}

END{
    move "$base.save" => $base if -e "$base.save";

    rmtree cache_dir;
}


note 'for files';

utime $^T - 120, $^T - 120, $base, $derived;

{
    # compile and cache template files.
    my $tx = Text::Xslate->new(path => [path], cache_dir => cache_dir);
    $tx->render($_, {lang => 'Perl'}) for 'myapp/derived.tx';
}

utime $^T - 60, $^T - 60, $base_c, $derived_c;
note " cache files have been created at 60 seconds ago.";

my $tx = Text::Xslate->new(path => [path], cache_dir => cache_dir);

move $base => "$base.save";
copy "$base.mod" => $base;

utime $^T, $^T, $base;
note "modify $base just now";

is $tx->render('myapp/derived.tx', {lang => 'Foo'}), <<'T', "modified($_)" for 1 .. 2;
HEAD
    D-BEFORE
    Modified version of base.tx
    D-AFTER
FOOT
T

done_testing;