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

Side by Side Diff: tools/binary_size/explain_binary_size_delta_unittest.py

Issue 296003007: Added PRESUBMIT.py for binary_size tools. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@andrew_binary_size
Patch Set: Created 6 years, 7 months 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
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright 2014 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 """Check that explain_binary_size_delta seems to work."""
7
8 import cStringIO
9 import sys
Primiano Tucci (use gerrit) 2014/05/22 09:30:38 you can import unittest and use it, as all the oth
10
11 import explain_binary_size_delta
12
13
14 def TestCompare():
Primiano Tucci (use gerrit) 2014/05/22 09:30:38 This should be class TestCompare(unittest.TestCase
15 # List entries have form: symbol_name, symbol_type, symbol_size, file_path
16 symbol_list1 = (
17 # File with one symbol, left as-is.
18 ( 'unchanged', 't', 1000, '/file_unchanged' ),
19 # File with one symbol, changed.
20 ( 'changed', 't', 1000, '/file_all_changed' ),
21 # File with one symbol, deleted.
22 ( 'removed', 't', 1000, '/file_all_deleted' ),
23 # File with two symbols, one unchanged, one changed, same bucket
24 ( 'unchanged', 't', 1000, '/file_pair_unchanged_changed' ),
25 ( 'changed', 't', 1000, '/file_pair_unchanged_changed' ),
26 # File with two symbols, one unchanged, one deleted, same bucket
27 ( 'unchanged', 't', 1000, '/file_pair_unchanged_removed' ),
28 ( 'removed', 't', 1000, '/file_pair_unchanged_removed' ),
29 # File with two symbols, one unchanged, one added, same bucket
30 ( 'unchanged', 't', 1000, '/file_pair_unchanged_added' ),
31 # File with two symbols, one unchanged, one changed, different bucket
32 ( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_changed' ),
33 ( 'changed', '@', 1000, '/file_pair_unchanged_diffbuck_changed' ),
34 # File with two symbols, one unchanged, one deleted, different bucket
35 ( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_removed' ),
36 ( 'removed', '@', 1000, '/file_pair_unchanged_diffbuck_removed' ),
37 # File with two symbols, one unchanged, one added, different bucket
38 ( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_added' ),
39 # File with four symbols, one added, one removed, one changed, one unchanged
40 ( 'size_changed', 't', 1000, '/file_tetra' ),
41 ( 'removed', 't', 1000, '/file_tetra' ),
42 ( 'unchanged', 't', 1000, '/file_tetra' ),
43 )
44
45 symbol_list2 = (
46 # File with one symbol, left as-is.
47 ( 'unchanged', 't', 1000, '/file_unchanged' ),
48 # File with one symbol, changed.
49 ( 'changed', 't', 2000, '/file_all_changed' ),
50 # File with two symbols, one unchanged, one changed, same bucket
51 ( 'unchanged', 't', 1000, '/file_pair_unchanged_changed' ),
52 ( 'changed', 't', 2000, '/file_pair_unchanged_changed' ),
53 # File with two symbols, one unchanged, one deleted, same bucket
54 ( 'unchanged', 't', 1000, '/file_pair_unchanged_removed' ),
55 # File with two symbols, one unchanged, one added, same bucket
56 ( 'unchanged', 't', 1000, '/file_pair_unchanged_added' ),
57 ( 'added', 't', 1000, '/file_pair_unchanged_added' ),
58 # File with two symbols, one unchanged, one changed, different bucket
59 ( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_changed' ),
60 ( 'changed', '@', 2000, '/file_pair_unchanged_diffbuck_changed' ),
61 # File with two symbols, one unchanged, one deleted, different bucket
62 ( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_removed' ),
63 # File with two symbols, one unchanged, one added, different bucket
64 ( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_added' ),
65 ( 'added', '@', 1000, '/file_pair_unchanged_diffbuck_added' ),
66 # File with four symbols, one added, one removed, one changed, one unchanged
67 ( 'size_changed', 't', 2000, '/file_tetra' ),
68 ( 'unchanged', 't', 1000, '/file_tetra' ),
69 ( 'added', 't', 1000, '/file_tetra' ),
70 # New file with one symbol added
71 ( 'added', 't', 1000, '/file_new' ),
72 )
73
74 # Here we go
75 (added, removed, changed, unchanged) = \
76 explain_binary_size_delta.Compare(symbol_list1, symbol_list2)
77
78 # File with one symbol, left as-is.
79 assert ('/file_unchanged', 't', 'unchanged', 1000, 1000) in unchanged
Primiano Tucci (use gerrit) 2014/05/22 09:30:38 When you switch to python unittests, you could tak
80 # File with one symbol, changed.
81 assert ('/file_all_changed', 't', 'changed', 1000, 2000) in changed
82 # File with one symbol, deleted.
83 assert ('/file_all_deleted', 't', 'removed', 1000, None) in removed
84 # New file with one symbol added
85 assert ('/file_new', 't', 'added', None, 1000) in added
86 # File with two symbols, one unchanged, one changed, same bucket
87 assert ('/file_pair_unchanged_changed',
88 't', 'unchanged', 1000, 1000) in unchanged
89 assert ('/file_pair_unchanged_changed',
90 't', 'changed', 1000, 2000) in changed
91 # File with two symbols, one unchanged, one removed, same bucket
92 assert ('/file_pair_unchanged_removed',
93 't', 'unchanged', 1000, 1000) in unchanged
94 assert ('/file_pair_unchanged_removed',
95 't', 'removed', 1000, None) in removed
96 # File with two symbols, one unchanged, one added, same bucket
97 assert ('/file_pair_unchanged_added',
98 't', 'unchanged', 1000, 1000) in unchanged
99 assert ('/file_pair_unchanged_added',
100 't', 'added', None, 1000) in added
101 # File with two symbols, one unchanged, one changed, different bucket
102 assert ('/file_pair_unchanged_diffbuck_changed',
103 't', 'unchanged', 1000, 1000) in unchanged
104 assert ('/file_pair_unchanged_diffbuck_changed',
105 '@', 'changed', 1000, 2000) in changed
106 # File with two symbols, one unchanged, one removed, different bucket
107 assert ('/file_pair_unchanged_diffbuck_removed',
108 't', 'unchanged', 1000, 1000) in unchanged
109 assert ('/file_pair_unchanged_diffbuck_removed',
110 '@', 'removed', 1000, None) in removed
111 # File with two symbols, one unchanged, one added, different bucket
112 assert ('/file_pair_unchanged_diffbuck_added',
113 't', 'unchanged', 1000, 1000) in unchanged
114 assert ('/file_pair_unchanged_diffbuck_added',
115 '@', 'added', None, 1000) in added
116 # File with four symbols, one added, one removed, one changed, one unchanged
117 assert ('/file_tetra', 't', 'size_changed', 1000, 2000) in changed
118 assert ('/file_tetra', 't', 'unchanged', 1000, 1000) in unchanged
119 assert ('/file_tetra', 't', 'added', None, 1000) in added
120 assert ('/file_tetra', 't', 'removed', 1000, None) in removed
121
122 # Now check final stats.
123 orig_stdout = sys.stdout
124 output_collector = cStringIO.StringIO()
125 sys.stdout = output_collector
126 try:
127 explain_binary_size_delta.CrunchStats(added, removed, changed,
128 unchanged, True, True)
129 finally:
130 sys.stdout = orig_stdout
131 result = output_collector.getvalue()
132
133 expected_output = """\
134 Symbol statistics:
135 4 added, totalling 4000 bytes across 4 sources
136 4 removed, totalling 4000 bytes removed across 4 sources
137 4 changed, resulting in a net change of 4000 bytes \
138 (4000 bytes before, 8000 bytes after) across 4 sources
139 8 unchanged, totalling 8000 bytes
140 Source stats:
141 11 sources encountered.
142 1 completely new.
143 1 removed completely.
144 8 partially changed.
145 1 completely unchanged.
146 Per-source Analysis:
147 Source: /file_all_changed
148 Change: 1000 bytes (gained 1000, lost 0)
149 Changed symbols:
150 changed type=t, delta=1000 bytes (was 1000 bytes, now 2000 bytes)
151 Source: /file_all_deleted
152 Change: -1000 bytes (gained 0, lost 1000)
153 Removed symbols:
154 removed type=t, size=1000 bytes
155 Source: /file_new
156 Change: 1000 bytes (gained 1000, lost 0)
157 New symbols:
158 added type=t, size=1000 bytes
159 Source: /file_pair_unchanged_added
160 Change: 1000 bytes (gained 1000, lost 0)
161 New symbols:
162 added type=t, size=1000 bytes
163 Source: /file_pair_unchanged_changed
164 Change: 1000 bytes (gained 1000, lost 0)
165 Changed symbols:
166 changed type=t, delta=1000 bytes (was 1000 bytes, now 2000 bytes)
167 Source: /file_pair_unchanged_diffbuck_added
168 Change: 1000 bytes (gained 1000, lost 0)
169 New symbols:
170 added type=@, size=1000 bytes
171 Source: /file_pair_unchanged_diffbuck_changed
172 Change: 1000 bytes (gained 1000, lost 0)
173 Changed symbols:
174 changed type=@, delta=1000 bytes (was 1000 bytes, now 2000 bytes)
175 Source: /file_pair_unchanged_diffbuck_removed
176 Change: -1000 bytes (gained 0, lost 1000)
177 Removed symbols:
178 removed type=@, size=1000 bytes
179 Source: /file_pair_unchanged_removed
180 Change: -1000 bytes (gained 0, lost 1000)
181 Removed symbols:
182 removed type=t, size=1000 bytes
183 Source: /file_tetra
184 Change: 1000 bytes (gained 2000, lost 1000)
185 New symbols:
186 added type=t, size=1000 bytes
187 Removed symbols:
188 removed type=t, size=1000 bytes
189 Changed symbols:
190 size_changed type=t, delta=1000 bytes (was 1000 bytes, now 2000 bytes)
191 """
192
193 if result != expected_output:
Primiano Tucci (use gerrit) 2014/05/22 09:30:38 Lines 193-198 can be simply rewritten as: self.ass
194 import difflib
195 differ = difflib.Differ()
196 assert False, "Unexpected output:\n" + \
197 "".join(differ.compare(expected_output.splitlines(1),
198 result.splitlines(1)))
199
200 print "explain_binary_size_delta_unittest: All tests passed"
201 return 0
202
203
204 def main():
Primiano Tucci (use gerrit) 2014/05/22 09:30:38 remove this. Python unittests can already auto-dis
205 """Main entry point."""
206 return TestCompare()
207
208
209 if __name__ == '__main__':
210 sys.exit(main())
Primiano Tucci (use gerrit) 2014/05/22 09:30:38 s/sys.exit(main())/unittest.main()/
OLDNEW
« tools/binary_size/PRESUBMIT.py ('K') | « tools/binary_size/explain_binary_size_delta.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698