mirror of https://github.com/python/cpython
gh-121596: Fix Sharing Interpreter Channels (gh-121597)
This fixes a mistake in gh-113012 and adds a test that verifies the fix.
This commit is contained in:
parent
7641743d48
commit
35a67e36aa
|
@ -48,6 +48,7 @@ class TestChannels(TestBase):
|
||||||
self.assertEqual(after, created)
|
self.assertEqual(after, created)
|
||||||
|
|
||||||
def test_shareable(self):
|
def test_shareable(self):
|
||||||
|
interp = interpreters.create()
|
||||||
rch, sch = channels.create()
|
rch, sch = channels.create()
|
||||||
|
|
||||||
self.assertTrue(
|
self.assertTrue(
|
||||||
|
@ -60,8 +61,25 @@ class TestChannels(TestBase):
|
||||||
rch2 = rch.recv()
|
rch2 = rch.recv()
|
||||||
sch2 = rch.recv()
|
sch2 = rch.recv()
|
||||||
|
|
||||||
|
interp.prepare_main(rch=rch, sch=sch)
|
||||||
|
sch.send_nowait(rch)
|
||||||
|
sch.send_nowait(sch)
|
||||||
|
interp.exec(dedent("""
|
||||||
|
rch2 = rch.recv()
|
||||||
|
sch2 = rch.recv()
|
||||||
|
assert rch2 == rch
|
||||||
|
assert sch2 == sch
|
||||||
|
|
||||||
|
sch.send_nowait(rch2)
|
||||||
|
sch.send_nowait(sch2)
|
||||||
|
"""))
|
||||||
|
rch3 = rch.recv()
|
||||||
|
sch3 = rch.recv()
|
||||||
|
|
||||||
self.assertEqual(rch2, rch)
|
self.assertEqual(rch2, rch)
|
||||||
self.assertEqual(sch2, sch)
|
self.assertEqual(sch2, sch)
|
||||||
|
self.assertEqual(rch3, rch)
|
||||||
|
self.assertEqual(sch3, sch)
|
||||||
|
|
||||||
def test_is_closed(self):
|
def test_is_closed(self):
|
||||||
rch, sch = channels.create()
|
rch, sch = channels.create()
|
||||||
|
|
|
@ -2615,10 +2615,10 @@ _get_current_channelend_type(int end)
|
||||||
}
|
}
|
||||||
if (cls == NULL) {
|
if (cls == NULL) {
|
||||||
// Force the module to be loaded, to register the type.
|
// Force the module to be loaded, to register the type.
|
||||||
PyObject *highlevel = PyImport_ImportModule("interpreters.channel");
|
PyObject *highlevel = PyImport_ImportModule("interpreters.channels");
|
||||||
if (highlevel == NULL) {
|
if (highlevel == NULL) {
|
||||||
PyErr_Clear();
|
PyErr_Clear();
|
||||||
highlevel = PyImport_ImportModule("test.support.interpreters.channel");
|
highlevel = PyImport_ImportModule("test.support.interpreters.channels");
|
||||||
if (highlevel == NULL) {
|
if (highlevel == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue