summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2021-08-13 11:04:08 (GMT)
committerGitHub <noreply@github.com>2021-08-13 11:04:08 (GMT)
commit45a97d91a42795fb0b220e67ee25a14b940c7e50 (patch)
treea6baf5ca00d4a35481c9de56735e2ffbf3d0622d
parentebc59262349d6901b825ed9101d604e826757262 (diff)
downloadcpython-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.py22
-rw-r--r--Lib/test/test_unicode.py22
-rw-r--r--Misc/NEWS.d/next/Tests/2021-08-13-12-11-06.bpo-44891.T9_mBT.rst2
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.