| Index: tools/binary_size/explain_binary_size_delta_unittest.py
|
| diff --git a/tools/binary_size/explain_binary_size_delta_unittest.py b/tools/binary_size/explain_binary_size_delta_unittest.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..6a004e25a6cd3d1a66968c8d217055c0a57801c6
|
| --- /dev/null
|
| +++ b/tools/binary_size/explain_binary_size_delta_unittest.py
|
| @@ -0,0 +1,204 @@
|
| +#!/usr/bin/env python
|
| +# Copyright 2014 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +"""Check that explain_binary_size_delta seems to work."""
|
| +
|
| +import cStringIO
|
| +import sys
|
| +import unittest
|
| +
|
| +import explain_binary_size_delta
|
| +
|
| +
|
| +class ExplainBinarySizeDeltaTest(unittest.TestCase):
|
| +
|
| + def testCompare(self):
|
| + # List entries have form: symbol_name, symbol_type, symbol_size, file_path
|
| + symbol_list1 = (
|
| + # File with one symbol, left as-is.
|
| + ( 'unchanged', 't', 1000, '/file_unchanged' ),
|
| + # File with one symbol, changed.
|
| + ( 'changed', 't', 1000, '/file_all_changed' ),
|
| + # File with one symbol, deleted.
|
| + ( 'removed', 't', 1000, '/file_all_deleted' ),
|
| + # File with two symbols, one unchanged, one changed, same bucket
|
| + ( 'unchanged', 't', 1000, '/file_pair_unchanged_changed' ),
|
| + ( 'changed', 't', 1000, '/file_pair_unchanged_changed' ),
|
| + # File with two symbols, one unchanged, one deleted, same bucket
|
| + ( 'unchanged', 't', 1000, '/file_pair_unchanged_removed' ),
|
| + ( 'removed', 't', 1000, '/file_pair_unchanged_removed' ),
|
| + # File with two symbols, one unchanged, one added, same bucket
|
| + ( 'unchanged', 't', 1000, '/file_pair_unchanged_added' ),
|
| + # File with two symbols, one unchanged, one changed, different bucket
|
| + ( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_changed' ),
|
| + ( 'changed', '@', 1000, '/file_pair_unchanged_diffbuck_changed' ),
|
| + # File with two symbols, one unchanged, one deleted, different bucket
|
| + ( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_removed' ),
|
| + ( 'removed', '@', 1000, '/file_pair_unchanged_diffbuck_removed' ),
|
| + # File with two symbols, one unchanged, one added, different bucket
|
| + ( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_added' ),
|
| + # File with four symbols, one added, one removed,
|
| + # one changed, one unchanged
|
| + ( 'size_changed', 't', 1000, '/file_tetra' ),
|
| + ( 'removed', 't', 1000, '/file_tetra' ),
|
| + ( 'unchanged', 't', 1000, '/file_tetra' ),
|
| + )
|
| +
|
| + symbol_list2 = (
|
| + # File with one symbol, left as-is.
|
| + ( 'unchanged', 't', 1000, '/file_unchanged' ),
|
| + # File with one symbol, changed.
|
| + ( 'changed', 't', 2000, '/file_all_changed' ),
|
| + # File with two symbols, one unchanged, one changed, same bucket
|
| + ( 'unchanged', 't', 1000, '/file_pair_unchanged_changed' ),
|
| + ( 'changed', 't', 2000, '/file_pair_unchanged_changed' ),
|
| + # File with two symbols, one unchanged, one deleted, same bucket
|
| + ( 'unchanged', 't', 1000, '/file_pair_unchanged_removed' ),
|
| + # File with two symbols, one unchanged, one added, same bucket
|
| + ( 'unchanged', 't', 1000, '/file_pair_unchanged_added' ),
|
| + ( 'added', 't', 1000, '/file_pair_unchanged_added' ),
|
| + # File with two symbols, one unchanged, one changed, different bucket
|
| + ( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_changed' ),
|
| + ( 'changed', '@', 2000, '/file_pair_unchanged_diffbuck_changed' ),
|
| + # File with two symbols, one unchanged, one deleted, different bucket
|
| + ( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_removed' ),
|
| + # File with two symbols, one unchanged, one added, different bucket
|
| + ( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_added' ),
|
| + ( 'added', '@', 1000, '/file_pair_unchanged_diffbuck_added' ),
|
| + # File with four symbols, one added, one removed,
|
| + # one changed, one unchanged
|
| + ( 'size_changed', 't', 2000, '/file_tetra' ),
|
| + ( 'unchanged', 't', 1000, '/file_tetra' ),
|
| + ( 'added', 't', 1000, '/file_tetra' ),
|
| + # New file with one symbol added
|
| + ( 'added', 't', 1000, '/file_new' ),
|
| + )
|
| +
|
| + # Here we go
|
| + (added, removed, changed, unchanged) = \
|
| + explain_binary_size_delta.Compare(symbol_list1, symbol_list2)
|
| +
|
| + # File with one symbol, left as-is.
|
| + assert ('/file_unchanged', 't', 'unchanged', 1000, 1000) in unchanged
|
| + # File with one symbol, changed.
|
| + assert ('/file_all_changed', 't', 'changed', 1000, 2000) in changed
|
| + # File with one symbol, deleted.
|
| + assert ('/file_all_deleted', 't', 'removed', 1000, None) in removed
|
| + # New file with one symbol added
|
| + assert ('/file_new', 't', 'added', None, 1000) in added
|
| + # File with two symbols, one unchanged, one changed, same bucket
|
| + assert ('/file_pair_unchanged_changed',
|
| + 't', 'unchanged', 1000, 1000) in unchanged
|
| + assert ('/file_pair_unchanged_changed',
|
| + 't', 'changed', 1000, 2000) in changed
|
| + # File with two symbols, one unchanged, one removed, same bucket
|
| + assert ('/file_pair_unchanged_removed',
|
| + 't', 'unchanged', 1000, 1000) in unchanged
|
| + assert ('/file_pair_unchanged_removed',
|
| + 't', 'removed', 1000, None) in removed
|
| + # File with two symbols, one unchanged, one added, same bucket
|
| + assert ('/file_pair_unchanged_added',
|
| + 't', 'unchanged', 1000, 1000) in unchanged
|
| + assert ('/file_pair_unchanged_added',
|
| + 't', 'added', None, 1000) in added
|
| + # File with two symbols, one unchanged, one changed, different bucket
|
| + assert ('/file_pair_unchanged_diffbuck_changed',
|
| + 't', 'unchanged', 1000, 1000) in unchanged
|
| + assert ('/file_pair_unchanged_diffbuck_changed',
|
| + '@', 'changed', 1000, 2000) in changed
|
| + # File with two symbols, one unchanged, one removed, different bucket
|
| + assert ('/file_pair_unchanged_diffbuck_removed',
|
| + 't', 'unchanged', 1000, 1000) in unchanged
|
| + assert ('/file_pair_unchanged_diffbuck_removed',
|
| + '@', 'removed', 1000, None) in removed
|
| + # File with two symbols, one unchanged, one added, different bucket
|
| + assert ('/file_pair_unchanged_diffbuck_added',
|
| + 't', 'unchanged', 1000, 1000) in unchanged
|
| + assert ('/file_pair_unchanged_diffbuck_added',
|
| + '@', 'added', None, 1000) in added
|
| + # File with four symbols, one added, one removed, one changed, one unchanged
|
| + assert ('/file_tetra', 't', 'size_changed', 1000, 2000) in changed
|
| + assert ('/file_tetra', 't', 'unchanged', 1000, 1000) in unchanged
|
| + assert ('/file_tetra', 't', 'added', None, 1000) in added
|
| + assert ('/file_tetra', 't', 'removed', 1000, None) in removed
|
| +
|
| + # Now check final stats.
|
| + orig_stdout = sys.stdout
|
| + output_collector = cStringIO.StringIO()
|
| + sys.stdout = output_collector
|
| + try:
|
| + explain_binary_size_delta.CrunchStats(added, removed, changed,
|
| + unchanged, True, True)
|
| + finally:
|
| + sys.stdout = orig_stdout
|
| + result = output_collector.getvalue()
|
| +
|
| + expected_output = """\
|
| +Symbol statistics:
|
| + 4 added, totalling 4000 bytes across 4 sources
|
| + 4 removed, totalling 4000 bytes removed across 4 sources
|
| + 4 changed, resulting in a net change of 4000 bytes \
|
| +(4000 bytes before, 8000 bytes after) across 4 sources
|
| + 8 unchanged, totalling 8000 bytes
|
| +Source stats:
|
| + 11 sources encountered.
|
| + 1 completely new.
|
| + 1 removed completely.
|
| + 8 partially changed.
|
| + 1 completely unchanged.
|
| +Per-source Analysis:
|
| + Source: /file_all_changed
|
| + Change: 1000 bytes (gained 1000, lost 0)
|
| + Changed symbols:
|
| + changed type=t, delta=1000 bytes (was 1000 bytes, now 2000 bytes)
|
| + Source: /file_all_deleted
|
| + Change: -1000 bytes (gained 0, lost 1000)
|
| + Removed symbols:
|
| + removed type=t, size=1000 bytes
|
| + Source: /file_new
|
| + Change: 1000 bytes (gained 1000, lost 0)
|
| + New symbols:
|
| + added type=t, size=1000 bytes
|
| + Source: /file_pair_unchanged_added
|
| + Change: 1000 bytes (gained 1000, lost 0)
|
| + New symbols:
|
| + added type=t, size=1000 bytes
|
| + Source: /file_pair_unchanged_changed
|
| + Change: 1000 bytes (gained 1000, lost 0)
|
| + Changed symbols:
|
| + changed type=t, delta=1000 bytes (was 1000 bytes, now 2000 bytes)
|
| + Source: /file_pair_unchanged_diffbuck_added
|
| + Change: 1000 bytes (gained 1000, lost 0)
|
| + New symbols:
|
| + added type=@, size=1000 bytes
|
| + Source: /file_pair_unchanged_diffbuck_changed
|
| + Change: 1000 bytes (gained 1000, lost 0)
|
| + Changed symbols:
|
| + changed type=@, delta=1000 bytes (was 1000 bytes, now 2000 bytes)
|
| + Source: /file_pair_unchanged_diffbuck_removed
|
| + Change: -1000 bytes (gained 0, lost 1000)
|
| + Removed symbols:
|
| + removed type=@, size=1000 bytes
|
| + Source: /file_pair_unchanged_removed
|
| + Change: -1000 bytes (gained 0, lost 1000)
|
| + Removed symbols:
|
| + removed type=t, size=1000 bytes
|
| + Source: /file_tetra
|
| + Change: 1000 bytes (gained 2000, lost 1000)
|
| + New symbols:
|
| + added type=t, size=1000 bytes
|
| + Removed symbols:
|
| + removed type=t, size=1000 bytes
|
| + Changed symbols:
|
| + size_changed type=t, delta=1000 bytes (was 1000 bytes, now 2000 bytes)
|
| +"""
|
| +
|
| + self.maxDiff = None
|
| + self.assertMultiLineEqual(expected_output, result)
|
| + print "explain_binary_size_delta_unittest: All tests passed"
|
| +
|
| +
|
| +if __name__ == '__main__':
|
| + unittest.main()
|
|
|