Chromium Code Reviews| 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 |