diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2011-08-01 15:00:03 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2011-08-02 15:09:33 +1000 |
commit | 6599171c126d1ffafd24c43dbd6e5fd684a832bf (patch) | |
tree | a525e11c9da2b3532964d9b2ea45e87df154ad35 | |
parent | 24229d3420f67a815139a2905969770274ca024e (diff) |
Create a results directory, save files and debug log to it
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r-- | ILTest/ILTest.pm | 58 |
1 files changed, 57 insertions, 1 deletions
diff --git a/ILTest/ILTest.pm b/ILTest/ILTest.pm index 890835c..89d6ae3 100644 --- a/ILTest/ILTest.pm +++ b/ILTest/ILTest.pm @@ -50,8 +50,12 @@ use ILTest::TestCase; use ILTest::Error; use Module::Load; use Data::Dumper; +use IO::File; use File::Copy; use File::Temp; +use File::Basename; +use File::Path qw(make_path); +use POSIX qw(strftime); use lib "../"; use warnings; @@ -60,15 +64,18 @@ use strict; sub new { my $class = shift; my $self = {@_}; + bless ($self, $class); $self->{verbosity} = 0 if (not defined $self->{verbosity}); if ($self->{suite}) { + $self->_make_results_dir($self->{suite}); $self->println(10, "Test suite: $self->{suite}"); } else { if (not $self->{testee} or not $self->{tester}) { $self->error("Invalid tester/testee\n"); return undef; } + $self->_make_results_dir($self->{tester}); $self->println(10, "Testee: $self->{testee} vs Tester: $self->{tester}"); } @@ -103,8 +110,12 @@ sub print { my $self = shift; my $level = shift; my $msg = shift; + my $fh = $self->{debugfile}; + + $msg = "($level) $msg"; - print "($level) $msg" if ($level <= $self->{verbosity}); + print $msg if ($level <= $self->{verbosity}); + print $fh $msg; } =head2 B<$iltest-E<gt>error($message)> @@ -372,5 +383,50 @@ sub create_test { return $class->new(%params); } +=head2 B<$iltest-E<gt>add_result_file($file, [$target_filename])> + +Add the given filename to the list of files stored as test results. +The file is copied when this function is called. If a target filename is +given, the copy is named that. +Multiple calls to this function for the same file will save the last one +only. + +=cut +sub add_results_file { + my $self = shift; + my $file = shift; + my $target_filename = shift; + my $i = 0; + + if (not defined $target_filename) { + $target_filename = basename($file); + } + + $target_filename = $self->{resultsdir}."/".$target_filename; + + if (-e $target_filename) { + while ( -e $target_filename.".$i" ) { + $i++; + } + $target_filename .= ".$i"; + } + + File::Copy::copy($file, $target_filename); +} + +sub _make_results_dir { + my $self = shift; + my $dirname = shift; + my $resultsdir = "results-$dirname-".strftime("%Y-%m-%d-%T", localtime); + + make_path("results/$resultsdir"); + unlink("results/results-latest"); + symlink($resultsdir, "results/results-latest"); + $self->{resultsdir} = "results/".$resultsdir; + $self->{debugfile} = new IO::File "> $self->{resultsdir}/debug.log"; + $self->println(3, "Results: $resultsdir"); + +} + 1; # vim: set noexpandtab shiftwidth=8 tabstop=8: |