use strict;
use warnings;

use Test::More tests => 10;
use YAML;

use_ok 'Rex';
use_ok 'Rex::Report';
use_ok 'Rex::Report::Base';
use_ok 'Rex::Report::YAML';
use_ok 'Rex::Commands';
use_ok 'Rex::Commands::File';
use_ok 'Rex::Commands::Fs';
Rex::Commands->import;

{
	no warnings 'once';
	$::QUIET = 1;
}

if($^O =~ m/^MSWin/) {
   system("rd /Q /S tmp\\report");
}
else {
   system("rm -rf tmp/report");
}

my $report = Rex::Report->create;
ok(ref($report) eq "Rex::Report::Base", "created report class");

mkdir "tmp";

Rex::Report->destroy;

report(-on => "YAML");
set(report_path => "tmp/report");

task("test", sub {
   file("test_report.txt", content => "this is a test");
});

Rex::TaskList->create()->get_task("test")->run("<local>");

use Data::Dumper;
my @files = list_files("tmp/report/_local_");
my $content = eval { local(@ARGV, $/) = ("tmp/report/_local_/$files[0]"); <>; };

my $ref = Load($content);

ok($ref->{'file[test_report.txt]'}->{changed} == 1, "a new file was created.");

# need to wait a bit
sleep 2;

Rex::TaskList->create()->get_task("test")->run("<local>");
@files = sort { $a =~ s/\.yml//; $b =~ s/\.yml//; $a <=> $b } list_files("tmp/report/_local_/");
$content = eval { local(@ARGV, $/) = ("tmp/report/_local_/$files[1].yml"); <>; };

$ref = Load($content);

ok($ref->{'file[test_report.txt]'}->{changed} == 0, "the file was not changed");



unlink "test_report.txt";

if($^O =~ m/^MSWin/) {
   system("rd /Q /S tmp\\report");
}
else {
   system("rm -rf tmp/report");
}
