--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/test/tinterpretsisinteg/defaulttestroutine.pm Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,269 @@
+#
+# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of the License "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+use strict;
+# define default test routine
+#
+# this test routine is use to run a single test
+#
+sub defaultTestRoutine
+{
+ my ($testEntry, $basedir, $failures, $baseResults) = @_;
+
+ #set up filenames to be used for this test
+ my $resultFile = "test" . $testEntry->{'id'} . ".log";
+
+ # save current directory in case any ofthe scripts change the current directory
+ my $saved_dir = cwd();
+
+ # if setup script has been specified for the test then run that first
+ if (exists($testEntry->{'setup'}))
+ {
+ my $comm = $testEntry->{'setup'};
+ my $r = `$comm`;
+ }
+
+ # change to correct directory to run the test.
+ if (exists($testEntry->{'command_dir'}))
+ {
+ chdir $testEntry->{'command_dir'};
+ }
+
+ # run the test script
+ my $command = $testEntry->{'command'};
+ my $run_command = "$command ";
+ # redirect output if logging the results
+ $run_command = $run_command . " >> $baseResults" if ($testEntry->{'log'});
+ my $res = `$run_command 2>>&1`;
+ chdir $saved_dir;
+
+ # run any cleanup scripts for test
+ if (exists($testEntry->{'cleanup'}))
+ {
+ my $comm = $testEntry->{'cleanup'};
+ my $r = `$comm`;
+ }
+
+ my $result = 0; #failed
+ my $test_prefix = "test " . $testEntry->{'id'} . ": ";
+
+ # now determine how the result of the test is to be determined
+ if ($testEntry->{'check_type'} eq "result")
+ {
+ if ($res =~ /Passed$/)
+ {
+ $result = 1;
+ }
+ else
+ {
+ $result = 0;
+ push @$failures, $test_prefix . $res;
+ }
+ }
+ elsif ($testEntry->{'check_type'} eq "program")
+ {
+ if (length($res) == 0)
+ {
+ if (exists($testEntry->{'check'}))
+ {
+ my $opts = $testEntry->{'check'};
+ my $prog = $testEntry->{'check_prog'};
+ my $r = `$prog $resultFile $opts`;
+ if ($r =~ /^Passed/)
+ {
+ $result = 1;
+ }
+ else
+ {
+ push @$failures,$test_prefix . $r;
+ }
+ }
+ }
+ else
+ {
+ push @$failures, $test_prefix . " '$run_command' command returned: >$res<";
+ }
+ }
+ else
+ {
+ if (length($res) == 0)
+ {
+ # perform diff on base results and current log file
+ $res = `diff $baseResults $resultFile 2>&1`;
+ if (length($res) == 0)
+ {
+ # passed
+ $result = 1;
+ }
+ else
+ {
+ my $errStr;
+ if ( $res =~/^diff:/)
+ {
+ chomp $res;
+ $errStr = $test_prefix . $res;
+ }
+ else
+ {
+ $errStr = $test_prefix . "Results do not match Base results";
+ }
+ push @$failures, $errStr;
+ }
+ }
+ else
+ {
+ push @$failures, $test_prefix . " '$run_command' command returned: >$res<";
+ }
+ }
+ return $result;
+}
+
+# define enhanced test routine
+#
+# this test routine is use to run a single test.
+# This routine provides additional features above that provided by the default.
+# It expects the setup and cleanup scripts to return "Passed" if the script
+# is successful.
+#
+sub enhancedTestRoutine
+{
+ my ($testEntry, $basedir, $failures) = @_;
+
+ #set up filenames to be used for this test
+ my $resultFile = "test" . $testEntry->{'id'} . ".log";
+ my $baseResults = "\\epoc32\\winscw\\c\\interpretsis_test_harness.txt";
+
+ # save current directory in case any ofthe scripts change the current directory
+ my $saved_dir = cwd();
+
+ my $result = 0; #failed
+ my $test_prefix = "test" . $testEntry->{'id'} . ": ";
+
+ # if setup script has been specified for the test then run that first
+ my $continue_test = 1;
+ if (exists($testEntry->{'setup'}))
+ {
+ my $comm = $testEntry->{'setup'};
+ my $r = `$comm`;
+ if ($r !~ /^Passed/)
+ {
+ $continue_test = 0;
+ push @$failures, $test_prefix . "Setup of test failed: " . $r;
+ }
+
+ }
+
+ if ($continue_test)
+ {
+ # change to correct directory to run the test.
+ if (exists($testEntry->{'command_dir'}))
+ {
+ chdir $testEntry->{'command_dir'};
+ }
+
+ # run the test script
+ my $command = $testEntry->{'command'};
+ my $run_command = "$command ";
+ # redirect output if logging the results
+ $run_command = $run_command . " >> $baseResults" if ($testEntry->{'log'});
+ my $res = `$run_command 2>>&1`;
+ chdir $saved_dir;
+
+ # now determine how the result of the test is to be determined
+ if ($testEntry->{'check_type'} eq "result")
+ {
+ if ($res =~ /Passed$/)
+ {
+ $result = 1;
+ }
+ else
+ {
+ $result = 0;
+ push @$failures, $test_prefix . $res;
+ }
+ }
+ elsif ($testEntry->{'check_type'} eq "program")
+ {
+ if (length($res) == 0)
+ {
+ if (exists($testEntry->{'check'}))
+ {
+ my $opts = $testEntry->{'check'};
+ my $prog = $testEntry->{'check_prog'};
+ my $r = `$prog $resultFile $opts`;
+ if ($r =~ /^Passed/)
+ {
+ $result = 1;
+ }
+ else
+ {
+ push @$failures,$test_prefix . $r;
+ }
+ }
+ }
+ else
+ {
+ push @$failures, $test_prefix . " '$run_command' command returned: >$res<";
+ }
+ }
+ else
+ {
+ if (length($res) == 0)
+ {
+ # perform diff on base results and current log file
+ $res = `diff $baseResults $resultFile 2>&1`;
+ if (length($res) == 0)
+ {
+ # passed
+ $result = 1;
+ }
+ else
+ {
+ my $errStr;
+ if ( $res =~/^diff:/)
+ {
+ chomp $res;
+ $errStr = $test_prefix . $res;
+ }
+ else
+ {
+ $errStr = $test_prefix . "Results do not match Base results";
+ }
+ push @$failures, $errStr;
+ }
+ }
+ else
+ {
+ push @$failures, $test_prefix . " '$run_command' command returned: >$res<";
+ }
+ }
+
+ # run any cleanup scripts for test
+ if (exists($testEntry->{'cleanup'}))
+ {
+ my $comm = $testEntry->{'cleanup'};
+ my $r = `$comm`;
+ if ($r !~ /^Passed/)
+ {
+ push @$failures, $test_prefix . "Cleanup of test failed: " . $r;
+ $result = 0; # mark the test as failed
+ }
+ }
+ }
+ return $result;
+}
+
+1;