--- a/tsrc/unittestrunner/eunittest_ctc.pl Tue Feb 02 00:09:07 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,330 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "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:
-#
-#!/usr/bin/perl
-
-use File::Copy;
-use Cwd;
-use Getopt::Long;
-
-#---------------------------------------Initialization------------------------------------------------------#
-
-$coverageResultsDirDefault = "mmsharinguis/tsrc/unittestrunner/results/";
-
-$eunitExe = "/epoc32/release/winscw/udeb/EUnitExeRunner.exe";
-$eunitParams = "/l xml /e S60AppEnv /w 90 /p All /t 3600";
-$eunitParams2 = "/d alloc";
-$eunitResults = "EUnitLog.xml";
-$eunitDllsDefault = "eunitdlls_ctc.txt";
-$buildResults = "BuildResults.txt";
-
-$eunitSrcDllLocation = "/epoc32/release/winscw/udeb/";
-$eunitDstDllLocation = "/epoc32/release/winscw/udeb/z/sys/bin/";
-
-$eunitLog = "/epoc32/winscw/c/DigiaEUnit/Logs/DigiaEUnit_log.xml";
-$eunitLog2 = "/epoc32/winscw/c/shared/Eunit/Logs/EUnit_log.xml";
-
-$eunitTestBuildMode = "1";
-
-$ignoredFileName = "ignored_ctc.txt";
-$ignoredmodeSourceRelative = "1";
-
-$coverageSymbols = "MON.sym";
-$ctcCommandPart1 = "ctcwrap -i d -n";
-$ctcCommandPart2 = "abld build winscw udeb";
-$ctcCommandPart2Test = "abld test build winscw udeb";
-$ctcIgnoredPart1 = " -C \"EXCLUDE+";
-$ctcIgnoredPart2 = "\" ";
-
-# from command line
-my ($param_noclean,
- $projectrootname,
- $projectdrive,
- $eunitDlls,
- $allocFailure);
-
-#---------------------------------------Main Start----------------------------------------------------------#
-
-# read command line parameters
-my $result = GetOptions("noclean" => \$param_noclean,
- "drive=s" => \$projectdrive,
- "root=s" => \$projectrootname,
- "eunitdlls:s" => \$eunitDlls,
- "allocfailure:i" => \$allocFailure,
- "results:s" => \$coverageResultsDir );
-
-
-if (!defined $projectdrive)
-{
- die("Project drive not defined!\n");
-}
-
-if (!defined $projectrootname)
-{
- die("Project root not defined!\n");
-}
-
-if (!defined $eunitDlls || length($eunitDlls) == 0 )
-{
- print("Project dlls not defined, using defaults!\n");
- $eunitDlls = $eunitDllsDefault;
-}
-
-if (defined $allocFailure && $allocFailure > 0 )
-{
- print("Alloc failure mode active!\n");
-}
-
-if ( !defined $coverageResultsDir )
-{
- print("Project results dir not defined, using default!\n");
- $coverageResultsDir = "$projectdrive$projectrootname$coverageResultsDirDefault";
-}
-
-$startdir = cwd;
-
-# remove previous results
-unlink("$coverageResultsDir$eunitResults");
-
-# open file including eunit test dlls path and names
-open(EUNITDLLS, $eunitDlls) or die("file $eunitDlls not found!\n");
-@dllsFileContent = <EUNITDLLS>;
-
-# open file containing files exluded from measurements
-open(IGNOREDFILE, $ignoredFileName) or die("file $ignoredFileName not found!\n");
-
-$excludedCmd = parseExcluded();
-
-# build
-doBuild();
-
-#run all tests (with or without alloc)
-if (defined $allocFailure && $allocFailure > 0)
-{
- doSystemCall("$eunitExe $eunitParams $eunitParams2");
-}
-else
-{
- doSystemCall("$eunitExe $eunitParams");
-}
-
-# cleanup
-doBuild( "clean" );
-
-# fix incorrect xml syntax
-if ( -e "$eunitLog2" )
-{
- sanitizeResultFile();
-}
-
-# store results file
-copy($eunitLog, "$coverageResultsDir$eunitResults");
-copy($eunitLog2, "$coverageResultsDir$eunitResults");
-
-close (EUNITDLLS);
-close (IGNOREDFILE);
-
-#---------------------------------------Main Ends-------------------------------------------------------------#
-
-sub parseExcluded()
-{
- #exclude headers and test sources from measurements
- @ignoredFileContent = <IGNOREDFILE>;
- $ignoredText = "";
- for ($j = 0; $j <= $#ignoredFileContent; $j++)
- {
- my $currentIgnoredMode = @ignoredFileContent[$j];
- # remove \n from path
- for ($currentIgnoredMode) {
- s/\n+$//;
- }
-
- $j++;
-
- my $currentIgnoredLine = @ignoredFileContent[$j];
- # remove \n from dll name
- for ($currentIgnoredLine) {
- s/\n+$//;
- }
-
- #print("ignore mode: $currentIgnoredMode\n");
- #print("ignore txt: $currentIgnoredLine\n");
-
- if ($currentIgnoredMode =~ /$ignoredmodeSourceRelative/)
- {
- $ignoredText .= "$ctcIgnoredPart1$projectdrive$projectrootname$currentIgnoredLine$ctcIgnoredPart2";
- }
- else
- {
- $ignoredText .= "$ctcIgnoredPart1$projectdrive$currentIgnoredLine$ctcIgnoredPart2";
- }
- }
- return $ignoredText;
-}
-
-sub doBuild()
-{
- my $previousPathLine = "";
- for ($j = 0; $j <= $#dllsFileContent; $j++)
- {
- my $currentPathLine = @dllsFileContent[$j];
- # remove \n from path
- for ($currentPathLine) {
- s/\n+$//;
- }
-
- $j++;
-
- my $currentDllNameLine = @dllsFileContent[$j];
- # remove \n from dll name
- for ($currentDllNameLine) {
- s/\n+$//;
- }
-
- $j++;
-
- my $currentBuildModeLine = @dllsFileContent[$j];
- # remove \n from build mode
- for ($currentBuildModeLine) {
- s/\n+$//;
- }
-
- $j++;
-
- my $currentExtraCommandsLine = @dllsFileContent[$j];
- # remove \n from extra commands
- for ($currentExtraCommandsLine) {
- s/\n+$//;
- }
-
- print("DLL path: $currentPathLine\n");
- print("DLL name: $currentDllNameLine\n");
- print("DLL build mode: $currentBuildModeLine\n");
- print("DLL extra commands: $currentExtraCommandsLine\n");
-
- chdir($projectrootname);
- chdir($currentPathLine);
-
- $temp = cwd;
- print("current directory is $temp\n");
-
- if ( defined $_[0] )
- {
- # check whether test dll was even built succesfully
-
- if ( ! -e "$eunitDstDllLocation$currentDllNameLine" )
- {
- # modify results to contain information about total failure of this particular test dll
- open(TEMPEUNITLOG, ">> $eunitLog2");
- print TEMPEUNITLOG "<dll name=\"Z:\\sys\\bin\\$currentDllNameLine\" size=\"180\">eunittest_ctc.pl generated failure info</dll>\n";
- close(TEMPEUNITLOG);
- }
-
- if (!defined $param_noclean)
- {
- # do cleaning
- unlink("$eunitSrcDllLocation$currentDllNameLine");
- unlink("$eunitDstDllLocation$currentDllNameLine");
- if ($currentBuildModeLine =~ /$eunitTestBuildMode/)
- {
- doSystemCall("abld test reallyclean winscw udeb ");
- }
- else
- {
- doSystemCall("abld reallyclean winscw udeb ");
- }
- }
- else
- {
- print("no_cleanup param defined!\n");
- }
- }
- else
- {
- #delete old test dll
- unlink("$eunitDstDllLocation$currentDllNameLine");
-
- # clean possibly old coverage build but take in account that directory can contain other
- # tests also, those are not allowed to be cleaned!
- # it would be most easy if dlls would match with mmp file name but this is not true everywhere
- $prevLen = length($previousPathLine);
- if (($currentPathLine =~ /$previousPathLine/) && ($prevLen > 0))
- {
- print("previous dll was from same path - don't build again!\n");
- }
- else
- {
- print("previous dll was not from same path - build all!\n");
- doSystemCall("bldmake bldfiles");
-
- if ($currentBuildModeLine =~ /$eunitTestBuildMode/)
- {
- doSystemCall("abld test reallyclean winscw udeb ");
- doSystemCall("$ctcCommandPart1 $coverageResultsDir$coverageSymbols $excludedCmd $ctcCommandPart2Test");
- }
- else
- {
- doSystemCall("abld reallyclean winscw udeb ");
- doSystemCall("$ctcCommandPart1 $coverageResultsDir$coverageSymbols $excludedCmd $ctcCommandPart2");
- }
- }
-
- #copy test dll to correct location
- print("copying test dll to: $eunitDstDllLocation$currentDllNameLine \n");
- copy ("$eunitSrcDllLocation$currentDllNameLine", "$eunitDstDllLocation$currentDllNameLine");
-
- #do additional commands
- chdir($projectrootname);
- if ( length($currentExtraCommandsLine) > 0 )
- {
- doSystemCall("$currentExtraCommandsLine");
- }
- }
-
- # store current pathline for previous loop increment
- $previousPathLine = $currentPathLine;
- }
-}
-
-sub sanitizeResultFile
-{
- my $testResultEndTag = "</testreport>";
- open(TEMPEUNITLOG, "< $eunitLog2");
- @tempEunitResultFileContent = <TEMPEUNITLOG>;
- my $line;
- my $outputString = "";
- foreach $line (@tempEunitResultFileContent)
- {
- if ( $line =~ m/$testResultEndTag/ )
- {
- print("End tag ignored\n");
- }
- else
- {
- $outputString .= "$line";
- }
- }
- $outputString .= "$testResultEndTag\n";
- close(TEMPEUNITLOG);
- open(TEMPEUNITLOG, "> $eunitLog2");
- print TEMPEUNITLOG "$outputString";
- close(TEMPEUNITLOG);
-}
-
-sub doSystemCall
-{
- system("echo Doing system call: $_[0] >> $coverageResultsDir$buildResults");
- system("$_[0] >> $coverageResultsDir$buildResults 2>&1");
-}