diff -r 000000000000 -r 83f4b4db085c imgtools_os/romkiteka2/test/test.buildrom.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imgtools_os/romkiteka2/test/test.buildrom.pl Tue Feb 02 01:39:43 2010 +0200 @@ -0,0 +1,179 @@ +# 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 "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: +# + +my $fails = 0; +my $total = 0; + +# Each test has an input OBY file and an output OBY file. +# runTest assumes there is also a .oby.out file which +# contains the expected OBY output. + +# Adding a "." to the feature variant name (for example using +# the option "-DFEATUREVARIANT=.phone") means that buildrom will +# look for the variant file in ./phone.var rather than in the +# default location of EPOCROOT/epoc32/tools/variant/phone.var + +# test the minimal OBY file + +$fails += runTest("-s", "minimal.oby", "result.oby"); +$total++; + +# test the include path from a feature-variant OBY file + +$fails += runTest("-s -DFEATUREVARIANT=.phone", "var1.oby", "result.oby"); +$total++; + +# test the file substitutions in a feature-variant OBY file + +$fails += runTest("-s -DFEATUREVARIANT=.phone", "var2.oby", "result.oby"); +$total++; + +# test an OBY file that is on the include path from a feature-variant + +$fails += runTest("-s -DFEATUREVARIANT=.phone", "varB", "result.oby"); +$total++; + +# test that absolute paths work everywhere + +createDummyInclude($ENV{'EPOCROOT'} . "epoc32/include/test/abs.hrh"); +createDummyInclude($ENV{'EPOCROOT'} . "epoc32/include/test/incA/absA.iby"); +createDummyInclude($ENV{'EPOCROOT'} . "epoc32/include/test/incB/absB.iby"); + +$fails += runTest("-s -DFEATUREVARIANT=.abs", "var3.oby", "result.oby"); +$total++; + +########################################################################### +# report the results and finish + +print "\n\n$fails test"; +print "s" unless ($fails == 1); +print " failed (out of $total run).\n"; +exit 0; + +########################################################################### + +sub runTest +{ + my $options = shift; + my $inFile = shift; + my $outFile = shift; + my $expFile = "$inFile.out"; + + my $command = "buildrom -fm=..\\include\\featureUIDs.xml $options $inFile"; + + # remove the output if it already exists + unlink($outFile); + + # run the command (it will error because we do not have everything + # required by rombuild, but we will get an output oby file which + # shows whether buildrom did the right thing or not). + system($command . " >nul 2>&1"); + + if (!open(OUTPUT, $outFile)) + { + print STDERR "FAILED: $command\n\t$outFile was not created\n"; + return 1; + } + + if (!open(EXPECT, $expFile)) + { + print STDERR "FAILED: $command\n\t$expFile was not found\n"; + close(OUTPUT); + return 1; + } + + my $outLine; + my $expLine; + my $lineNumber = 1; + my $outMissing = 0; + my $expMissing = 0; + my $nonMatches = 0; + + while ($expLine = ) + { + $expLine =~ s/^\s+//; + $expLine =~ s/\s+$//; + + if ($outLine = ) + { + $outLine =~ s/^\s+//; + $outLine =~ s/\s+$//; + + if (!($expLine eq $outLine)) + { + print STDERR "FAILED: $command\n"; + print STDERR "\texpected output line $lineNumber was:\n"; + print STDERR "\t$expLine\n"; + print STDERR "\tactual output line $lineNumber was:\n"; + print STDERR "\t$outLine\n"; + $nonMatches++; + } + } + else + { + $outMissing++; + } + $lineNumber++; + } + while ($outLine = ) + { + $expMissing++; + } + + close(EXPECT); + close(OUTPUT); + + if ($nonMatches) + { + print STDERR "FAILED: $command\n"; + print STDERR "\t$nonMatches lines did not match\n"; + return 1; + } + if ($outMissing) + { + print STDERR "FAILED: $command\n"; + print STDERR "\toutput file $outFile is $outMissing lines too short\n"; + return 1; + } + if ($expMissing) + { + print STDERR "FAILED: $command\n"; + print STDERR "\toutput file $outFile is $expMissing lines too long\n"; + return 1; + } + + print STDERR "OK: $command\n"; + return 0; # OK +} + +use File::Basename; + +sub createDummyInclude +{ + my $file = shift; + my $dir = dirname($file); + + mkdir($dir) if (!-d $dir); + + if (open(FILE, ">$file")) + { + print FILE "/* test file */\n"; + close(FILE); + } + else + { + print STDERR "could not write file $file\n"; + } +}