aboutsummaryrefslogtreecommitdiff
path: root/absl/flags/tests
diff options
context:
space:
mode:
authorRichard Levasseur <rlevasseur@google.com>2018-11-26 14:13:26 -0800
committerCopybara-Service <copybara-piper@google.com>2018-11-26 14:13:42 -0800
commit910aa920c21a4e6144192cd372c756f55e8487fd (patch)
tree59a91ecd605d6455f8482e7fa01fbd1fc3f10bc0 /absl/flags/tests
parent1193ccf0c81e722723be5376e6ed1d198ea506bb (diff)
downloadabsl-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.py28
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.