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

use strict;
use warnings;

use Test::More;
use File::Basename;
use File::Spec;

use Rex::Commands::File;

my $basename = basename __FILE__;

{
  # templates from file
  my $tpl =
    File::Spec->catfile( dirname(__FILE__), 'commands', 'file', 'test.tpl', );
  my $content = template $tpl, basename => $basename;

  is $content, $basename . "\n", "template from file";
}

{
  # test templates from __DATA__
  my $content = template
    '@second.tpl',
    basename => $basename;

  is $content, $basename . "\n", "second template from __DATA__";

  my $name          = 'Rex';
  my $content_first = template
    '@first.tpl',
    name => { test => $name };

  is $content_first, $name . "\n", "first template from __DATA__";
}

{
  # passing template content
  my $content = template
    \'<%= $basename %>',
    basename => $basename;

  is $content, $basename, "passing template content";
}

done_testing();

__DATA__
@first.tpl
<%= $name->{test} %>
@end
@second.tpl
<%= $basename %>
@end