summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2011-08-01 15:00:03 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2011-08-02 15:09:33 +1000
commit6599171c126d1ffafd24c43dbd6e5fd684a832bf (patch)
treea525e11c9da2b3532964d9b2ea45e87df154ad35
parent24229d3420f67a815139a2905969770274ca024e (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.pm58
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: