diff options
author | Richard Levasseur <rlevasseur@google.com> | 2018-11-26 14:13:26 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-11-26 14:13:42 -0800 |
commit | 910aa920c21a4e6144192cd372c756f55e8487fd (patch) | |
tree | 59a91ecd605d6455f8482e7fa01fbd1fc3f10bc0 /absl/flags/tests | |
parent | 1193ccf0c81e722723be5376e6ed1d198ea506bb (diff) | |
download | absl-py-910aa920c21a4e6144192cd372c756f55e8487fd.tar.gz |
Make flags_into_string deterministic.
This is (1) to match the c++ behavior and (2) so that build based upon the flag
values are also deterministic.
PiperOrigin-RevId: 222884822
Diffstat (limited to 'absl/flags/tests')
-rw-r--r-- | absl/flags/tests/_flagvalues_test.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/absl/flags/tests/_flagvalues_test.py b/absl/flags/tests/_flagvalues_test.py index 72fb4d4..f7f317a 100644 --- a/absl/flags/tests/_flagvalues_test.py +++ b/absl/flags/tests/_flagvalues_test.py @@ -18,6 +18,7 @@ from __future__ import absolute_import from __future__ import division from __future__ import print_function +import collections import copy import pickle import types @@ -526,6 +527,33 @@ absl.flags.tests.module_foo: self.assertEqual( sorted([flag_name1, flag_name2, flag_name3]), dir(flag_values)) + def test_flags_into_string_deterministic(self): + flag_values = _flagvalues.FlagValues() + _defines.DEFINE_string( + 'fa', 'x', '', flag_values=flag_values, module_name='mb') + _defines.DEFINE_string( + 'fb', 'x', '', flag_values=flag_values, module_name='mb') + _defines.DEFINE_string( + 'fc', 'x', '', flag_values=flag_values, module_name='ma') + _defines.DEFINE_string( + 'fd', 'x', '', flag_values=flag_values, module_name='ma') + + expected = ('--fc=x\n' + '--fd=x\n' + '--fa=x\n' + '--fb=x\n') + + flags_by_module_items = sorted( + flag_values.flags_by_module_dict().items(), reverse=True) + for _, module_flags in flags_by_module_items: + module_flags.sort(reverse=True) + + flag_values.__dict__['__flags_by_module'] = collections.OrderedDict( + flags_by_module_items) + + actual = flag_values.flags_into_string() + self.assertEqual(expected, actual) + class FlagValuesLoggingTest(absltest.TestCase): """Test to make sure logging.* functions won't recurse. |