Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(73)

Side by Side Diff: native_client_sdk/src/build_tools/tests/test_generate_make.py

Issue 11571032: [NaCl SDK] cleanup python unittests (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 #!/usr/bin/env python
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.
5
6 import copy
7 import datetime
8 import os
9 import posixpath
10 import subprocess
11 import sys
12 import unittest
13
14 SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
15 BUILD_TOOLS_DIR = os.path.dirname(SCRIPT_DIR)
16
17 sys.path.append(BUILD_TOOLS_DIR)
18 import generate_make
19
20 BASIC_DESC = {
21 'TOOLS': ['newlib', 'glibc'],
22 'TARGETS': [
23 {
24 'NAME' : 'hello_world',
25 'TYPE' : 'main',
26 'SOURCES' : ['hello_world.c'],
27 },
28 ],
29 'DEST' : 'examples'
30 }
31
32 class TestFunctions(unittest.TestCase):
33 def testPatsubst(self):
34 val = generate_make.GenPatsubst(32, 'FOO', 'cc', 'CXX')
35 gold = '$(patsubst %.cc,%_32.o,$(FOO_CXX))'
36 self.assertEqual(val, gold)
37
38 def testPatsubst(self):
39 val = generate_make.GenPatsubst(32, 'FOO', 'cc', 'CXX')
40 gold = '$(patsubst %.cc,%_32.o,$(FOO_CXX))'
41 self.assertEqual(val, gold)
42
43 def testSetVar(self):
44 val = generate_make.SetVar('FOO',[])
45 self.assertEqual(val, 'FOO:=\n')
46
47 val = generate_make.SetVar('FOO',['BAR'])
48 self.assertEqual(val, 'FOO:=BAR\n')
49
50 items = ['FOO_' + 'x' * (i % 13) for i in range(50)]
51 for i in range(10):
52 wrapped = generate_make.SetVar('BAR_' + 'x' * i, items)
53 lines = wrapped.split('\n')
54 for line in lines:
55 if len(line) > 79:
56 self.assertEqual(line, 'Less than 80 at ' + str(i))
57
58
59 class TestValidateFormat(unittest.TestCase):
60 def _append_result(self, msg):
61 self.result += msg
62 return self.result
63
64 def _validate(self, src, msg):
65 format = generate_make.DSC_FORMAT
66 self.result = ''
67 result = generate_make.ValidateFormat(src, format,
68 lambda msg: self._append_result(msg))
69 if msg:
70 self.assertEqual(self.result, msg)
71 else:
72 self.assertEqual(result, True)
73
74 def testGoodDesc(self):
75 testdesc = copy.deepcopy(BASIC_DESC)
76 self._validate(testdesc, None)
77
78 def testMissingKey(self):
79 testdesc = copy.deepcopy(BASIC_DESC)
80 del testdesc['TOOLS']
81 self._validate(testdesc, 'Missing required key TOOLS.')
82
83 testdesc = copy.deepcopy(BASIC_DESC)
84 del testdesc['TARGETS'][0]['NAME']
85 self._validate(testdesc, 'Missing required key NAME.')
86
87 def testNonEmpty(self):
88 testdesc = copy.deepcopy(BASIC_DESC)
89 testdesc['TOOLS'] = []
90 self._validate(testdesc, 'Expected non-empty value for TOOLS.')
91
92 testdesc = copy.deepcopy(BASIC_DESC)
93 testdesc['TARGETS'] = []
94 self._validate(testdesc, 'Expected non-empty value for TARGETS.')
95
96 testdesc = copy.deepcopy(BASIC_DESC)
97 testdesc['TARGETS'][0]['NAME'] = ''
98 self._validate(testdesc, 'Expected non-empty value for NAME.')
99
100 def testBadValue(self):
101 testdesc = copy.deepcopy(BASIC_DESC)
102 testdesc['TOOLS'] = ['newlib', 'glibc', 'badtool']
103 self._validate(testdesc, 'Value badtool not expected in TOOLS.')
104
105 def testExpectStr(self):
106 testdesc = copy.deepcopy(BASIC_DESC)
107 testdesc['TOOLS'] = ['newlib', True, 'glibc']
108 self._validate(testdesc, 'Value True not expected in TOOLS.')
109
110 def testExpectList(self):
111 testdesc = copy.deepcopy(BASIC_DESC)
112 testdesc['TOOLS'] = 'newlib'
113 self._validate(testdesc, 'Key TOOLS expects LIST not STR.')
114
115 # TODO(noelallen): Add test which generates a real make and runs it.
116
117 def main():
118 suite = unittest.defaultTestLoader.loadTestsFromModule(sys.modules[__name__])
119 result = unittest.TextTestRunner(verbosity=2).run(suite)
120
121 return int(not result.wasSuccessful())
122
123 if __name__ == '__main__':
124 sys.exit(main())
OLDNEW
« no previous file with comments | « native_client_sdk/src/build_tools/tests/test_all.py ('k') | native_client_sdk/src/build_tools/tests/test_sdktools.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698