]> git.proxmox.com Git - mirror_edk2.git/blob - BaseTools/Source/Python/UPT/UnitTest/InfBinarySectionTest.py
BaseTools: use set instead of list for a variable to be used with in
[mirror_edk2.git] / BaseTools / Source / Python / UPT / UnitTest / InfBinarySectionTest.py
1 ## @file
2 # This file contain unit test for Test [Binary] section part of InfParser
3 #
4 # Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
5 #
6 # This program and the accompanying materials are licensed and made available
7 # under the terms and conditions of the BSD License which accompanies this
8 # distribution. The full text of the license may be found at
9 # http://opensource.org/licenses/bsd-license.php
10 #
11 # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13
14 import os
15 #import Object.Parser.InfObject as InfObject
16 from Object.Parser.InfCommonObject import CurrentLine
17 from Object.Parser.InfCommonObject import InfLineCommentObject
18 from Object.Parser.InfBinaryObject import InfBinariesObject
19 import Logger.Log as Logger
20 import Library.GlobalData as Global
21 ##
22 # Test Common binary item
23 #
24
25 #-------------start of common binary item test input--------------------------#
26
27 #
28 # Only has 1 element, binary item Type
29 #
30 SectionStringsCommonItem1 = \
31 """
32 GUID
33 """
34 #
35 # Have 2 elements, binary item Type and FileName
36 #
37 SectionStringsCommonItem2 = \
38 """
39 GUID | Test/Test.guid
40 """
41
42 #
43 # Have 3 elements, Type | FileName | Target | Family | TagName | FeatureFlagExp
44 #
45 SectionStringsCommonItem3 = \
46 """
47 GUID | Test/Test.guid | DEBUG
48 """
49
50 #
51 # Have 3 elements, Type | FileName | Target
52 # Target with MACRO defined in [Define] section
53 #
54 SectionStringsCommonItem4 = \
55 """
56 GUID | Test/Test.guid | $(TARGET)
57 """
58
59 #
60 # Have 3 elements, Type | FileName | Target
61 # FileName with MACRO defined in [Binary] section
62 #
63 SectionStringsCommonItem5 = \
64 """
65 DEFINE BINARY_FILE_PATH = Test
66 GUID | $(BINARY_FILE_PATH)/Test.guid | $(TARGET)
67 """
68
69 #
70 # Have 4 elements, Type | FileName | Target | Family
71 #
72 SectionStringsCommonItem6 = \
73 """
74 GUID | Test/Test.guid | DEBUG | *
75 """
76
77 #
78 # Have 4 elements, Type | FileName | Target | Family
79 #
80 SectionStringsCommonItem7 = \
81 """
82 GUID | Test/Test.guid | DEBUG | MSFT
83 """
84
85 #
86 # Have 5 elements, Type | FileName | Target | Family | TagName
87 #
88 SectionStringsCommonItem8 = \
89 """
90 GUID | Test/Test.guid | DEBUG | MSFT | TEST
91 """
92
93 #
94 # Have 6 elements, Type | FileName | Target | Family | TagName | FFE
95 #
96 SectionStringsCommonItem9 = \
97 """
98 GUID | Test/Test.guid | DEBUG | MSFT | TEST | TRUE
99 """
100
101 #
102 # Have 7 elements, Type | FileName | Target | Family | TagName | FFE | Overflow
103 # Test wrong format
104 #
105 SectionStringsCommonItem10 = \
106 """
107 GUID | Test/Test.guid | DEBUG | MSFT | TEST | TRUE | OVERFLOW
108 """
109
110 #-------------end of common binary item test input----------------------------#
111
112
113
114 #-------------start of VER type binary item test input------------------------#
115
116 #
117 # Has 1 element, error format
118 #
119 SectionStringsVerItem1 = \
120 """
121 VER
122 """
123 #
124 # Have 5 elements, error format(Maximum elements amount is 4)
125 #
126 SectionStringsVerItem2 = \
127 """
128 VER | Test/Test.ver | * | TRUE | OverFlow
129 """
130
131 #
132 # Have 2 elements, Type | FileName
133 #
134 SectionStringsVerItem3 = \
135 """
136 VER | Test/Test.ver
137 """
138
139 #
140 # Have 3 elements, Type | FileName | Target
141 #
142 SectionStringsVerItem4 = \
143 """
144 VER | Test/Test.ver | DEBUG
145 """
146
147 #
148 # Have 4 elements, Type | FileName | Target | FeatureFlagExp
149 #
150 SectionStringsVerItem5 = \
151 """
152 VER | Test/Test.ver | DEBUG | TRUE
153 """
154
155 #
156 # Exist 2 VER items, both opened.
157 #
158 SectionStringsVerItem6 = \
159 """
160 VER | Test/Test.ver | * | TRUE
161 VER | Test/Test2.ver | * | TRUE
162 """
163
164
165 #
166 # Exist 2 VER items, only 1 opened.
167 #
168 SectionStringsVerItem7 = \
169 """
170 VER | Test/Test.ver | * | TRUE
171 VER | Test/Test2.ver | * | FALSE
172 """
173
174 #-------------end of VER type binary item test input--------------------------#
175
176
177 #-------------start of UI type binary item test input-------------------------#
178
179 #
180 # Test only one UI section can exist
181 #
182 SectionStringsUiItem1 = \
183 """
184 UI | Test/Test.ui | * | TRUE
185 UI | Test/Test2.ui | * | TRUE
186 """
187
188 SectionStringsUiItem2 = \
189 """
190 UI | Test/Test.ui | * | TRUE
191 SEC_UI | Test/Test2.ui | * | TRUE
192 """
193
194 SectionStringsUiItem3 = \
195 """
196 UI | Test/Test.ui | * | TRUE
197 UI | Test/Test2.ui | * | FALSE
198 """
199
200 #
201 # Has 1 element, error format
202 #
203 SectionStringsUiItem4 = \
204 """
205 UI
206 """
207 #
208 # Have 5 elements, error format(Maximum elements amount is 4)
209 #
210 SectionStringsUiItem5 = \
211 """
212 UI | Test/Test.ui | * | TRUE | OverFlow
213 """
214
215 #
216 # Have 2 elements, Type | FileName
217 #
218 SectionStringsUiItem6 = \
219 """
220 UI | Test/Test.ui
221 """
222
223 #
224 # Have 3 elements, Type | FileName | Target
225 #
226 SectionStringsUiItem7 = \
227 """
228 UI | Test/Test.ui | DEBUG
229 """
230
231 #
232 # Have 4 elements, Type | FileName | Target | FeatureFlagExp
233 #
234 SectionStringsUiItem8 = \
235 """
236 UI | Test/Test.ui | DEBUG | TRUE
237 """
238 #---------------end of UI type binary item test input-------------------------#
239
240
241 gFileName = "BinarySectionTest.inf"
242
243 ##
244 # Construct SectionString for call section parser usage.
245 #
246 def StringToSectionString(String):
247 Lines = String.split('\n')
248 LineNo = 0
249 SectionString = []
250 for Line in Lines:
251 if Line.strip() == '':
252 continue
253 SectionString.append((Line, LineNo, ''))
254 LineNo = LineNo + 1
255
256 return SectionString
257
258 def PrepareTest(String):
259 SectionString = StringToSectionString(String)
260 ItemList = []
261 for Item in SectionString:
262 ValueList = Item[0].split('|')
263 for count in range(len(ValueList)):
264 ValueList[count] = ValueList[count].strip()
265 if len(ValueList) >= 2:
266 #
267 # Create a temp file for test.
268 #
269 FileName = os.path.normpath(os.path.realpath(ValueList[1].strip()))
270 try:
271 TempFile = open (FileName, "w")
272 TempFile.close()
273 except:
274 print "File Create Error"
275 CurrentLine = CurrentLine()
276 CurrentLine.SetFileName("Test")
277 CurrentLine.SetLineString(Item[0])
278 CurrentLine.SetLineNo(Item[1])
279 InfLineCommentObject = InfLineCommentObject()
280
281 ItemList.append((ValueList, InfLineCommentObject, CurrentLine))
282
283 return ItemList
284
285 if __name__ == '__main__':
286 Logger.Initialize()
287
288 InfBinariesInstance = InfBinariesObject()
289 ArchList = ['COMMON']
290 Global.gINF_MODULE_DIR = os.getcwd()
291
292 AllPassedFlag = True
293
294 #
295 # For All Ui test
296 #
297 UiStringList = [
298 SectionStringsUiItem1,
299 SectionStringsUiItem2,
300 SectionStringsUiItem3,
301 SectionStringsUiItem4,
302 SectionStringsUiItem5,
303 SectionStringsUiItem6,
304 SectionStringsUiItem7,
305 SectionStringsUiItem8
306 ]
307
308 for Item in UiStringList:
309 Ui = PrepareTest(Item)
310 if Item == SectionStringsUiItem4 or Item == SectionStringsUiItem5:
311 try:
312 InfBinariesInstance.SetBinary(Ui = Ui, ArchList = ArchList)
313 except Logger.FatalError:
314 pass
315 else:
316 try:
317 InfBinariesInstance.SetBinary(Ui = Ui, ArchList = ArchList)
318 except:
319 AllPassedFlag = False
320
321 #
322 # For All Ver Test
323 #
324 VerStringList = [
325 SectionStringsVerItem1,
326 SectionStringsVerItem2,
327 SectionStringsVerItem3,
328 SectionStringsVerItem4,
329 SectionStringsVerItem5,
330 SectionStringsVerItem6,
331 SectionStringsVerItem7
332 ]
333 for Item in VerStringList:
334 Ver = PrepareTest(Item)
335 if Item == SectionStringsVerItem1 or \
336 Item == SectionStringsVerItem2:
337
338 try:
339 InfBinariesInstance.SetBinary(Ver = Ver, ArchList = ArchList)
340 except:
341 pass
342
343 else:
344 try:
345 InfBinariesInstance.SetBinary(Ver = Ver, ArchList = ArchList)
346 except:
347 AllPassedFlag = False
348
349 #
350 # For All Common Test
351 #
352 CommonStringList = [
353 SectionStringsCommonItem1,
354 SectionStringsCommonItem2,
355 SectionStringsCommonItem3,
356 SectionStringsCommonItem4,
357 SectionStringsCommonItem5,
358 SectionStringsCommonItem6,
359 SectionStringsCommonItem7,
360 SectionStringsCommonItem8,
361 SectionStringsCommonItem9,
362 SectionStringsCommonItem10
363 ]
364
365 for Item in CommonStringList:
366 CommonBin = PrepareTest(Item)
367 if Item == SectionStringsCommonItem10 or \
368 Item == SectionStringsCommonItem1:
369
370 try:
371 InfBinariesInstance.SetBinary(CommonBinary = CommonBin, ArchList = ArchList)
372 except:
373 pass
374
375 else:
376 try:
377 InfBinariesInstance.SetBinary(Ver = Ver, ArchList = ArchList)
378 except:
379 print "Test Failed!"
380 AllPassedFlag = False
381
382 if AllPassedFlag :
383 print 'All tests passed...'
384 else:
385 print 'Some unit test failed!'
386