tsrc/testing/tools/genCfgs.pl
author hgs
Thu, 04 Nov 2010 11:16:56 +0200
changeset 71 60b4b6493d7b
permissions -rw-r--r--
201044
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
71
hgs
parents:
diff changeset
     1
#
hgs
parents:
diff changeset
     2
# Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
# All rights reserved.
hgs
parents:
diff changeset
     4
# This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
# under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
# which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
#
hgs
parents:
diff changeset
     9
# Initial Contributors:
hgs
parents:
diff changeset
    10
# Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
#
hgs
parents:
diff changeset
    12
# Contributors:
hgs
parents:
diff changeset
    13
#
hgs
parents:
diff changeset
    14
# Description: 
hgs
parents:
diff changeset
    15
#
hgs
parents:
diff changeset
    16
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#------------------------------------------------------------------------------------
hgs
parents:
diff changeset
    19
# Includes
hgs
parents:
diff changeset
    20
#------------------------------------------------------------------------------------
hgs
parents:
diff changeset
    21
#use strict;
hgs
parents:
diff changeset
    22
use warnings;
hgs
parents:
diff changeset
    23
use Cwd; # for cwd
hgs
parents:
diff changeset
    24
use FindBin; # for FindBin:Bin
hgs
parents:
diff changeset
    25
use File::Path; # for mkpath
hgs
parents:
diff changeset
    26
use Date::Calc;
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
{ # No globals.
hgs
parents:
diff changeset
    29
    # Solve where the script is located.
hgs
parents:
diff changeset
    30
    $0=~/^(.+[\\\/])[^\\\/]+[\\\/]*$/;
hgs
parents:
diff changeset
    31
    my $cgidir= $1 || "./";
hgs
parents:
diff changeset
    32
    
hgs
parents:
diff changeset
    33
    # And try to solve relative path.
hgs
parents:
diff changeset
    34
    if( index( $cgidir, "..\\" ) != -1 )
hgs
parents:
diff changeset
    35
    {
hgs
parents:
diff changeset
    36
    	my $p = cwd;
hgs
parents:
diff changeset
    37
    	$p =~ s/\//\\/g;
hgs
parents:
diff changeset
    38
    	$cgidir =~ s/\//\\/g;
hgs
parents:
diff changeset
    39
    	while(1) 
hgs
parents:
diff changeset
    40
    	{
hgs
parents:
diff changeset
    41
    		my $pos = index( $cgidir, "..\\" );
hgs
parents:
diff changeset
    42
    		last if( $pos == -1 );
hgs
parents:
diff changeset
    43
    		$cgidir = substr( $cgidir, $pos+3 );
hgs
parents:
diff changeset
    44
    		
hgs
parents:
diff changeset
    45
    		$pos = rindex( $p, "\\" );
hgs
parents:
diff changeset
    46
    		last if( $pos == -1 );
hgs
parents:
diff changeset
    47
    		$p = substr( $p, 0, $pos);
hgs
parents:
diff changeset
    48
    	}
hgs
parents:
diff changeset
    49
    	$cgidir = $p . "\\" . $cgidir;
hgs
parents:
diff changeset
    50
    }
hgs
parents:
diff changeset
    51
    
hgs
parents:
diff changeset
    52
    if ( ! -e( $cgidir . "rerunsubs.pl" ) )
hgs
parents:
diff changeset
    53
    {
hgs
parents:
diff changeset
    54
        $cgidir = cwd;
hgs
parents:
diff changeset
    55
        my $domain = "VideoApp_Domain";
hgs
parents:
diff changeset
    56
        my $pos = index( $cgidir, $domain );
hgs
parents:
diff changeset
    57
        if( $pos != -1 )
hgs
parents:
diff changeset
    58
        {
hgs
parents:
diff changeset
    59
            $cgidir = substr( $cgidir, 0, $pos + length( $domain ) ) . "\\videoplayer\\tsrc\\testing\\tools\\";
hgs
parents:
diff changeset
    60
            
hgs
parents:
diff changeset
    61
        }
hgs
parents:
diff changeset
    62
    }
hgs
parents:
diff changeset
    63
    require( $cgidir . "utils.pl" );
hgs
parents:
diff changeset
    64
}
hgs
parents:
diff changeset
    65
hgs
parents:
diff changeset
    66
#------------------------------------------------------------------------------------
hgs
parents:
diff changeset
    67
# GLOBAL CODE
hgs
parents:
diff changeset
    68
#------------------------------------------------------------------------------------
hgs
parents:
diff changeset
    69
hgs
parents:
diff changeset
    70
my @paramClasses;
hgs
parents:
diff changeset
    71
hgs
parents:
diff changeset
    72
while(scalar(@ARGV) <= 0)
hgs
parents:
diff changeset
    73
{
hgs
parents:
diff changeset
    74
    Help();
hgs
parents:
diff changeset
    75
    exit;
hgs
parents:
diff changeset
    76
}
hgs
parents:
diff changeset
    77
hgs
parents:
diff changeset
    78
while(scalar(@ARGV) >= 1)
hgs
parents:
diff changeset
    79
{
hgs
parents:
diff changeset
    80
	my $argument = shift(@ARGV);
hgs
parents:
diff changeset
    81
hgs
parents:
diff changeset
    82
	if($argument eq "-c")
hgs
parents:
diff changeset
    83
	{
hgs
parents:
diff changeset
    84
		my $class = shift(@ARGV);
hgs
parents:
diff changeset
    85
		push @paramClasses, $class;
hgs
parents:
diff changeset
    86
	}
hgs
parents:
diff changeset
    87
	elsif($argument eq "-h")
hgs
parents:
diff changeset
    88
	{
hgs
parents:
diff changeset
    89
		Help();
hgs
parents:
diff changeset
    90
		exit;
hgs
parents:
diff changeset
    91
	}
hgs
parents:
diff changeset
    92
	else  {
hgs
parents:
diff changeset
    93
        Help();
hgs
parents:
diff changeset
    94
		exit;
hgs
parents:
diff changeset
    95
	}
hgs
parents:
diff changeset
    96
}
hgs
parents:
diff changeset
    97
hgs
parents:
diff changeset
    98
sub Help
hgs
parents:
diff changeset
    99
{
hgs
parents:
diff changeset
   100
    print <<USAGE_EOF;
hgs
parents:
diff changeset
   101
hgs
parents:
diff changeset
   102
Creates new STIF CFG files depending if they have the specified class(es) defined. Add line:
hgs
parents:
diff changeset
   103
    # CaseClass: <classname> 
hgs
parents:
diff changeset
   104
before the case to define the class.
hgs
parents:
diff changeset
   105
hgs
parents:
diff changeset
   106
Usage: genCfgs.pl -c <classname> (-c classname2)
hgs
parents:
diff changeset
   107
    
hgs
parents:
diff changeset
   108
USAGE_EOF
hgs
parents:
diff changeset
   109
    
hgs
parents:
diff changeset
   110
    exit;
hgs
parents:
diff changeset
   111
}
hgs
parents:
diff changeset
   112
hgs
parents:
diff changeset
   113
ClassifyCfgs( \@paramClasses );
hgs
parents:
diff changeset
   114
hgs
parents:
diff changeset
   115
exit;
hgs
parents:
diff changeset
   116
hgs
parents:
diff changeset
   117
sub ClassifyCfgs
hgs
parents:
diff changeset
   118
{
hgs
parents:
diff changeset
   119
    my ( $refClasses ) = @_;
hgs
parents:
diff changeset
   120
    
hgs
parents:
diff changeset
   121
    system("rmdir /s /q conf_temp");
hgs
parents:
diff changeset
   122
    mkdir("conf_temp");
hgs
parents:
diff changeset
   123
    
hgs
parents:
diff changeset
   124
    my @cfgFiles;
hgs
parents:
diff changeset
   125
    FindFiles( ".", ".cfg", 0, \@cfgFiles );
hgs
parents:
diff changeset
   126
    
hgs
parents:
diff changeset
   127
    my @testframeworkInis;
hgs
parents:
diff changeset
   128
    FindFiles( ".", "testframework.ini", 0, \@testframeworkInis );
hgs
parents:
diff changeset
   129
    if( scalar( @testframeworkInis ) < 1 )
hgs
parents:
diff changeset
   130
    {
hgs
parents:
diff changeset
   131
        die("\nThere must be at least one testframework.ini somewhere in the subpath!\n");
hgs
parents:
diff changeset
   132
    }
hgs
parents:
diff changeset
   133
    print("Using testframework.ini from: " . $testframeworkInis[0] . "\n");
hgs
parents:
diff changeset
   134
    
hgs
parents:
diff changeset
   135
    my @pkgFiles;
hgs
parents:
diff changeset
   136
    
hgs
parents:
diff changeset
   137
    foreach my $file ( @cfgFiles )
hgs
parents:
diff changeset
   138
    {
hgs
parents:
diff changeset
   139
        my $dst = ".\\conf_temp\\" . GetPathFileName( $file );
hgs
parents:
diff changeset
   140
        if( ClassifyCfg( $refClasses, $file, $dst ) )
hgs
parents:
diff changeset
   141
        {
hgs
parents:
diff changeset
   142
            push @pkgFiles, GetPathFileName( $file );
hgs
parents:
diff changeset
   143
            AddCfgToIni( $testframeworkInis[0], ".\\conf_temp\\Testframework.ini", GetPathFileName( $file ) );
hgs
parents:
diff changeset
   144
            print("Added: " . GetPathFileName($file) . "\n");
hgs
parents:
diff changeset
   145
        }
hgs
parents:
diff changeset
   146
    }
hgs
parents:
diff changeset
   147
    
hgs
parents:
diff changeset
   148
    if( scalar(@pkgFiles) > 0 )
hgs
parents:
diff changeset
   149
    {
hgs
parents:
diff changeset
   150
        MakeSISX( \@pkgFiles );
hgs
parents:
diff changeset
   151
    }
hgs
parents:
diff changeset
   152
    else
hgs
parents:
diff changeset
   153
    {
hgs
parents:
diff changeset
   154
        system("rmdir /s /q conf_temp"); # remove empty dir
hgs
parents:
diff changeset
   155
    }
hgs
parents:
diff changeset
   156
}
hgs
parents:
diff changeset
   157
hgs
parents:
diff changeset
   158
sub ClassifyCfg
hgs
parents:
diff changeset
   159
{
hgs
parents:
diff changeset
   160
    my ( $refClasses, $sourceFile, $destFile ) = @_;
hgs
parents:
diff changeset
   161
    
hgs
parents:
diff changeset
   162
    # Read the cfg.
hgs
parents:
diff changeset
   163
	open(FILE_HANDLE, $sourceFile) or die ("ERROR! Could not open file $sourceFile\n");
hgs
parents:
diff changeset
   164
	my @cfgLines = <FILE_HANDLE>;
hgs
parents:
diff changeset
   165
	close(FILE_HANDLE);    
hgs
parents:
diff changeset
   166
        
hgs
parents:
diff changeset
   167
    my @cfgCases;
hgs
parents:
diff changeset
   168
    ReadCfgCasesWithClass( \@cfgLines, \@cfgCases, $refClasses );
hgs
parents:
diff changeset
   169
    
hgs
parents:
diff changeset
   170
    if( !@cfgCases or scalar(@cfgCases) < 1 )
hgs
parents:
diff changeset
   171
    {
hgs
parents:
diff changeset
   172
        return 0;
hgs
parents:
diff changeset
   173
    }
hgs
parents:
diff changeset
   174
    
hgs
parents:
diff changeset
   175
    # Write the helium CFG.
hgs
parents:
diff changeset
   176
    open(FILE_HANDLE, ">$destFile") or die("Could not write into file $destFile\n");
hgs
parents:
diff changeset
   177
    
hgs
parents:
diff changeset
   178
    # Write everything from CFG before the first case.
hgs
parents:
diff changeset
   179
    foreach my $line ( @cfgLines )
hgs
parents:
diff changeset
   180
    {
hgs
parents:
diff changeset
   181
        if( $line =~ m/\[Test\]/ )
hgs
parents:
diff changeset
   182
        {
hgs
parents:
diff changeset
   183
            last; 
hgs
parents:
diff changeset
   184
        }
hgs
parents:
diff changeset
   185
        print FILE_HANDLE ( $line );
hgs
parents:
diff changeset
   186
    }
hgs
parents:
diff changeset
   187
    
hgs
parents:
diff changeset
   188
    foreach my $refCase ( @cfgCases )
hgs
parents:
diff changeset
   189
    {
hgs
parents:
diff changeset
   190
        my $refCaseLines = @$refCase[1];
hgs
parents:
diff changeset
   191
        print FILE_HANDLE ( @$refCaseLines );
hgs
parents:
diff changeset
   192
        print FILE_HANDLE ( "\n" );
hgs
parents:
diff changeset
   193
    }
hgs
parents:
diff changeset
   194
        
hgs
parents:
diff changeset
   195
    close( FILE_HANDLE );
hgs
parents:
diff changeset
   196
    
hgs
parents:
diff changeset
   197
    return 1;
hgs
parents:
diff changeset
   198
}
hgs
parents:
diff changeset
   199
hgs
parents:
diff changeset
   200
sub ReadCfgCasesWithClass
hgs
parents:
diff changeset
   201
{
hgs
parents:
diff changeset
   202
    my ( $refLines, $refCases, $refClasses ) = @_;
hgs
parents:
diff changeset
   203
    
hgs
parents:
diff changeset
   204
	my $inCase = 0;
hgs
parents:
diff changeset
   205
	my @caseLines;
hgs
parents:
diff changeset
   206
	my $caseTitle;
hgs
parents:
diff changeset
   207
    my @caseClasses = "";
hgs
parents:
diff changeset
   208
hgs
parents:
diff changeset
   209
    my $cfgHasClassCases = 0;
hgs
parents:
diff changeset
   210
hgs
parents:
diff changeset
   211
	for( my $i = 0; $i < scalar(@$refLines); $i++ )
hgs
parents:
diff changeset
   212
	{
hgs
parents:
diff changeset
   213
	    my $line = @$refLines[$i];
hgs
parents:
diff changeset
   214
	    
hgs
parents:
diff changeset
   215
	    # Case has class.
hgs
parents:
diff changeset
   216
	    if( $line =~ m/#[ ]+CaseClass:/ )
hgs
parents:
diff changeset
   217
	    {
hgs
parents:
diff changeset
   218
	        my $pos = index( $line, "CaseClass: " );
hgs
parents:
diff changeset
   219
	        if( $pos == -1 )
hgs
parents:
diff changeset
   220
	        {
hgs
parents:
diff changeset
   221
	            $i++;
hgs
parents:
diff changeset
   222
	            die("Invalid CaseClass at line $i. Must be specified exactly as '# CaseClass: clas1(,class2,class3..)'.\n");
hgs
parents:
diff changeset
   223
	        }
hgs
parents:
diff changeset
   224
	        my $classes = substr( $line, $pos + 11 );
hgs
parents:
diff changeset
   225
	        RemoveWhiteSpaces(\$classes);
hgs
parents:
diff changeset
   226
	        @caseClasses = split(/,/, $classes);	        
hgs
parents:
diff changeset
   227
	    }
hgs
parents:
diff changeset
   228
hgs
parents:
diff changeset
   229
	    # Case starts here.
hgs
parents:
diff changeset
   230
	    if( $line =~ m/\[Test\]/ )
hgs
parents:
diff changeset
   231
	    {
hgs
parents:
diff changeset
   232
	        undef( @caseLines );
hgs
parents:
diff changeset
   233
	        $caseTitle = "";
hgs
parents:
diff changeset
   234
	        $inCase = 1;
hgs
parents:
diff changeset
   235
	    }
hgs
parents:
diff changeset
   236
	    
hgs
parents:
diff changeset
   237
	    # Found title for the case.
hgs
parents:
diff changeset
   238
	    if( $line =~ m/^title / )
hgs
parents:
diff changeset
   239
	    {
hgs
parents:
diff changeset
   240
	        $caseTitle = $line;
hgs
parents:
diff changeset
   241
	    }
hgs
parents:
diff changeset
   242
	    
hgs
parents:
diff changeset
   243
	    # Save case lines.
hgs
parents:
diff changeset
   244
	    if( $inCase )
hgs
parents:
diff changeset
   245
	    {
hgs
parents:
diff changeset
   246
	        push @caseLines, ( $line );
hgs
parents:
diff changeset
   247
	    }
hgs
parents:
diff changeset
   248
	    
hgs
parents:
diff changeset
   249
	    # End of test case.
hgs
parents:
diff changeset
   250
	    if( $line =~ m/\[Endtest\]/ )
hgs
parents:
diff changeset
   251
	    {
hgs
parents:
diff changeset
   252
	        $inCase = 0;
hgs
parents:
diff changeset
   253
hgs
parents:
diff changeset
   254
            my $saveCase = 0;
hgs
parents:
diff changeset
   255
                    
hgs
parents:
diff changeset
   256
            foreach my $class ( @$refClasses )
hgs
parents:
diff changeset
   257
            {
hgs
parents:
diff changeset
   258
                foreach my $caseClass (@caseClasses)
hgs
parents:
diff changeset
   259
                {
hgs
parents:
diff changeset
   260
                    if( $caseClass eq $class )
hgs
parents:
diff changeset
   261
                    {
hgs
parents:
diff changeset
   262
                        $saveCase = 1;
hgs
parents:
diff changeset
   263
                        $cfgHasClassCases = 1;
hgs
parents:
diff changeset
   264
                        #print("Class case: $caseTitle\n"); 
hgs
parents:
diff changeset
   265
                    }
hgs
parents:
diff changeset
   266
                }
hgs
parents:
diff changeset
   267
            }
hgs
parents:
diff changeset
   268
            
hgs
parents:
diff changeset
   269
            if( $caseTitle =~ m/Setup/i or $caseTitle =~ m/not a test/i or $caseTitle =~ m/set up/i 
hgs
parents:
diff changeset
   270
                or $caseTitle =~m/not test/i or $caseTitle =~m/cleanup/i )
hgs
parents:
diff changeset
   271
            {
hgs
parents:
diff changeset
   272
                $saveCase = 1;
hgs
parents:
diff changeset
   273
                #print("Setup case: $caseTitle\n");
hgs
parents:
diff changeset
   274
            }
hgs
parents:
diff changeset
   275
            
hgs
parents:
diff changeset
   276
            if( $saveCase )
hgs
parents:
diff changeset
   277
            {
hgs
parents:
diff changeset
   278
                # Yes, save it.
hgs
parents:
diff changeset
   279
                my @case;
hgs
parents:
diff changeset
   280
                $case[0] = $caseTitle;
hgs
parents:
diff changeset
   281
                $case[1] = [ @caseLines ];
hgs
parents:
diff changeset
   282
                push @$refCases, [ @case ];
hgs
parents:
diff changeset
   283
	        
hgs
parents:
diff changeset
   284
	        }
hgs
parents:
diff changeset
   285
	        undef( @caseClasses );
hgs
parents:
diff changeset
   286
	    }
hgs
parents:
diff changeset
   287
	}
hgs
parents:
diff changeset
   288
	
hgs
parents:
diff changeset
   289
	if( !$cfgHasClassCases )
hgs
parents:
diff changeset
   290
	{
hgs
parents:
diff changeset
   291
        undef( @$refCases );
hgs
parents:
diff changeset
   292
	}
hgs
parents:
diff changeset
   293
}
hgs
parents:
diff changeset
   294
hgs
parents:
diff changeset
   295
sub FindFiles
hgs
parents:
diff changeset
   296
{
hgs
parents:
diff changeset
   297
	my ($godir, $fileSearch, $searchType, $refIncfiles) = @_;
hgs
parents:
diff changeset
   298
hgs
parents:
diff changeset
   299
	my $startDir = cwd;
hgs
parents:
diff changeset
   300
hgs
parents:
diff changeset
   301
	chdir($godir);
hgs
parents:
diff changeset
   302
hgs
parents:
diff changeset
   303
	opendir(DIR, ".");
hgs
parents:
diff changeset
   304
	my @filelist = sort(readdir(DIR));
hgs
parents:
diff changeset
   305
	closedir(DIR);
hgs
parents:
diff changeset
   306
hgs
parents:
diff changeset
   307
	foreach my $file(@filelist)
hgs
parents:
diff changeset
   308
	{
hgs
parents:
diff changeset
   309
		if($file eq "." or $file eq "..") {next};
hgs
parents:
diff changeset
   310
hgs
parents:
diff changeset
   311
		if (-d $file)
hgs
parents:
diff changeset
   312
		{
hgs
parents:
diff changeset
   313
		 	FindFiles( $file, $fileSearch, $searchType, $refIncfiles);
hgs
parents:
diff changeset
   314
		} else
hgs
parents:
diff changeset
   315
		{
hgs
parents:
diff changeset
   316
			if( ($file =~ m/$fileSearch/i and $searchType == 0 ) or ($file =~ m/$fileSearch$/i and $searchType == 1 ) )
hgs
parents:
diff changeset
   317
			{
hgs
parents:
diff changeset
   318
                $file = cwd . "/" . $file;
hgs
parents:
diff changeset
   319
				push @$refIncfiles, $file;
hgs
parents:
diff changeset
   320
			}
hgs
parents:
diff changeset
   321
		}
hgs
parents:
diff changeset
   322
	}
hgs
parents:
diff changeset
   323
hgs
parents:
diff changeset
   324
	chdir ($startDir);
hgs
parents:
diff changeset
   325
}
hgs
parents:
diff changeset
   326
hgs
parents:
diff changeset
   327
sub MakeSISX
hgs
parents:
diff changeset
   328
{
hgs
parents:
diff changeset
   329
    my ($refFiles) = @_;
hgs
parents:
diff changeset
   330
hgs
parents:
diff changeset
   331
    # Continue creating pkg.
hgs
parents:
diff changeset
   332
hgs
parents:
diff changeset
   333
    my $startDir = cwd;
hgs
parents:
diff changeset
   334
hgs
parents:
diff changeset
   335
    chdir( "conf_temp" );
hgs
parents:
diff changeset
   336
hgs
parents:
diff changeset
   337
    my $pkgname = "cfgs.pkg";
hgs
parents:
diff changeset
   338
    my $sisname = "cfgs.sis";
hgs
parents:
diff changeset
   339
    my $sisnamex = "cfgs.sisx";
hgs
parents:
diff changeset
   340
hgs
parents:
diff changeset
   341
    print("Writing pkg $pkgname\n");
hgs
parents:
diff changeset
   342
	if( !open(FILE_HANDLE, ">$pkgname") )
hgs
parents:
diff changeset
   343
	{
hgs
parents:
diff changeset
   344
		print("ERROR: could not write to file: $pkgname\n");
hgs
parents:
diff changeset
   345
		return 0;
hgs
parents:
diff changeset
   346
	}
hgs
parents:
diff changeset
   347
hgs
parents:
diff changeset
   348
    my $lineFeed = "\n";
hgs
parents:
diff changeset
   349
hgs
parents:
diff changeset
   350
    print FILE_HANDLE (
hgs
parents:
diff changeset
   351
    "&EN" . $lineFeed .
hgs
parents:
diff changeset
   352
    "#{\"CFGS\"},(0x10102ae9),0,1,0,TYPE=PU" . $lineFeed .
hgs
parents:
diff changeset
   353
    "%{\"Nokia EN\"}" . $lineFeed .
hgs
parents:
diff changeset
   354
    ":\"Nokia\"" . $lineFeed
hgs
parents:
diff changeset
   355
    );
hgs
parents:
diff changeset
   356
hgs
parents:
diff changeset
   357
    foreach my $file (@$refFiles)
hgs
parents:
diff changeset
   358
    {
hgs
parents:
diff changeset
   359
        print FILE_HANDLE ("\"..\\conf_temp\\$file\" - \"c:\\TestFramework\\$file\"" . $lineFeed );
hgs
parents:
diff changeset
   360
    }
hgs
parents:
diff changeset
   361
    
hgs
parents:
diff changeset
   362
    my $file = "Testframework.ini";
hgs
parents:
diff changeset
   363
    print FILE_HANDLE (";\"..\\conf_temp\\$file\" - \"c:\\TestFramework\\$file\"" . $lineFeed );
hgs
parents:
diff changeset
   364
hgs
parents:
diff changeset
   365
    close(FILE_HANDLE);
hgs
parents:
diff changeset
   366
hgs
parents:
diff changeset
   367
    # Check that we have signing keys.
hgs
parents:
diff changeset
   368
    
hgs
parents:
diff changeset
   369
    my $derFile = "RDTest_02.der";
hgs
parents:
diff changeset
   370
    my $keyFile = "RDTest_02.key";
hgs
parents:
diff changeset
   371
hgs
parents:
diff changeset
   372
    if (-e $derFile and -e $keyFile)
hgs
parents:
diff changeset
   373
    {
hgs
parents:
diff changeset
   374
        # Keys are in current dir
hgs
parents:
diff changeset
   375
    }
hgs
parents:
diff changeset
   376
    elsif(-e "sis\\$derFile" and -e "sis\\$keyFile")
hgs
parents:
diff changeset
   377
    {
hgs
parents:
diff changeset
   378
        # Keys are in internal/sis dir
hgs
parents:
diff changeset
   379
        $derFile = "sis\\$derFile";
hgs
parents:
diff changeset
   380
        $keyFile = "sis\\$keyFile";
hgs
parents:
diff changeset
   381
    }
hgs
parents:
diff changeset
   382
    elsif(-e "group\\$derFile" and -e "group\\$keyFile")
hgs
parents:
diff changeset
   383
    {
hgs
parents:
diff changeset
   384
        # Keys are in internal/group dir
hgs
parents:
diff changeset
   385
        $derFile = "group\\$derFile";
hgs
parents:
diff changeset
   386
        $keyFile = "group\\$keyFile";
hgs
parents:
diff changeset
   387
    }    
hgs
parents:
diff changeset
   388
    else
hgs
parents:
diff changeset
   389
    {
hgs
parents:
diff changeset
   390
        # Find em.
hgs
parents:
diff changeset
   391
        my @derFiles;
hgs
parents:
diff changeset
   392
        my @keyFiles;
hgs
parents:
diff changeset
   393
        FindFiles( ".", "$derFile", 0, \@derFiles );
hgs
parents:
diff changeset
   394
        FindFiles( ".", "$keyFile", 0, \@keyFiles );
hgs
parents:
diff changeset
   395
        $derFile = $derFiles[0] if( scalar(@derFiles) > 0 );
hgs
parents:
diff changeset
   396
        $keyFile = $keyFiles[0] if( scalar(@keyFiles) > 0 );
hgs
parents:
diff changeset
   397
    }
hgs
parents:
diff changeset
   398
       
hgs
parents:
diff changeset
   399
    if (!-e $derFile or !-e $keyFile)
hgs
parents:
diff changeset
   400
    {
hgs
parents:
diff changeset
   401
        print("\nNeed signing keys: $derFile and $keyFile in current or subdirs.\n");
hgs
parents:
diff changeset
   402
        return;
hgs
parents:
diff changeset
   403
    }
hgs
parents:
diff changeset
   404
hgs
parents:
diff changeset
   405
    my $cmd = "makesis $pkgname $sisname";
hgs
parents:
diff changeset
   406
    print("$cmd\n");
hgs
parents:
diff changeset
   407
    system $cmd;
hgs
parents:
diff changeset
   408
hgs
parents:
diff changeset
   409
    $cmd = "signsis $sisname $sisnamex $derFile $keyFile";
hgs
parents:
diff changeset
   410
    print("$cmd\n");
hgs
parents:
diff changeset
   411
    system $cmd;
hgs
parents:
diff changeset
   412
    
hgs
parents:
diff changeset
   413
    #system("del $pkgname");
hgs
parents:
diff changeset
   414
    system("del $sisname");
hgs
parents:
diff changeset
   415
    
hgs
parents:
diff changeset
   416
    chdir( $startDir );
hgs
parents:
diff changeset
   417
}
hgs
parents:
diff changeset
   418
hgs
parents:
diff changeset
   419
hgs
parents:
diff changeset
   420
sub AddCfgToIni
hgs
parents:
diff changeset
   421
{
hgs
parents:
diff changeset
   422
    my ($sourceFile, $destIniFile, $cfgFile) = @_;
hgs
parents:
diff changeset
   423
hgs
parents:
diff changeset
   424
    # Rerun ini does not exist. Create one.
hgs
parents:
diff changeset
   425
    if( ! (-e $destIniFile) )
hgs
parents:
diff changeset
   426
    {
hgs
parents:
diff changeset
   427
    	if( !open(FILE_HANDLE, $sourceFile) )
hgs
parents:
diff changeset
   428
    	{
hgs
parents:
diff changeset
   429
    		print("ERROR! Could not open file '" . $sourceFile . "'\n");
hgs
parents:
diff changeset
   430
    		return 0;
hgs
parents:
diff changeset
   431
    	}
hgs
parents:
diff changeset
   432
    	my @array = <FILE_HANDLE>;
hgs
parents:
diff changeset
   433
    	close(FILE_HANDLE);
hgs
parents:
diff changeset
   434
hgs
parents:
diff changeset
   435
    	if( !open(FILE_HANDLE, ">$destIniFile") )
hgs
parents:
diff changeset
   436
    	{
hgs
parents:
diff changeset
   437
    		print("ERROR! Could not open file '" . $destIniFile . "'\n");
hgs
parents:
diff changeset
   438
    		return 0;
hgs
parents:
diff changeset
   439
    	}
hgs
parents:
diff changeset
   440
hgs
parents:
diff changeset
   441
        my $inNew_Module = 0;
hgs
parents:
diff changeset
   442
hgs
parents:
diff changeset
   443
        foreach $line ( @array )
hgs
parents:
diff changeset
   444
        {
hgs
parents:
diff changeset
   445
            if($line =~ m/\[New_Module\]/)
hgs
parents:
diff changeset
   446
            {
hgs
parents:
diff changeset
   447
                $inNew_Module = 1;
hgs
parents:
diff changeset
   448
                print FILE_HANDLE ($line);
hgs
parents:
diff changeset
   449
                print FILE_HANDLE ("ModuleName= TestScripter\n");
hgs
parents:
diff changeset
   450
            }
hgs
parents:
diff changeset
   451
            if($line =~ m/\[End_Module\]/)
hgs
parents:
diff changeset
   452
            {
hgs
parents:
diff changeset
   453
                $inNew_Module = 0;
hgs
parents:
diff changeset
   454
            }
hgs
parents:
diff changeset
   455
hgs
parents:
diff changeset
   456
            if($inNew_Module)
hgs
parents:
diff changeset
   457
            {
hgs
parents:
diff changeset
   458
                # Copy only setup cfgs if they are found.
hgs
parents:
diff changeset
   459
                if($line =~ m/setvalidservices/i)
hgs
parents:
diff changeset
   460
                {
hgs
parents:
diff changeset
   461
                    print FILE_HANDLE ($line);
hgs
parents:
diff changeset
   462
                }
hgs
parents:
diff changeset
   463
                if($line =~ m/testprovisioning/i)
hgs
parents:
diff changeset
   464
                {
hgs
parents:
diff changeset
   465
                    print FILE_HANDLE ($line);
hgs
parents:
diff changeset
   466
                }
hgs
parents:
diff changeset
   467
            }
hgs
parents:
diff changeset
   468
            else
hgs
parents:
diff changeset
   469
            {
hgs
parents:
diff changeset
   470
                print FILE_HANDLE ($line);
hgs
parents:
diff changeset
   471
            }
hgs
parents:
diff changeset
   472
        }
hgs
parents:
diff changeset
   473
hgs
parents:
diff changeset
   474
    	close(FILE_HANDLE);
hgs
parents:
diff changeset
   475
    }
hgs
parents:
diff changeset
   476
hgs
parents:
diff changeset
   477
    # Read the existing file.
hgs
parents:
diff changeset
   478
hgs
parents:
diff changeset
   479
    if( !open(FILE_HANDLE, $destIniFile) )
hgs
parents:
diff changeset
   480
	{
hgs
parents:
diff changeset
   481
		print("ERROR! Could not open file '" . $destIniFile . "'\n");
hgs
parents:
diff changeset
   482
		return 0;
hgs
parents:
diff changeset
   483
	}
hgs
parents:
diff changeset
   484
	my @array = <FILE_HANDLE>;
hgs
parents:
diff changeset
   485
	close(FILE_HANDLE);
hgs
parents:
diff changeset
   486
hgs
parents:
diff changeset
   487
    # Check if CFG is already there.
hgs
parents:
diff changeset
   488
hgs
parents:
diff changeset
   489
    my $inNew_Module = 0;
hgs
parents:
diff changeset
   490
hgs
parents:
diff changeset
   491
    foreach $line ( @array )
hgs
parents:
diff changeset
   492
    {
hgs
parents:
diff changeset
   493
        if($line =~ m/\[New_Module\]/)
hgs
parents:
diff changeset
   494
        {
hgs
parents:
diff changeset
   495
            $inNew_Module = 1;
hgs
parents:
diff changeset
   496
        }
hgs
parents:
diff changeset
   497
        if($line =~ m/\[End_Module\]/)
hgs
parents:
diff changeset
   498
        {
hgs
parents:
diff changeset
   499
            $inNew_Module = 0;
hgs
parents:
diff changeset
   500
        }
hgs
parents:
diff changeset
   501
hgs
parents:
diff changeset
   502
        if($inNew_Module)
hgs
parents:
diff changeset
   503
        {
hgs
parents:
diff changeset
   504
            if($line =~ m/$cfgFile/i)
hgs
parents:
diff changeset
   505
            {
hgs
parents:
diff changeset
   506
                return 1;
hgs
parents:
diff changeset
   507
            }
hgs
parents:
diff changeset
   508
        }
hgs
parents:
diff changeset
   509
    }
hgs
parents:
diff changeset
   510
hgs
parents:
diff changeset
   511
    # Add the cfg to it.
hgs
parents:
diff changeset
   512
hgs
parents:
diff changeset
   513
	if( !open(FILE_HANDLE, ">$destIniFile") )
hgs
parents:
diff changeset
   514
	{
hgs
parents:
diff changeset
   515
		print("ERROR! Could not open file '" . $destIniFile . "'\n");
hgs
parents:
diff changeset
   516
		return 0;
hgs
parents:
diff changeset
   517
	}
hgs
parents:
diff changeset
   518
hgs
parents:
diff changeset
   519
    $inNew_Module = 0;
hgs
parents:
diff changeset
   520
hgs
parents:
diff changeset
   521
    foreach $line ( @array )
hgs
parents:
diff changeset
   522
    {
hgs
parents:
diff changeset
   523
        if($line =~ m/\[End_Module\]/)
hgs
parents:
diff changeset
   524
        {
hgs
parents:
diff changeset
   525
            $inNew_Module = 0;
hgs
parents:
diff changeset
   526
            print FILE_HANDLE ("TestCaseFile= c:\\TestFramework\\$cfgFile\n");
hgs
parents:
diff changeset
   527
        }
hgs
parents:
diff changeset
   528
        print FILE_HANDLE ($line);
hgs
parents:
diff changeset
   529
    }
hgs
parents:
diff changeset
   530
hgs
parents:
diff changeset
   531
	close(FILE_HANDLE);
hgs
parents:
diff changeset
   532
hgs
parents:
diff changeset
   533
    return 1;
hgs
parents:
diff changeset
   534
}