sbsv1/abld/test/featurevariantparser/test.pl
changeset 599 fa7a3cc6effd
equal deleted inserted replaced
596:9f25be3da657 599:fa7a3cc6effd
       
     1 #
       
     2 # Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
       
     3 # All rights reserved.
       
     4 # This component and the accompanying materials are made available
       
     5 # under the terms of "Eclipse Public License v1.0"
       
     6 # which accompanies this distribution, and is available
       
     7 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 #
       
     9 # Initial Contributors:
       
    10 # Nokia Corporation - initial contribution.
       
    11 #
       
    12 # Contributors:
       
    13 #
       
    14 # Description:
       
    15 #
       
    16 
       
    17 # Unit tests for Feature Variant Parser (featurevariantparser.pm)
       
    18 # Will only work with EPOCROOT = \, due to some hard coded paths in the VAR files
       
    19 # To use a custom EPOCROOT, update the VAR files to reflect the correct paths
       
    20 # This test script can either be called on its own, or run through the test harness under ../unittest.pl
       
    21 
       
    22 use strict;
       
    23 use Test;
       
    24 use lib "../../e32util";
       
    25 use lib "../e32util";
       
    26 use featurevariantparser;
       
    27 use File::Spec;
       
    28 use File::Basename;
       
    29 
       
    30 BEGIN { plan tests => 18 }
       
    31 
       
    32 # Current Working Directory
       
    33 my $dir = dirname($0);
       
    34 
       
    35 my @buildincludes;
       
    36 my $buildincs;
       
    37 my $romincs;
       
    38 my @romincludes;
       
    39 my @parentnodes;
       
    40 my $parents;
       
    41 my @childnodes;
       
    42 my $children;
       
    43 
       
    44 # Uncommenting the next line will enable verbose mode
       
    45 #$featurevariantparser::verbose=1;
       
    46 
       
    47 # Load first variant file
       
    48 my %variant1 = featurevariantparser->GetVariant( "default", "$dir" );
       
    49 
       
    50 #1
       
    51 print "\nCheck the NAME of the variant:\n";
       
    52 ok( 'default', $variant1{'NAME'} );
       
    53 
       
    54 #2
       
    55 print "\nCheck the FULL PATH:\n";
       
    56 ok( File::Spec->rel2abs("$dir\\default.var"), $variant1{'FULLPATH'} );
       
    57 
       
    58 #3
       
    59 print "\nCheck if variant is VALID:\n";
       
    60 ok( $variant1{'VALID'} );
       
    61 
       
    62 #4
       
    63 print "\nCheck if this is a VIRTUAL node:\n";
       
    64 ok( $variant1{'VIRTUAL'} );
       
    65 
       
    66 #5
       
    67 my $tmp = "$ENV{EPOCROOT}epoc32\\include\\variant\\Symbian_OS.hrh";
       
    68 print "\nTest the VARIANT_HRH:\n";
       
    69 ok( File::Spec->canonpath($tmp), $variant1{'VARIANT_HRH'} );
       
    70 
       
    71 #6
       
    72 print "\nTesting the BUILD_INCLUDES with 'append' keyword:\n";
       
    73 @buildincludes = ("$ENV{EPOCROOT}epoc32/include/build");
       
    74 $buildincs     = $variant1{'BUILD_INCLUDES'};
       
    75 ok( File::Spec->canonpath("@buildincludes"), "@$buildincs" );
       
    76 
       
    77 #7
       
    78 print "\nTesting the ROM_INCLUDES:\n";
       
    79 @romincludes = ("$ENV{EPOCROOT}epoc32\\include\\rom");
       
    80 $romincs     = $variant1{'ROM_INCLUDES'};
       
    81 ok( File::Spec->canonpath("@romincludes"), "@$romincs" );
       
    82 
       
    83 # Load Second Variant File
       
    84 my %variant2 = featurevariantparser->GetVariant( "a1", "$dir" );
       
    85 
       
    86 #8
       
    87 print "\nTesting PARENT NODES:\n";
       
    88 @parentnodes = ("groupA default");
       
    89 $parents     = $variant2{'PARENTS'};
       
    90 ok( "@parentnodes", "@$parents" );
       
    91 
       
    92 #9
       
    93 print "\nTesting CHILD NODES:\n";
       
    94 @childnodes = ( "b1a", "b1b" );
       
    95 $children = $variant2{'CHILDREN'};
       
    96 ok( "@childnodes", "@$children" );
       
    97 
       
    98 #10
       
    99 print "\nTesting BUILD_INCLUDES of a child variant with 'prepend' keyword:\n";
       
   100 @buildincludes = (
       
   101     "$ENV{EPOCROOT}prepend/include/A1",
       
   102     "$ENV{EPOCROOT}epoc32/include/build",
       
   103     "$ENV{EPOCROOT}epoc32/include/groupA/build",
       
   104     "$ENV{EPOCROOT}epoc32/include/A1/build"
       
   105 );
       
   106 $buildincs = $variant2{'BUILD_INCLUDES'};
       
   107 ok( File::Spec->canonpath("@buildincludes"), "@$buildincs" );
       
   108 
       
   109 #11
       
   110 print "\nTesting ROM_INCLUDES of a child variant:\n";
       
   111 @romincludes = (
       
   112     "$ENV{EPOCROOT}epoc32/include/A1/rom",
       
   113     "$ENV{EPOCROOT}epoc32/include/rom",
       
   114     "$ENV{EPOCROOT}epoc32/include/groupA/rom"
       
   115 );
       
   116 $romincs = $variant2{'ROM_INCLUDES'};
       
   117 ok( File::Spec->canonpath("@romincludes"), "@$romincs" );
       
   118 
       
   119 
       
   120 #12
       
   121 print "\nTesting Invalid Variant file (Missing HRH location). Expect an error from this test\n";
       
   122 # Load third Variant File
       
   123 my %variant3 = featurevariantparser->GetVariant( "b2", "$dir" );
       
   124 ok( !$variant3{'VALID'} );
       
   125 
       
   126 #13
       
   127 my %info4 = featurevariantparser->GetVariant( "a2", "$dir" );
       
   128 print "\nTesting the BUILD_INCLUDES of a child node with 'set' keyword:\n";
       
   129 @buildincludes = (
       
   130     "$ENV{EPOCROOT}epoc32/include/A2/build",
       
   131     "$ENV{EPOCROOT}epoc32/include/A2/build2"
       
   132 );
       
   133 $buildincs = $info4{'BUILD_INCLUDES'};
       
   134 ok( File::Spec->canonpath("@buildincludes"), "@$buildincs" );
       
   135 
       
   136 #14 
       
   137 print "\nTesting for function which searches for default variant file in a given directory\n";
       
   138 ok(featurevariantparser->DefaultExists("$dir"));
       
   139 
       
   140 
       
   141 #15 
       
   142 print "\nTesting for function which searches for default variant file in the default directory\n";
       
   143 if ( -e "$ENV{EPOCROOT}epoc32/tools/variant/default.var" ) {
       
   144 	ok(featurevariantparser->DefaultExists());
       
   145 }
       
   146 else {
       
   147 	ok(!featurevariantparser->DefaultExists());
       
   148 }
       
   149 
       
   150 
       
   151 #16
       
   152 print "\nTesting GetBuildableFeatureVariants(). Ignore the generated errors\n";
       
   153 my @list =featurevariantparser->GetBuildableFeatureVariants($dir);
       
   154 my $validlist = "b1a";
       
   155 ok($list[0],$validlist);
       
   156 
       
   157 
       
   158 #17
       
   159 print "\nTesting ResolveFeatureVariant().Ignore the generated errors\n";
       
   160 my @list2 = featurevariantparser->ResolveFeatureVariant("default",$dir);
       
   161 my @validlist2 = ("b1a");
       
   162 ok(@list2,@validlist2);
       
   163 
       
   164 #18
       
   165 print "\nTesting GetValidVariant().Ignore the generated errors\n";
       
   166 my @list3 = featurevariantparser->GetValidVariants($dir);
       
   167 my @validlist3 = ("a1","a2","b1a","default","groupa");
       
   168 ok("@list3","@validlist3");