diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2021-08-13 11:04:08 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-13 11:04:08 (GMT) |
commit | 45a97d91a42795fb0b220e67ee25a14b940c7e50 (patch) | |
tree | a6baf5ca00d4a35481c9de56735e2ffbf3d0622d | |
parent | ebc59262349d6901b825ed9101d604e826757262 (diff) | |
download | cpython-45a97d91a42795fb0b220e67ee25a14b940c7e50.zip cpython-45a97d91a42795fb0b220e67ee25a14b940c7e50.tar.gz cpython-45a97d91a42795fb0b220e67ee25a14b940c7e50.tar.bz2 |
bpo-44891: Tests `id` preserving on `* 1` for `str` and `bytes` (GH-27745)
Co-authored-by: Ćukasz Langa <lukasz@langa.pl>
(cherry picked from commit a2ce538e16d5e3a6168704366bdd7a8c5af29881)
Co-authored-by: Nikita Sobolev <mail@sobolevn.me>
-rw-r--r-- | Lib/test/test_bytes.py | 22 | ||||
-rw-r--r-- | Lib/test/test_unicode.py | 22 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Tests/2021-08-13-12-11-06.bpo-44891.T9_mBT.rst | 2 |
3 files changed, 46 insertions, 0 deletions
diff --git a/Lib/test/test_bytes.py b/Lib/test/test_bytes.py index 381030f..13ad238 100644 --- a/Lib/test/test_bytes.py +++ b/Lib/test/test_bytes.py @@ -1169,6 +1169,28 @@ class BytesTest(BaseBytesTest, unittest.TestCase): self.assertEqual(bytes(ba), b'ab') self.assertRaises(TypeError, bytes, bb) + def test_repeat_id_preserving(self): + a = b'123abc1@' + b = b'456zyx-+' + self.assertEqual(id(a), id(a)) + self.assertNotEqual(id(a), id(b)) + self.assertNotEqual(id(a), id(a * -4)) + self.assertNotEqual(id(a), id(a * 0)) + self.assertEqual(id(a), id(a * 1)) + self.assertEqual(id(a), id(1 * a)) + self.assertNotEqual(id(a), id(a * 2)) + + class SubBytes(bytes): + pass + + s = SubBytes(b'qwerty()') + self.assertEqual(id(s), id(s)) + self.assertNotEqual(id(s), id(s * -4)) + self.assertNotEqual(id(s), id(s * 0)) + self.assertNotEqual(id(s), id(s * 1)) + self.assertNotEqual(id(s), id(1 * s)) + self.assertNotEqual(id(s), id(s * 2)) + class ByteArrayTest(BaseBytesTest, unittest.TestCase): type2test = bytearray diff --git a/Lib/test/test_unicode.py b/Lib/test/test_unicode.py index a6549c7..dd14287 100644 --- a/Lib/test/test_unicode.py +++ b/Lib/test/test_unicode.py @@ -508,6 +508,28 @@ class UnicodeTest(string_tests.CommonTest, text = 'abc def' self.assertIs(text.replace(pattern, pattern), text) + def test_repeat_id_preserving(self): + a = '123abc1@' + b = '456zyx-+' + self.assertEqual(id(a), id(a)) + self.assertNotEqual(id(a), id(b)) + self.assertNotEqual(id(a), id(a * -4)) + self.assertNotEqual(id(a), id(a * 0)) + self.assertEqual(id(a), id(a * 1)) + self.assertEqual(id(a), id(1 * a)) + self.assertNotEqual(id(a), id(a * 2)) + + class SubStr(str): + pass + + s = SubStr('qwerty()') + self.assertEqual(id(s), id(s)) + self.assertNotEqual(id(s), id(s * -4)) + self.assertNotEqual(id(s), id(s * 0)) + self.assertNotEqual(id(s), id(s * 1)) + self.assertNotEqual(id(s), id(1 * s)) + self.assertNotEqual(id(s), id(s * 2)) + def test_bytes_comparison(self): with warnings_helper.check_warnings(): warnings.simplefilter('ignore', BytesWarning) diff --git a/Misc/NEWS.d/next/Tests/2021-08-13-12-11-06.bpo-44891.T9_mBT.rst b/Misc/NEWS.d/next/Tests/2021-08-13-12-11-06.bpo-44891.T9_mBT.rst new file mode 100644 index 0000000..2f83389 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2021-08-13-12-11-06.bpo-44891.T9_mBT.rst @@ -0,0 +1,2 @@ +Tests were added to clarify :func:`id` is preserved when ``obj * 1`` is used +on :class:`str` and :class:`bytes` objects. Patch by Nikita Sobolev. |