From 910aa920c21a4e6144192cd372c756f55e8487fd Mon Sep 17 00:00:00 2001 From: Richard Levasseur Date: Mon, 26 Nov 2018 14:13:26 -0800 Subject: 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 --- absl/flags/tests/_flagvalues_test.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'absl/flags/tests') 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. -- cgit v1.2.3