aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Citro <craigcitro@google.com>2020-01-02 13:06:51 -0800
committerCopybara-Service <copybara-worker@google.com>2020-01-02 13:07:22 -0800
commitcd6aa6a48139e3d6a99545a412b620fc6b8b0712 (patch)
treeea0bfd4389d814232393d2509a3f1948026acf54
parentaf7dc5d562c6658e357656cf8ea97ac2bec35176 (diff)
downloadabsl-py-cd6aa6a48139e3d6a99545a412b620fc6b8b0712.tar.gz
Allow setting `$TEST_RANDOMIZE_ORDERING_SEED` after absltest import.
The goal is allowing users to customize this env var programmatically *after* all imports but *before* beginning test execution. PiperOrigin-RevId: 287881783 Change-Id: I6c1a18ff541194d1a416025ceb7fc33e1d414cf1
-rw-r--r--absl/testing/absltest.py24
-rw-r--r--absl/testing/tests/absltest_randomization_test.py10
-rw-r--r--absl/testing/tests/absltest_randomization_testcase.py8
3 files changed, 32 insertions, 10 deletions
diff --git a/absl/testing/absltest.py b/absl/testing/absltest.py
index 180f904..6362bef 100644
--- a/absl/testing/absltest.py
+++ b/absl/testing/absltest.py
@@ -207,7 +207,12 @@ def _get_default_randomize_ordering_seed():
ValueError: Raised when the flag or env value is not one of the options
above.
"""
- randomize = FLAGS.test_randomize_ordering_seed
+ if FLAGS['test_randomize_ordering_seed'].present:
+ randomize = FLAGS.test_randomize_ordering_seed
+ elif 'TEST_RANDOMIZE_ORDERING_SEED' in os.environ:
+ randomize = os.environ['TEST_RANDOMIZE_ORDERING_SEED']
+ else:
+ randomize = ''
if not randomize:
return 0
if randomize == 'random':
@@ -236,14 +241,15 @@ flags.DEFINE_string('test_srcdir',
flags.DEFINE_string('test_tmpdir', get_default_test_tmpdir(),
'Directory for temporary testing files',
allow_override_cpp=True)
-flags.DEFINE_string('test_randomize_ordering_seed',
- os.environ.get('TEST_RANDOMIZE_ORDERING_SEED', ''),
- 'If positive, use this as a seed to randomize the '
- 'execution order for test cases. If "random", pick a '
- 'random seed to use. If 0 or not set, do not randomize '
- 'test case execution order. This flag also overrides '
- 'the TEST_RANDOMIZE_ORDERING_SEED environment variable.',
- allow_override_cpp=True)
+flags.DEFINE_string(
+ 'test_randomize_ordering_seed',
+ '',
+ 'If positive, use this as a seed to randomize the '
+ 'execution order for test cases. If "random", pick a '
+ 'random seed to use. If 0 or not set, do not randomize '
+ 'test case execution order. This flag also overrides '
+ 'the TEST_RANDOMIZE_ORDERING_SEED environment variable.',
+ allow_override_cpp=True)
flags.DEFINE_string('xml_output_file', '',
'File to store XML test results')
diff --git a/absl/testing/tests/absltest_randomization_test.py b/absl/testing/tests/absltest_randomization_test.py
index 62ea2c2..16b330c 100644
--- a/absl/testing/tests/absltest_randomization_test.py
+++ b/absl/testing/tests/absltest_randomization_test.py
@@ -37,6 +37,7 @@ class TestOrderRandomizationTest(parameterized.TestCase):
"""
def setUp(self):
+ super(TestOrderRandomizationTest, self).setUp()
self._test_name = 'absl/testing/tests/absltest_randomization_testcase'
def _run_test(self, extra_argv, extra_env):
@@ -107,7 +108,14 @@ class TestOrderRandomizationTest(parameterized.TestCase):
'env': {
'TEST_RANDOMIZE_ORDERING_SEED': '1'
},
- },)
+ },
+ {
+ 'argv': [],
+ 'env': {
+ 'LATE_SET_TEST_RANDOMIZE_ORDERING_SEED': '1'
+ },
+ },
+ )
def test_fixed_seed(self, argv, env):
output, tests, exit_code = self._run_test(argv, env)
self.assertEqual(0, exit_code, msg='command output: ' + output)
diff --git a/absl/testing/tests/absltest_randomization_testcase.py b/absl/testing/tests/absltest_randomization_testcase.py
index 25ce228..18b20ff 100644
--- a/absl/testing/tests/absltest_randomization_testcase.py
+++ b/absl/testing/tests/absltest_randomization_testcase.py
@@ -18,11 +18,19 @@ from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
+import os
import sys
from absl.testing import absltest
+# This stanza exercises setting $TEST_RANDOMIZE_ORDERING_SEED *after* importing
+# the absltest library.
+if os.environ.get('LATE_SET_TEST_RANDOMIZE_ORDERING_SEED', ''):
+ os.environ['TEST_RANDOMIZE_ORDERING_SEED'] = os.environ[
+ 'LATE_SET_TEST_RANDOMIZE_ORDERING_SEED']
+
+
class ClassA(absltest.TestCase):
def test_a(self):