OLD | NEW |
---|---|
(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()/
| |
OLD | NEW |