2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
14 SCRIPT_DIR
= os
.path
.dirname(os
.path
.abspath(__file__
))
15 BUILD_TOOLS_DIR
= os
.path
.dirname(SCRIPT_DIR
)
17 sys
.path
.append(BUILD_TOOLS_DIR
)
22 'TOOLS': ['newlib', 'glibc'],
25 'NAME' : 'hello_world',
27 'SOURCES' : ['hello_world.c'],
30 'DEST' : 'examples/api'
33 class TestValidateFormat(unittest
.TestCase
):
34 def _validate(self
, src
, expected_failure
):
36 parse_dsc
.ValidateFormat(src
, parse_dsc
.DSC_FORMAT
)
37 except parse_dsc
.ValidationError
as e
:
39 self
.assertEqual(str(e
), expected_failure
)
43 def testGoodDesc(self
):
44 testdesc
= copy
.deepcopy(BASIC_DESC
)
45 self
._validate
(testdesc
, None)
47 def testMissingKey(self
):
48 testdesc
= copy
.deepcopy(BASIC_DESC
)
50 self
._validate
(testdesc
, 'Missing required key TOOLS.')
52 testdesc
= copy
.deepcopy(BASIC_DESC
)
53 del testdesc
['TARGETS'][0]['NAME']
54 self
._validate
(testdesc
, 'Missing required key NAME.')
56 def testNonEmpty(self
):
57 testdesc
= copy
.deepcopy(BASIC_DESC
)
58 testdesc
['TOOLS'] = []
59 self
._validate
(testdesc
, 'Expected non-empty value for TOOLS.')
61 testdesc
= copy
.deepcopy(BASIC_DESC
)
62 testdesc
['TARGETS'] = []
63 self
._validate
(testdesc
, 'Expected non-empty value for TARGETS.')
65 testdesc
= copy
.deepcopy(BASIC_DESC
)
66 testdesc
['TARGETS'][0]['NAME'] = ''
67 self
._validate
(testdesc
, 'Expected non-empty value for NAME.')
69 def testBadValue(self
):
70 testdesc
= copy
.deepcopy(BASIC_DESC
)
71 testdesc
['TOOLS'] = ['newlib', 'glibc', 'badtool']
72 self
._validate
(testdesc
, 'Value badtool not expected in TOOLS.')
74 def testExpectStr(self
):
75 testdesc
= copy
.deepcopy(BASIC_DESC
)
76 testdesc
['TOOLS'] = ['newlib', True, 'glibc']
77 self
._validate
(testdesc
, 'Value True not expected in TOOLS.')
79 def testExpectList(self
):
80 testdesc
= copy
.deepcopy(BASIC_DESC
)
81 testdesc
['TOOLS'] = 'newlib'
82 self
._validate
(testdesc
, 'Key TOOLS expects LIST not STR.')
84 # TODO(noelallen): Add test which generates a real make and runs it.
86 if __name__
== '__main__':