diff options
-rw-r--r-- | absl/BUILD | 17 | ||||
-rw-r--r-- | absl/CHANGELOG.md | 5 | ||||
-rw-r--r-- | absl/_build_defs.bzl | 92 | ||||
-rw-r--r-- | absl/flags/BUILD | 62 | ||||
-rw-r--r-- | absl/flags/argparse_flags.py | 27 | ||||
-rw-r--r-- | absl/flags/tests/argparse_flags_test.py | 10 | ||||
-rw-r--r-- | absl/logging/BUILD | 32 | ||||
-rw-r--r-- | absl/testing/BUILD | 83 | ||||
-rw-r--r-- | absl/testing/_bazel_selected_py3.py | 2 | ||||
-rw-r--r-- | absl/testing/_bazelize_command.py | 8 | ||||
-rw-r--r-- | absl/testing/tests/parameterized_test.py | 28 | ||||
-rw-r--r-- | absl/third_party/unittest3_backport/BUILD | 7 |
12 files changed, 159 insertions, 214 deletions
@@ -1,5 +1,3 @@ -load(":_build_defs.bzl", "py2and3_test", "py2py3_test_binary") - licenses(["notice"]) exports_files(["LICENSE"]) @@ -75,23 +73,25 @@ py_library( ], ) -py2py3_test_binary( +py_binary( name = "tests/app_test_helper_pure_python", testonly = 1, srcs = ["tests/app_test_helper.py"], main = "tests/app_test_helper.py", - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":app", "//absl/flags", ], ) -py2and3_test( +py_test( name = "tests/app_test", srcs = ["tests/app_test.py"], data = [":tests/app_test_helper_pure_python"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":_enum_module", ":app", @@ -105,10 +105,11 @@ py2and3_test( ], ) -py2and3_test( +py_test( name = "tests/command_name_test", srcs = ["tests/command_name_test.py"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":command_name", "//absl/testing:absltest", diff --git a/absl/CHANGELOG.md b/absl/CHANGELOG.md index aff590d..253628f 100644 --- a/absl/CHANGELOG.md +++ b/absl/CHANGELOG.md @@ -6,7 +6,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com). ## Unreleased -Nothing notable unreleased. +### Fixed + +* #171: Creating `argparse_flags.ArgumentParser` with `argument_default=` no + longer raises an exception when other `absl.flags` flags are defined. ## 0.13.0 (2021-06-14) diff --git a/absl/_build_defs.bzl b/absl/_build_defs.bzl deleted file mode 100644 index 2773609..0000000 --- a/absl/_build_defs.bzl +++ /dev/null @@ -1,92 +0,0 @@ -# Copyright 2019 The Abseil Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Private helpers for absl build rules.""" - -def py2py3_test_binary(name, **kwargs): - """Create the same binary with different python versions for testing. - - Given `name`, `${name}_py2` and `${name}_py3` targets are created with - `python_version` set to `PY2` and `PY3`, respectively. An alias named - `name` is also created that uses a `select()` between the two underlying - targets; this makes it easier to reference the binaries in consuming rules. - - Args: - name: base name of the binaries. "_py2" and "_py3" suffixed targets - will be created from it. - **kwargs: additional args to pass onto py_binary. - """ - kwargs["testonly"] = 1 - kwargs["srcs_version"] = "PY2AND3" - if not kwargs.get("main"): - if len(kwargs.get("srcs", [])) != 1: - fail("py2py3_test_binary requires main or len(srcs)==1") - kwargs["main"] = kwargs["srcs"][0] - kwargs.setdefault("tags", []).append("py3-compatible") - - native.alias(name = name, actual = select({ - "//absl:py3_mode": name + "_py3", - "//absl:py2_mode": name + "_py2", - })) - - native.py_binary( - name = name + "_py2", - python_version = "PY2", - **kwargs - ) - native.py_binary( - name = name + "_py3", - python_version = "PY3", - **kwargs - ) - -def py2and3_test(name, **kwargs): - """A version of py_test that tests both Python 2 and 3. - - Args: - name: name of the test suite. Individual ".python2" and ".python3" - suffixed py_tests will be created from it. - **kwargs: additional args to pass onto py_test. - """ - python2 = name + ".python2" - python3 = name + ".python3" - main = kwargs.pop("main", name + ".py") - base_tags = kwargs.pop("tags", []) - - native.py_test( - name = python2, - python_version = "PY2", - main = main, - tags = base_tags + ["python2"], - **kwargs - ) - - native.py_test( - name = python3, - python_version = "PY3", - main = main, - tags = base_tags + ["python3"], - **kwargs - ) - - suite_kwargs = {} - if kwargs.get("visibility"): - suite_kwargs["visibility"] = kwargs.get("visibility") - - native.test_suite( - name = name, - tags = base_tags, - tests = [python2, python3], - **suite_kwargs - ) diff --git a/absl/flags/BUILD b/absl/flags/BUILD index 340ae93..1de1d6f 100644 --- a/absl/flags/BUILD +++ b/absl/flags/BUILD @@ -1,5 +1,3 @@ -load("//absl:_build_defs.bzl", "py2and3_test", "py2py3_test_binary") - licenses(["notice"]) # Apache 2.0 exports_files(["LICENSE"]) @@ -119,10 +117,11 @@ py_library( ], ) -py2and3_test( +py_test( name = "tests/_argument_parser_test", srcs = ["tests/_argument_parser_test.py"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":_argument_parser", "//absl:_enum_module", @@ -132,10 +131,11 @@ py2and3_test( ], ) -py2and3_test( +py_test( name = "tests/_flag_test", srcs = ["tests/_flag_test.py"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":_argument_parser", ":_exceptions", @@ -146,11 +146,12 @@ py2and3_test( ], ) -py2and3_test( +py_test( name = "tests/_flagvalues_test", size = "small", srcs = ["tests/_flagvalues_test.py"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":_defines", ":_exceptions", @@ -165,11 +166,12 @@ py2and3_test( ], ) -py2and3_test( +py_test( name = "tests/_helpers_test", size = "small", srcs = ["tests/_helpers_test.py"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":_helpers", ":tests/module_bar", @@ -178,11 +180,12 @@ py2and3_test( ], ) -py2and3_test( +py_test( name = "tests/_validators_test", size = "small", srcs = ["tests/_validators_test.py"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":_defines", ":_exceptions", @@ -192,12 +195,13 @@ py2and3_test( ], ) -py2and3_test( +py_test( name = "tests/argparse_flags_test", size = "small", srcs = ["tests/argparse_flags_test.py"], data = [":tests/argparse_flags_test_helper"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":argparse_flags", ":flags", @@ -210,11 +214,12 @@ py2and3_test( ], ) -py2py3_test_binary( +py_binary( name = "tests/argparse_flags_test_helper", testonly = 1, srcs = ["tests/argparse_flags_test_helper.py"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":argparse_flags", ":flags", @@ -222,11 +227,12 @@ py2py3_test_binary( ], ) -py2and3_test( +py_test( name = "tests/flags_formatting_test", size = "small", srcs = ["tests/flags_formatting_test.py"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":_helpers", ":flags", @@ -234,11 +240,12 @@ py2and3_test( ], ) -py2and3_test( +py_test( name = "tests/flags_helpxml_test", size = "small", srcs = ["tests/flags_helpxml_test.py"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":_helpers", ":flags", @@ -249,11 +256,12 @@ py2and3_test( ], ) -py2and3_test( +py_test( name = "tests/flags_numeric_bounds_test", size = "small", srcs = ["tests/flags_numeric_bounds_test.py"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":_validators", ":flags", @@ -262,11 +270,12 @@ py2and3_test( ], ) -py2and3_test( +py_test( name = "tests/flags_test", size = "small", srcs = ["tests/flags_test.py"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":_exceptions", ":_helpers", @@ -280,11 +289,12 @@ py2and3_test( ], ) -py2and3_test( +py_test( name = "tests/flags_unicode_literals_test", size = "small", srcs = ["tests/flags_unicode_literals_test.py"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":flags", "//absl/testing:absltest", diff --git a/absl/flags/argparse_flags.py b/absl/flags/argparse_flags.py index ea4cdfa..4f78f50 100644 --- a/absl/flags/argparse_flags.py +++ b/absl/flags/argparse_flags.py @@ -148,7 +148,8 @@ class ArgumentParser(argparse.ArgumentParser): default=argparse.SUPPRESS, help='show full help message and exit') if self._inherited_absl_flags: - self.add_argument('--undefok', help=argparse.SUPPRESS) + self.add_argument( + '--undefok', default=argparse.SUPPRESS, help=argparse.SUPPRESS) self._define_absl_flags(self._inherited_absl_flags) def parse_known_args(self, args=None, namespace=None): @@ -237,7 +238,14 @@ class ArgumentParser(argparse.ArgumentParser): class _FlagAction(argparse.Action): """Action class for Abseil non-boolean flags.""" - def __init__(self, option_strings, dest, help, metavar, flag_instance): # pylint: disable=redefined-builtin + def __init__( + self, + option_strings, + dest, + help, # pylint: disable=redefined-builtin + metavar, + flag_instance, + default=argparse.SUPPRESS): """Initializes _FlagAction. Args: @@ -246,6 +254,8 @@ class _FlagAction(argparse.Action): help: See argparse.Action. metavar: See argparse.Action. flag_instance: absl.flags.Flag, the absl flag instance. + default: Ignored. The flag always uses dest=argparse.SUPPRESS so it + doesn't affect the parsing result. """ del dest self._flag_instance = flag_instance @@ -264,7 +274,14 @@ class _FlagAction(argparse.Action): class _BooleanFlagAction(argparse.Action): """Action class for Abseil boolean flags.""" - def __init__(self, option_strings, dest, help, metavar, flag_instance): # pylint: disable=redefined-builtin + def __init__( + self, + option_strings, + dest, + help, # pylint: disable=redefined-builtin + metavar, + flag_instance, + default=argparse.SUPPRESS): """Initializes _BooleanFlagAction. Args: @@ -273,8 +290,10 @@ class _BooleanFlagAction(argparse.Action): help: See argparse.Action. metavar: See argparse.Action. flag_instance: absl.flags.Flag, the absl flag instance. + default: Ignored. The flag always uses dest=argparse.SUPPRESS so it + doesn't affect the parsing result. """ - del dest + del dest, default self._flag_instance = flag_instance flag_names = [self._flag_instance.name] if self._flag_instance.short_name: diff --git a/absl/flags/tests/argparse_flags_test.py b/absl/flags/tests/argparse_flags_test.py index ddd62a9..a2bcbe5 100644 --- a/absl/flags/tests/argparse_flags_test.py +++ b/absl/flags/tests/argparse_flags_test.py @@ -36,6 +36,7 @@ import six class ArgparseFlagsTest(parameterized.TestCase): def setUp(self): + super().setUp() self._absl_flags = flags.FlagValues() flags.DEFINE_bool( 'absl_bool', None, 'help for --absl_bool.', @@ -393,6 +394,15 @@ class ArgparseFlagsTest(parameterized.TestCase): with self.assertRaises(SystemExit): parser.parse_args(cmd_args) + def test_argument_default(self): + # Regression test for https://github.com/abseil/abseil-py/issues/171. + parser = argparse_flags.ArgumentParser( + inherited_absl_flags=self._absl_flags, argument_default=23) + parser.add_argument( + '--magic_number', type=int, help='The magic number to use.') + args = parser.parse_args([]) + self.assertEqual(args.magic_number, 23) + class ArgparseWithAppRunTest(parameterized.TestCase): diff --git a/absl/logging/BUILD b/absl/logging/BUILD index 90a90ed..9526040 100644 --- a/absl/logging/BUILD +++ b/absl/logging/BUILD @@ -1,5 +1,3 @@ -load("//absl:_build_defs.bzl", "py2and3_test", "py2py3_test_binary") - licenses(["notice"]) # Apache 2.0 exports_files(["LICENSE"]) @@ -24,11 +22,12 @@ py_library( visibility = ["//visibility:public"], ) -py2and3_test( +py_test( name = "tests/converter_test", size = "small", srcs = ["tests/converter_test.py"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":converter", ":logging", @@ -36,11 +35,12 @@ py2and3_test( ], ) -py2and3_test( +py_test( name = "tests/logging_test", size = "small", srcs = ["tests/logging_test.py"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":logging", "//absl/flags", @@ -52,11 +52,12 @@ py2and3_test( ], ) -py2and3_test( +py_test( name = "tests/log_before_import_test", srcs = ["tests/log_before_import_test.py"], main = "tests/log_before_import_test.py", - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":logging", "//absl/testing:absltest", @@ -64,10 +65,11 @@ py2and3_test( ], ) -py2and3_test( +py_test( name = "tests/verbosity_flag_test", srcs = ["tests/verbosity_flag_test.py"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":logging", "//absl/flags", @@ -75,11 +77,12 @@ py2and3_test( ], ) -py2py3_test_binary( +py_binary( name = "tests/logging_functional_test_helper", testonly = 1, srcs = ["tests/logging_functional_test_helper.py"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":logging", "//absl:app", @@ -89,13 +92,14 @@ py2py3_test_binary( ], ) -py2and3_test( +py_test( name = "tests/logging_functional_test", size = "large", srcs = ["tests/logging_functional_test.py"], data = [":tests/logging_functional_test_helper"], + python_version = "PY3", shard_count = 50, - srcs_version = "PY2AND3", + srcs_version = "PY3", deps = [ ":logging", "//absl/flags", diff --git a/absl/testing/BUILD b/absl/testing/BUILD index 9cd28c9..a54997e 100644 --- a/absl/testing/BUILD +++ b/absl/testing/BUILD @@ -1,5 +1,3 @@ -load("//absl:_build_defs.bzl", "py2and3_test", "py2py3_test_binary") - licenses(["notice"]) # Apache 2.0 exports_files(["LICENSE"]) @@ -89,22 +87,11 @@ py_library( srcs_version = "PY2AND3", visibility = ["//:__subpackages__"], deps = [ - ":_bazel_selected_py3", # buildcleaner: keep "//absl/flags", ], ) py_library( - name = "_bazel_selected_py3", - testonly = 1, - srcs = select({ - "//absl:py3_mode": ["_bazel_selected_py3.py"], - "//absl:py2_mode": [], - }), - srcs_version = "PY2AND3", -) - -py_library( name = "_pretty_print_reporter", srcs = ["_pretty_print_reporter.py"], srcs_version = "PY2AND3", @@ -113,12 +100,13 @@ py_library( ], ) -py2and3_test( +py_test( name = "tests/absltest_filtering_test", size = "small", srcs = ["tests/absltest_filtering_test.py"], data = [":tests/absltest_filtering_test_helper"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":_bazelize_command", ":absltest", @@ -127,20 +115,22 @@ py2and3_test( ], ) -py2py3_test_binary( +py_binary( name = "tests/absltest_filtering_test_helper", testonly = 1, srcs = ["tests/absltest_filtering_test_helper.py"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [":absltest"], ) -py2and3_test( +py_test( name = "tests/absltest_fail_fast_test", size = "small", srcs = ["tests/absltest_fail_fast_test.py"], data = [":tests/absltest_fail_fast_test_helper"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":_bazelize_command", ":absltest", @@ -148,20 +138,22 @@ py2and3_test( ], ) -py2py3_test_binary( +py_binary( name = "tests/absltest_fail_fast_test_helper", testonly = 1, srcs = ["tests/absltest_fail_fast_test_helper.py"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [":absltest"], ) -py2and3_test( +py_test( name = "tests/absltest_randomization_test", size = "medium", srcs = ["tests/absltest_randomization_test.py"], data = [":tests/absltest_randomization_testcase"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":_bazelize_command", ":absltest", @@ -170,22 +162,24 @@ py2and3_test( ], ) -py2py3_test_binary( +py_binary( name = "tests/absltest_randomization_testcase", testonly = 1, srcs = ["tests/absltest_randomization_testcase.py"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":absltest", ], ) -py2and3_test( +py_test( name = "tests/absltest_sharding_test", size = "small", srcs = ["tests/absltest_sharding_test.py"], data = [":tests/absltest_sharding_test_helper"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":_bazelize_command", ":absltest", @@ -193,20 +187,22 @@ py2and3_test( ], ) -py2py3_test_binary( +py_binary( name = "tests/absltest_sharding_test_helper", testonly = 1, srcs = ["tests/absltest_sharding_test_helper.py"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [":absltest"], ) -py2and3_test( +py_test( name = "tests/absltest_test", size = "small", srcs = ["tests/absltest_test.py"], data = [":tests/absltest_test_helper"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":_bazelize_command", ":absltest", @@ -216,21 +212,23 @@ py2and3_test( ], ) -py2py3_test_binary( +py_binary( name = "tests/absltest_test_helper", testonly = 1, srcs = ["tests/absltest_test_helper.py"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":absltest", "//absl/flags", ], ) -py2and3_test( +py_test( name = "tests/flagsaver_test", srcs = ["tests/flagsaver_test.py"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":absltest", ":flagsaver", @@ -238,10 +236,11 @@ py2and3_test( ], ) -py2and3_test( +py_test( name = "tests/parameterized_test", srcs = ["tests/parameterized_test.py"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":absltest", ":parameterized", @@ -250,11 +249,12 @@ py2and3_test( ], ) -py2and3_test( +py_test( name = "tests/xml_reporter_test", srcs = ["tests/xml_reporter_test.py"], data = [":tests/xml_reporter_helper_test"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":_bazelize_command", ":absltest", @@ -267,11 +267,12 @@ py2and3_test( ], ) -py2py3_test_binary( +py_binary( name = "tests/xml_reporter_helper_test", testonly = 1, srcs = ["tests/xml_reporter_helper_test.py"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ ":absltest", "//absl/flags", diff --git a/absl/testing/_bazel_selected_py3.py b/absl/testing/_bazel_selected_py3.py deleted file mode 100644 index ea0306e..0000000 --- a/absl/testing/_bazel_selected_py3.py +++ /dev/null @@ -1,2 +0,0 @@ -# The presence of this module means, at build time, Bazel used Python 3 -# when resolving select() calls based on Python version. diff --git a/absl/testing/_bazelize_command.py b/absl/testing/_bazelize_command.py index c1d94b3..fdf6eb6 100644 --- a/absl/testing/_bazelize_command.py +++ b/absl/testing/_bazelize_command.py @@ -22,11 +22,6 @@ import os from absl import flags -try: - from absl.testing import _bazel_selected_py3 -except ImportError: - _bazel_selected_py3 = None - FLAGS = flags.FLAGS @@ -47,9 +42,6 @@ def get_executable_path(py_binary_name): Raises: RuntimeError: Raised when it cannot locate the executable path. """ - root, ext = os.path.splitext(py_binary_name) - suffix = 'py3' if _bazel_selected_py3 else 'py2' - py_binary_name = '{}_{}{}'.format(root, suffix, ext) if os.name == 'nt': py_binary_name += '.exe' diff --git a/absl/testing/tests/parameterized_test.py b/absl/testing/tests/parameterized_test.py index fb618ea..ebfa72b 100644 --- a/absl/testing/tests/parameterized_test.py +++ b/absl/testing/tests/parameterized_test.py @@ -420,7 +420,7 @@ class ParameterizedTestsTest(absltest.TestCase): test(res) self.assertIn(test.arguments, params) params.remove(test.arguments) - self.assertEqual(0, len(params)) + self.assertEmpty(params) def test_recorded_failures(self): ts = unittest.makeSuite(self.MixedAdditionParams) @@ -430,8 +430,8 @@ class ParameterizedTestsTest(absltest.TestCase): ts.run(res) self.assertEqual(2, res.testsRun) self.assertFalse(res.wasSuccessful()) - self.assertEqual(1, len(res.failures)) - self.assertEqual(0, len(res.errors)) + self.assertLen(res.failures, 1) + self.assertEmpty(res.errors) def test_short_description(self): ts = unittest.makeSuite(self.GoodAdditionParams) @@ -742,7 +742,7 @@ class ParameterizedTestsTest(absltest.TestCase): loader = unittest.TestLoader() ts = list(loader.loadTestsFromName('NamedTests.test_something_interesting', module=self)) - self.assertEqual(1, len(ts)) + self.assertLen(ts, 1) self.assertEndsWith(ts[0].id(), '.test_something_interesting') def test_load_dict_named_test(self): @@ -750,7 +750,7 @@ class ParameterizedTestsTest(absltest.TestCase): ts = list( loader.loadTestsFromName( 'NamedTests.test_dict_something_interesting', module=self)) - self.assertEqual(1, len(ts)) + self.assertLen(ts, 1) self.assertEndsWith(ts[0].id(), '.test_dict_something_interesting') def test_load_mixed_named_test(self): @@ -758,7 +758,7 @@ class ParameterizedTestsTest(absltest.TestCase): ts = list( loader.loadTestsFromName( 'NamedTests.test_mixed_something_interesting', module=self)) - self.assertEqual(1, len(ts)) + self.assertLen(ts, 1) self.assertEndsWith(ts[0].id(), '.test_mixed_something_interesting') def test_duplicate_named_test_fails(self): @@ -826,7 +826,7 @@ class ParameterizedTestsTest(absltest.TestCase): expected_testcases = [1, 2, 3, 4, 5, 6] self.assertTrue(hasattr(test_something, 'testcases')) - self.assertItemsEqual(expected_testcases, test_something.testcases) + self.assertCountEqual(expected_testcases, test_something.testcases) def test_chained_decorator(self): ts = unittest.makeSuite(self.ChainedTests) @@ -872,14 +872,14 @@ class ParameterizedTestsTest(absltest.TestCase): res = unittest.TestResult() ts.run(res) self.assertEqual(4, res.testsRun) - self.assertEqual(2, len(res.failures)) + self.assertLen(res.failures, 2) def test_generator_decorated_class(self): ts = unittest.makeSuite(self.GeneratorDecoratedClass) res = unittest.TestResult() ts.run(res) self.assertEqual(32, res.testsRun) - self.assertEqual(16, len(res.failures)) + self.assertLen(res.failures, 16) def test_no_duplicate_decorations(self): with self.assertRaises(AssertionError): @@ -891,7 +891,7 @@ class ParameterizedTestsTest(absltest.TestCase): def test_something(self, unused_obj): pass - def tes_double_class_decorations_not_supported(self): + def test_double_class_decorations_not_supported(self): @parameterized.parameters('foo', 'bar') class SuperclassWithClassDecorator(parameterized.TestCase): @@ -915,7 +915,7 @@ class ParameterizedTestsTest(absltest.TestCase): # One for when the skip wrapper is called first and doesn't iterate. self.assertEqual(3, res.testsRun) self.assertFalse(res.wasSuccessful()) - self.assertLen(res.failures, 0) + self.assertEmpty(res.failures) # One error from test_other_then_parameterized. self.assertLen(res.errors, 1) @@ -933,7 +933,7 @@ class ParameterizedTestsTest(absltest.TestCase): # One for when the skip wrapper is called first and doesn't iterate. self.assertEqual(3, res.testsRun) self.assertFalse(res.wasSuccessful()) - self.assertLen(res.failures, 0) + self.assertEmpty(res.failures) # One error from test_other_then_parameterized. self.assertLen(res.errors, 1) @@ -951,7 +951,7 @@ class ParameterizedTestsTest(absltest.TestCase): # One for when the skip wrapper is called first and doesn't iterate. self.assertEqual(3, res.testsRun) self.assertFalse(res.wasSuccessful()) - self.assertLen(res.failures, 0) + self.assertEmpty(res.failures) # One error from test_other_then_parameterized. self.assertLen(res.errors, 1) @@ -996,7 +996,7 @@ class ParameterizedTestsTest(absltest.TestCase): full_class_name + '.test_normal1 (13)', ] self.assertTrue(test_ids) - self.assertItemsEqual(expected_test_ids, test_ids) + self.assertCountEqual(expected_test_ids, test_ids) def test_multi_generators(self): ts = unittest.makeSuite(self.MultiGeneratorsTestCase) diff --git a/absl/third_party/unittest3_backport/BUILD b/absl/third_party/unittest3_backport/BUILD index d619cee..1d29df9 100644 --- a/absl/third_party/unittest3_backport/BUILD +++ b/absl/third_party/unittest3_backport/BUILD @@ -2,8 +2,6 @@ licenses(["notice"]) # New BSD, Python Software Foundation exports_files(["LICENSE"]) -load("//absl:_build_defs.bzl", "py2and3_test") - py_library( name = "unittest3_backport", srcs = ["__init__.py"], @@ -33,11 +31,12 @@ py_library( ], ) -py2and3_test( +py_test( name = "tests/unittest3_backport_test", size = "small", srcs = ["tests/unittest3_backport_test.py"], - srcs_version = "PY2AND3", + python_version = "PY3", + srcs_version = "PY3", deps = [ "//absl/testing:absltest", "//absl/testing:xml_reporter", |