diff options
author | Eric Snow <ericsnowcurrently@gmail.com> | 2020-04-28 23:11:32 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-28 23:11:32 (GMT) |
commit | 5e8c691594d68925213d36296ce7c4b3e90bcb1d (patch) | |
tree | 1b93ee2c24dd9944396aa98ba232f0db4e2893c1 /Lib/test/test__xxsubinterpreters.py | |
parent | 6d86a2331e6b64a2ae80c1a21f81baa5a71ac594 (diff) | |
download | cpython-5e8c691594d68925213d36296ce7c4b3e90bcb1d.zip cpython-5e8c691594d68925213d36296ce7c4b3e90bcb1d.tar.gz cpython-5e8c691594d68925213d36296ce7c4b3e90bcb1d.tar.bz2 |
bpo-32604: Add support for a "default" arg in channel_recv(). (GH-19770)
This allows the caller to avoid creation of an exception when the channel is empty (just like `dict.get()` works). `ChannelEmptyError` is still raised if no default is provided.
Automerge-Triggered-By: @ericsnowcurrently
Diffstat (limited to 'Lib/test/test__xxsubinterpreters.py')
-rw-r--r-- | Lib/test/test__xxsubinterpreters.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/Lib/test/test__xxsubinterpreters.py b/Lib/test/test__xxsubinterpreters.py index 30f8f98..8a368dc 100644 --- a/Lib/test/test__xxsubinterpreters.py +++ b/Lib/test/test__xxsubinterpreters.py @@ -1302,6 +1302,27 @@ class ChannelTests(TestBase): with self.assertRaises(interpreters.ChannelEmptyError): interpreters.channel_recv(cid) + def test_recv_default(self): + default = object() + cid = interpreters.channel_create() + obj1 = interpreters.channel_recv(cid, default) + interpreters.channel_send(cid, None) + interpreters.channel_send(cid, 1) + interpreters.channel_send(cid, b'spam') + interpreters.channel_send(cid, b'eggs') + obj2 = interpreters.channel_recv(cid, default) + obj3 = interpreters.channel_recv(cid, default) + obj4 = interpreters.channel_recv(cid) + obj5 = interpreters.channel_recv(cid, default) + obj6 = interpreters.channel_recv(cid, default) + + self.assertIs(obj1, default) + self.assertIs(obj2, None) + self.assertEqual(obj3, 1) + self.assertEqual(obj4, b'spam') + self.assertEqual(obj5, b'eggs') + self.assertIs(obj6, default) + def test_run_string_arg_unresolved(self): cid = interpreters.channel_create() interp = interpreters.create() |