sbsv2/raptor/test/unit_suite/raptor_data_unit.py
author Richard Taylor <richard.i.taylor@nokia.com>
Mon, 15 Mar 2010 16:54:05 +0000
branchfix
changeset 374 96629a6f26e4
parent 60 28ee654acf42
child 400 554cc189839f
permissions -rw-r--r--
fault tolerant XML groups
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
     1
#
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
     2
# Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
     3
# All rights reserved.
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
     4
# This component and the accompanying materials are made available
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
     5
# under the terms of the License "Eclipse Public License v1.0"
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
     6
# which accompanies this distribution, and is available
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
     7
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
     8
#
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
     9
# Initial Contributors:
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    10
# Nokia Corporation - initial contribution.
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    11
#
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    12
# Contributors:
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    13
#
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    14
# Description: 
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    15
# raptor_data_unit module
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    16
# This module tests the classes that make up the Raptor Data Model.
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    17
#
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    18
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    19
import generic_path
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    20
import os
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    21
import raptor
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    22
import raptor_cache
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    23
import raptor_data
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    24
import unittest
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    25
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    26
class TestRaptorData(unittest.TestCase):
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    27
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    28
	def setUp(self):
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    29
		self.envStack = {}
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    30
		
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    31
		
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    32
	def SetEnv(self, name, value):
60
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
    33
		# set environment variable and remember the old value (if there is one)		
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
    34
		if os.environ.has_key(name):
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
    35
			self.envStack[name] = os.environ[name]
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
    36
		os.environ[name] = value
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    37
		
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    38
			
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    39
	def RestoreEnv(self, name):
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    40
		# put environment back to its state before SetEnv
60
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
    41
		if self.envStack.has_key(name):
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
    42
			os.environ[name] = self.envStack[name]
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
    43
		else:
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    44
			del os.environ[name]    # was not defined
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    45
			
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    46
			
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    47
	def testSimpleSpecification(self):
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    48
		spec = raptor_data.Specification("myProject")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    49
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    50
		spec.SetInterface("Symbian.EXE")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    51
		
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    52
		var = raptor_data.Variant("X")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    53
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    54
		var.AddOperation(raptor_data.Set("SOURCES", "a.cpp"))
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    55
		var.AddOperation(raptor_data.Append("LIBS", "all.dll"))
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    56
		var.AddOperation(raptor_data.Append("INC", "/C/include"))
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    57
		var.AddOperation(raptor_data.Prepend("INC", "/B/include"))
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    58
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    59
		spec.AddVariant(var)
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    60
		spec.AddVariant("AlwaysBuildAsArm")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    61
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    62
		self.failUnless(spec)
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    63
		self.failUnless(spec.Valid())
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    64
		self.failUnless(var.Valid())
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    65
		self.assertEqual(spec.name, "myProject")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    66
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    67
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    68
	def testSimpleFilter(self):
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    69
		filter = raptor_data.Filter("filtered")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    70
		filter.SetConfigCondition("ARMV5")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    71
		
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    72
		filter.SetInterface(raptor_data.Interface("True.EXE"))
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    73
		filter.Else.SetInterface(raptor_data.Interface("False.EXE"))
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    74
		
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    75
		filter.AddVariant(raptor_data.Variant("True_var"))
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    76
		filter.Else.AddVariant(raptor_data.Variant("False_var"))
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    77
		
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    78
		filter.AddChildSpecification(raptor_data.Specification("TrueSpec"))
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    79
		filter.Else.AddChildSpecification(raptor_data.Specification("FalseSpec"))
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    80
		
5
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
    81
		filter.Configure( raptor_data.BuildUnit("ARMV5",[]), cache=None )
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    82
		# check a positive test
5
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
    83
		iface = filter.GetInterface(cache=None)
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    84
		self.assertEqual(iface.name, "True.EXE")
5
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
    85
		vars = filter.GetVariants(cache = None)
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    86
		self.assertEqual(vars[0].name, "True_var")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    87
		kids = filter.GetChildSpecs()
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    88
		self.assertEqual(kids[0].name, "TrueSpec")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    89
		
5
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
    90
		filter.Configure( raptor_data.BuildUnit("NOT_ARMV5",[]) , cache = None)
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    91
		# check a negative test
5
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
    92
		iface = filter.GetInterface(cache = None)
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    93
		self.assertEqual(iface.name, "False.EXE")
5
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
    94
		vars = filter.GetVariants(cache = None)
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    95
		self.assertEqual(vars[0].name, "False_var")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    96
		kids = filter.GetChildSpecs()
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    97
		self.assertEqual(kids[0].name, "FalseSpec")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    98
		
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
    99
5
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
   100
	def testSimpleVariant(self):
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   101
		var = raptor_data.Variant()
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   102
		self.failUnless(var)
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   103
		self.failIf( var.Valid() )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   104
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   105
		var.SetProperty("name", "ABC")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   106
		var.SetProperty("extends", "DEF")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   107
		var.SetProperty("host", "GHI")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   108
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   109
		self.assertEqual(var.name, "ABC")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   110
		self.assertEqual(var.extends, "DEF")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   111
		self.assertEqual(var.host, None)
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   112
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   113
		var.SetProperty("host", "win32")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   114
		self.assertEqual(var.host, "win32")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   115
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   116
		self.failUnless( var.Valid() )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   117
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   118
		var.AddOperation( raptor_data.Set("CC", "armcc") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   119
		var.AddOperation( raptor_data.Set("LN", "armlink") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   120
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   121
		self.failUnless( var.Valid() )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   122
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   123
		var.SetProperty("extends", "")
5
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
   124
		ops = var.GetAllOperationsRecursively(None)
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   125
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   126
		self.assertEqual( len(ops), 1 )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   127
		self.assertEqual( len(ops[0]), 2 )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   128
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   129
	def testExtendedVariant(self):
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   130
		r = raptor.Raptor()
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   131
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   132
		varA = raptor_data.Variant("A")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   133
		varA.SetProperty("extends", None)
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   134
		varA.AddOperation( raptor_data.Set("V1", "1A") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   135
		varA.AddOperation( raptor_data.Set("V2", "2A") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   136
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   137
		varB = raptor_data.Variant("B")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   138
		varB.SetProperty("extends", "A")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   139
		varB.AddOperation( raptor_data.Set("V2", "2B") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   140
		varB.AddOperation( raptor_data.Set("V3", "3B") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   141
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   142
		varC = raptor_data.Variant("C")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   143
		varC.SetProperty("extends", "B")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   144
		varC.AddOperation( raptor_data.Set("V3", "3C") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   145
		varC.AddOperation( raptor_data.Set("V4", "4C") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   146
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   147
		self.failUnless( varA.Valid() )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   148
		self.failUnless( varB.Valid() )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   149
		self.failUnless( varC.Valid() )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   150
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   151
		r.cache.AddVariant(varA)
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   152
		r.cache.AddVariant(varB)
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   153
		r.cache.AddVariant(varC)
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   154
5
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
   155
		e = r.GetEvaluator(None, varA.GenerateBuildUnits(r.cache)[0] )
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   156
		self.assertEqual( e.Get("V1"), "1A" )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   157
		self.assertEqual( e.Get("V2"), "2A" )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   158
5
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
   159
		e = r.GetEvaluator(None, varB.GenerateBuildUnits(r.cache)[0] )
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   160
		self.assertEqual( e.Get("V1"), "1A" )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   161
		self.assertEqual( e.Get("V2"), "2B" )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   162
		self.assertEqual( e.Get("V3"), "3B" )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   163
5
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
   164
		e = r.GetEvaluator(None, varC.GenerateBuildUnits(r.cache)[0] )
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   165
		self.assertEqual( e.Get("V1"), "1A" )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   166
		self.assertEqual( e.Get("V2"), "2B" )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   167
		self.assertEqual( e.Get("V3"), "3C" )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   168
		self.assertEqual( e.Get("V4"), "4C" )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   169
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   170
	def testReferencedVariant(self):
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   171
		r = raptor.Raptor()
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   172
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   173
		varA = raptor_data.Variant("A")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   174
		varA.SetProperty("extends", None)
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   175
		varA.AddOperation( raptor_data.Set("V1", "1A") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   176
		varA.AddOperation( raptor_data.Set("V2", "2A") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   177
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   178
		# B extends A, and has a reference to C.
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   179
		varB = raptor_data.Variant("B")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   180
		varB.SetProperty("extends", "A")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   181
		varB.AddOperation( raptor_data.Set("V2", "2B") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   182
		varB.AddOperation( raptor_data.Set("V3", "3B") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   183
		varB.AddChild( raptor_data.VariantRef("C") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   184
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   185
		varC = raptor_data.Variant("C")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   186
		varC.SetProperty("extends", None)
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   187
		varC.AddOperation( raptor_data.Set("V3", "3C") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   188
		varC.AddOperation( raptor_data.Set("V4", "4C") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   189
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   190
		self.failUnless( varA.Valid() )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   191
		self.failUnless( varB.Valid() )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   192
		self.failUnless( varC.Valid() )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   193
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   194
		r.cache.AddVariant(varA)
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   195
		r.cache.AddVariant(varB)
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   196
		r.cache.AddVariant(varC)
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   197
5
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
   198
		e = r.GetEvaluator(None, varA.GenerateBuildUnits(r.cache)[0] )
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   199
		self.assertEqual( e.Get("V1"), "1A" )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   200
		self.assertEqual( e.Get("V2"), "2A" )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   201
5
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
   202
		e = r.GetEvaluator(None, varC.GenerateBuildUnits(r.cache)[0] )
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   203
		self.assertEqual( e.Get("V3"), "3C" )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   204
		self.assertEqual( e.Get("V4"), "4C" )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   205
5
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
   206
		e = r.GetEvaluator(None, varB.GenerateBuildUnits(r.cache)[0] )
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   207
		self.assertEqual( e.Get("V1"), "1A" )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   208
		self.assertEqual( e.Get("V2"), "2B" )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   209
		self.assertEqual( e.Get("V3"), "3B" )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   210
		self.assertEqual( e.Get("V4"), "4C" )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   211
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   212
	def testAlias(self):
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   213
		r = raptor.Raptor()
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   214
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   215
		varA = raptor_data.Variant("A")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   216
		varA.AddOperation( raptor_data.Set("V1", "1A") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   217
		varA.AddOperation( raptor_data.Set("V2", "2A") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   218
		r.cache.AddVariant(varA)
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   219
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   220
		varB = raptor_data.Variant("B")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   221
		varB.AddOperation( raptor_data.Set("V2", "2B") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   222
		varB.AddOperation( raptor_data.Set("V3", "3B") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   223
		r.cache.AddVariant(varB)
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   224
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   225
		varC = raptor_data.Variant("C")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   226
		varC.AddOperation( raptor_data.Set("V3", "3C") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   227
		varC.AddOperation( raptor_data.Set("V4", "4C") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   228
		r.cache.AddVariant(varC)
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   229
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   230
		# <alias name="an_alias" meaning="A.B.C"/>
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   231
		alias = raptor_data.Alias("an_alias")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   232
		alias.SetProperty("meaning", "A.B.C")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   233
		r.cache.AddAlias(alias)
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   234
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   235
		self.failUnless( alias.Valid() )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   236
5
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
   237
		e = r.GetEvaluator(None, alias.GenerateBuildUnits(r.cache)[0] )
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   238
		self.assertEqual( e.Get("V1"), "1A" )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   239
		self.assertEqual( e.Get("V2"), "2B" )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   240
		self.assertEqual( e.Get("V3"), "3C" )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   241
		self.assertEqual( e.Get("V4"), "4C" )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   242
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   243
	def testGroup1(self):
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   244
		r = raptor.Raptor()
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   245
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   246
		varA = raptor_data.Variant("A")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   247
		varA.AddOperation( raptor_data.Set("V1", "1A") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   248
		varA.AddOperation( raptor_data.Set("V2", "2A") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   249
		r.cache.AddVariant(varA)
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   250
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   251
		varB = raptor_data.Variant("B")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   252
		varB.AddOperation( raptor_data.Set("V2", "2B") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   253
		varB.AddOperation( raptor_data.Set("V3", "3B") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   254
		r.cache.AddVariant(varB)
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   255
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   256
		varC = raptor_data.Variant("C")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   257
		varC.AddOperation( raptor_data.Set("V3", "3C") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   258
		varC.AddOperation( raptor_data.Set("V4", "4C") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   259
		r.cache.AddVariant(varC)
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   260
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   261
		alias = raptor_data.Alias("alias")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   262
		alias.SetProperty("meaning", "B.C")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   263
		r.cache.AddAlias(alias)
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   264
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   265
		# This group has two buildable units: "A" and "alias" = "B.C".
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   266
		# <group name="group1">
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   267
		#	<varRef ref="A"/>
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   268
		#   <aliasRef ref="alias">
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   269
		# <group>
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   270
		group1 = raptor_data.Group("group1")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   271
		group1.AddChild( raptor_data.VariantRef("A") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   272
		group1.AddChild( raptor_data.AliasRef("alias") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   273
		r.cache.AddGroup(group1)
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   274
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   275
		vRef = raptor_data.VariantRef("C")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   276
		vRef.SetProperty("mod", "B")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   277
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   278
		# This group has three buildable units: "C.B", "A" and "alias" = "B.C".
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   279
		# <group name="group2">
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   280
		#	<varRef ref="C" mod="B"/>
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   281
		#   <groupRef ref="group1"/>
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   282
		# <group>
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   283
		group2 = raptor_data.Group("group2")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   284
		group2.AddChild(vRef)
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   285
		group2.AddChild( raptor_data.GroupRef("group1") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   286
		r.cache.AddGroup(group2)
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   287
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   288
		self.failUnless( group1.Valid() )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   289
		self.failUnless( group2.Valid() )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   290
5
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
   291
		buildUnits = group1.GenerateBuildUnits(r.cache)
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   292
		self.assertEqual( len(buildUnits), 2 )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   293
		self.assertEqual( buildUnits[0].name, "A" )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   294
		self.assertEqual( buildUnits[1].name, "alias" )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   295
		self.assertEqual( buildUnits[1].variants[0].name, "B" )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   296
		self.assertEqual( buildUnits[1].variants[1].name, "C" )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   297
5
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
   298
		buildUnits = group2.GenerateBuildUnits(r.cache)
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   299
		self.assertEqual( len(buildUnits), 3 )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   300
		self.assertEqual( buildUnits[0].name, "C.B" )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   301
		self.assertEqual( buildUnits[1].name, "A" )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   302
		self.assertEqual( buildUnits[2].name, "alias" )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   303
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   304
		self.assertEqual( len(buildUnits[0].variants), 2 )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   305
		self.assertEqual( len(buildUnits[1].variants), 1 )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   306
		self.assertEqual( len(buildUnits[2].variants), 2 )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   307
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   308
	def testGroup2(self):
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   309
		r = raptor.Raptor()
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   310
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   311
		r.cache.Load( generic_path.Join(r.home, "test", "config", "arm.xml") )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   312
5
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
   313
		buildUnits = r.cache.FindNamedGroup("G2").GenerateBuildUnits(r.cache)
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   314
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   315
		self.assertEqual( len(buildUnits), 8 )
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   316
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   317
		self.assertEqual(buildUnits[0].name, "ARMV5_UREL.MOD1")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   318
		self.assertEqual(buildUnits[1].name, "ARMV5_UDEB.MOD1.MOD2")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   319
		self.assertEqual(buildUnits[2].name, "ALIAS_1")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   320
		self.assertEqual(buildUnits[3].name, "ALIAS_2.MOD1.MOD2.MOD1")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   321
		self.assertEqual(buildUnits[4].name, "ARMV5_UREL.MOD2")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   322
		self.assertEqual(buildUnits[5].name, "ARMV5_UDEB.MOD2")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   323
		self.assertEqual(buildUnits[6].name, "MOD1")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   324
		self.assertEqual(buildUnits[7].name, "MOD2")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   325
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   326
	def testRefs(self):
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   327
		i1 = raptor_data.InterfaceRef()
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   328
		self.failIf(i1.Valid())
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   329
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   330
		i2 = raptor_data.InterfaceRef("")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   331
		self.failIf(i2.Valid())
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   332
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   333
		i3 = raptor_data.InterfaceRef("ABC_abc.123")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   334
		self.failUnless(i3.Valid())
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   335
		self.assertEqual(i3.ref, "ABC_abc.123")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   336
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   337
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   338
	def testEvaluator(self):
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   339
		self.SetEnv("EPOCROOT", "/C")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   340
		aRaptor = raptor.Raptor()
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   341
		cache = aRaptor.cache
5
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
   342
		aRaptor.debugOutput = True
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   343
		cache.Load(generic_path.Join(aRaptor.home, "test", "config", "arm.xml"))
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   344
		
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   345
		var = cache.FindNamedVariant("ARMV5_UREL")
5
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
   346
		eval = aRaptor.GetEvaluator( None, var.GenerateBuildUnits(aRaptor.cache)[0])
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   347
		self.RestoreEnv("EPOCROOT")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   348
		
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   349
		# test the Get method
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   350
		varcfg = eval.Get("VARIANT_CFG")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   351
		self.assertEqual(varcfg, "/C/variant/variant.cfg")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   352
		
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   353
		# test the Resolve wrt EPOCROOT
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   354
		varcfg = eval.Resolve("VARIANT_CFG")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   355
		self.assertEqual(varcfg, "/C/variant/variant.cfg")
60
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
   356
		
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
   357
	def testProblematicEnvironment(self):
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
   358
		# ask for environment variable values that will break makefile parsing due to
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
   359
		# backslashes forming line continuation characters
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
   360
		self.SetEnv("ENVVAR_BSLASH_END1", "C:\\test1a\\;C:\\test1b\\")
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
   361
		self.SetEnv("ENVVAR_BSLASH_END2", "C:\\test2a\\;C:\\test2b\\\\")
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
   362
		self.SetEnv("ENVVAR_BSLASH_END3", "C:\\test3a\\;C:\\test3b\\\\\\")
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
   363
		var = raptor_data.Variant("my.var")
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
   364
		var.AddOperation(raptor_data.Env("ENVVAR_BSLASH_END1"))
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
   365
		var.AddOperation(raptor_data.Env("ENVVAR_BSLASH_END2"))
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
   366
		var.AddOperation(raptor_data.Env("ENVVAR_BSLASH_END3"))
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
   367
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
   368
		aRaptor = raptor.Raptor()
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
   369
		eval = aRaptor.GetEvaluator(None, var.GenerateBuildUnits(aRaptor.cache)[0])
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
   370
		self.RestoreEnv("ENVVAR_BSLASH_END1")
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
   371
		self.RestoreEnv("ENVVAR_BSLASH_END2")
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
   372
		self.RestoreEnv("ENVVAR_BSLASH_END3")
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
   373
		
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
   374
		value = eval.Get("ENVVAR_BSLASH_END1")
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
   375
		self.assertEqual(value, "C:\\test1a\\;C:\\test1b\\\\")
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
   376
		
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
   377
		value = eval.Get("ENVVAR_BSLASH_END2")
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
   378
		self.assertEqual(value, "C:\\test2a\\;C:\\test2b\\\\")
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
   379
		
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
   380
		value = eval.Get("ENVVAR_BSLASH_END3")
28ee654acf42 Deal with backslashes at the end of <env/> values
Jon Chatten <>
parents: 5
diff changeset
   381
		self.assertEqual(value, "C:\\test3a\\;C:\\test3b\\\\\\\\")
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   382
	
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   383
	def testMissingEnvironment(self):
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   384
		# ask for an environment variable that is not set
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   385
		# and has no default value.
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   386
		var = raptor_data.Variant("my.var")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   387
		var.AddOperation(raptor_data.Env("RAPTOR_SAYS_NO"))
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   388
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   389
		aRaptor = raptor.Raptor()
5
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
   390
	
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
   391
		try:	
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
   392
			eval = aRaptor.GetEvaluator(None, var.GenerateBuildUnits(aRaptor.cache)[0] )
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
   393
			badval = eval.Get("RAPTOR_SAYS_NO")
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
   394
		except raptor_data.UninitialisedVariableException, e:
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
   395
			return
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
   396
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
   397
		self.assertTrue(False)
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   398
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   399
	def checkForParam(self, params, name, default):
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   400
		for p in params:
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   401
			if p.name == name and (default == None or p.default == default):
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   402
				return True
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   403
		return False
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   404
	
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   405
	def testInterface(self):
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   406
		aRaptor = raptor.Raptor()
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   407
		cache = aRaptor.cache
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   408
		cache.Load(generic_path.Join(aRaptor.home, "test", "config", "interface.xml"))
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   409
		
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   410
		base = cache.FindNamedInterface("Base.XYZ")
5
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
   411
		p = base.GetParams(cache)
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   412
		self.failUnless(self.checkForParam(p, "A", None))
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   413
		self.failUnless(self.checkForParam(p, "B", "baseB"))
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   414
		self.failUnless(self.checkForParam(p, "C", "baseC"))
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   415
		
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   416
		extended = cache.FindNamedInterface("Extended.XYZ")
5
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
   417
		p = extended.GetParams(cache)
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   418
		self.failUnless(self.checkForParam(p, "A", None))
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   419
		self.failUnless(self.checkForParam(p, "B", "baseB"))
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   420
		self.failUnless(self.checkForParam(p, "C", "extC"))
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   421
		self.failUnless(self.checkForParam(p, "D", None))
5
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
   422
		f = extended.GetFLMIncludePath(cache=cache)
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   423
		self.assertEqual(f.File(), "ext.flm")
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   424
		
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   425
		extended = cache.FindNamedInterface("Extended2.XYZ")
5
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
   426
		p = extended.GetParams(cache)
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   427
		self.failUnless(self.checkForParam(p, "A", None))
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   428
		self.failUnless(self.checkForParam(p, "B", "baseB"))
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   429
		self.failUnless(self.checkForParam(p, "C", "extC"))
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   430
		self.failUnless(self.checkForParam(p, "D", None))
5
593a8820b912 Team Wip branch
tnmurphy@4GBL06592.nokia.com
parents: 3
diff changeset
   431
		f = extended.GetFLMIncludePath(cache)
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   432
		self.assertEqual(f.File(), "base.flm")
374
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   433
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   434
	def testGetBuildUnits(self):
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   435
		r = raptor.Raptor()
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   436
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   437
		# <group name="g1">
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   438
		g1 = raptor_data.Group("g1")
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   439
		r.cache.AddGroup(g1)
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   440
		
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   441
		# <groupRef ref="g2" mod="A.B"/>
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   442
		g2a = raptor_data.GroupRef()
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   443
		g2a.SetProperty("ref", "g2")
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   444
		g2a.SetProperty("mod", "A.B")
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   445
		g1.AddChild(g2a)
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   446
		
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   447
		# <groupRef ref="g2" mod="C.D"/>
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   448
		g2b = raptor_data.GroupRef()
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   449
		g2b.SetProperty("ref", "g2")
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   450
		g2b.SetProperty("mod", "C.D")
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   451
		g1.AddChild(g2b)
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   452
		
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   453
		# <group name="g2">
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   454
		g2 = raptor_data.Group("g2")
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   455
		r.cache.AddGroup(g2)
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   456
		
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   457
		# <varRef ref="V" mod="E.F"/>
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   458
		v2 = raptor_data.VariantRef()
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   459
		v2.SetProperty("ref", "V")
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   460
		v2.SetProperty("mod", "E.F")
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   461
		g2.AddChild(v2)
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   462
		
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   463
		# <varRef ref="V" mod="G.H"/>
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   464
		v3 = raptor_data.VariantRef()
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   465
		v3.SetProperty("ref", "V")
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   466
		v3.SetProperty("mod", "G.H")
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   467
		g2.AddChild(v3)
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   468
		
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   469
		# <aliasRef ref="X" mod="I.J"/>
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   470
		v4 = raptor_data.AliasRef()
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   471
		v4.SetProperty("ref", "X")
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   472
		v4.SetProperty("mod", "I.J")
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   473
		g2.AddChild(v4)
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   474
		
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   475
		# <aliasRef ref="X" mod="K.L"/>
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   476
		v5 = raptor_data.AliasRef()
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   477
		v5.SetProperty("ref", "X")
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   478
		v5.SetProperty("mod", "K.L")
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   479
		g2.AddChild(v5)
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   480
		
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   481
		r.cache.AddVariant(raptor_data.Variant("A"))
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   482
		r.cache.AddVariant(raptor_data.Variant("B"))
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   483
		r.cache.AddVariant(raptor_data.Variant("C"))
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   484
		r.cache.AddVariant(raptor_data.Variant("D"))
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   485
		r.cache.AddVariant(raptor_data.Variant("E"))
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   486
		r.cache.AddVariant(raptor_data.Variant("F"))
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   487
		r.cache.AddVariant(raptor_data.Variant("G"))
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   488
		r.cache.AddVariant(raptor_data.Variant("H"))
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   489
		r.cache.AddVariant(raptor_data.Variant("I"))
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   490
		r.cache.AddVariant(raptor_data.Variant("J"))
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   491
		r.cache.AddVariant(raptor_data.Variant("K"))
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   492
		r.cache.AddVariant(raptor_data.Variant("L"))
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   493
		
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   494
		r.cache.AddVariant(raptor_data.Variant("V"))
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   495
		
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   496
		# <alias name="X" meaning="A.B.C.D.E.F.G.H/>
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   497
		alias = raptor_data.Alias("X")
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   498
		alias.SetProperty("meaning", "A.B.C.D.E.F.G.H")
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   499
		r.cache.AddAlias(alias)
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   500
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   501
		r.cache.AddVariant(raptor_data.Variant("Y"))
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   502
		r.cache.AddVariant(raptor_data.Variant("Z"))
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   503
	
374
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   504
		units = raptor_data.GetBuildUnits(["g1.Y", "g1.Z"], r.cache, r)
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   505
		
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   506
		# <group name="g1">
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   507
		#   <groupRef ref="g2" mod="A.B"/>    g2.A.B
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   508
		#   <groupRef ref="g2" mod="C.D"/>    g2.C.D
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   509
		# </group>
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   510
		# <group name="g2">
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   511
		#   <varRef ref="V" mod="E.F"/>       V.E.F
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   512
		#   <varRef ref="V" mod="G.H"/>       V.G.H
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   513
		#   <aliasRef ref="X" mod="I.J"/>     X.I.J
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   514
		#   <aliasRef ref="X" mod="K.L"/>     X.K.L
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   515
		# </group>
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   516
		# <alias name="X" meaning="A.B.C.D.E.F.G.H/>
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   517
		#
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   518
		expected = [ "VEFABY", "VGHABY", "ABCDEFGHIJABY", "ABCDEFGHKLABY",
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   519
				     "VEFCDY", "VGHCDY", "ABCDEFGHIJCDY", "ABCDEFGHKLCDY",
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   520
		             "VEFABZ", "VGHABZ", "ABCDEFGHIJABZ", "ABCDEFGHKLABZ",
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   521
				     "VEFCDZ", "VGHCDZ", "ABCDEFGHIJCDZ", "ABCDEFGHKLCDZ" ]
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   522
		
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   523
		self.failUnlessEqual(len(units), len(expected))
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   524
		
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   525
		for u in units:
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   526
			vars = "".join([v.name for v in u.variants])
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   527
			self.failUnless(vars in expected, vars + " was not expected")
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   528
			expected.remove(vars)
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   529
		
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   530
		self.failUnless(len(expected) == 0, str(expected) + " not found")
96629a6f26e4 fault tolerant XML groups
Richard Taylor <richard.i.taylor@nokia.com>
parents: 60
diff changeset
   531
		
3
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   532
# run all the tests
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   533
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   534
from raptor_tests import SmokeTest
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   535
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   536
def run():
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   537
	t = SmokeTest()
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   538
	t.id = "999"
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   539
	t.name = "raptor_data_unit"
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   540
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   541
	tests = unittest.makeSuite(TestRaptorData)
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   542
	result = unittest.TextTestRunner(verbosity=2).run(tests)
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   543
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   544
	if result.wasSuccessful():
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   545
		t.result = SmokeTest.PASS
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   546
	else:
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   547
		t.result = SmokeTest.FAIL
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   548
e1eecf4d390d Team sf branch.
tnmurphy@4GBL06592.nokia.com
parents:
diff changeset
   549
	return t