Beispiel #1
0
    def test_fd_read(self):
        (r, w) = os.pipe()

        ch = GLib.IOChannel(filedes=r)
        ch.set_encoding(None)
        ch.set_flags(ch.get_flags() | GLib.IOFlags.NONBLOCK)
        self.assertNotEqual(ch.get_flags() | GLib.IOFlags.NONBLOCK, 0)
        self.assertEqual(ch.read(), b'')
        os.write(w, b'\x01\x02')
        self.assertEqual(ch.read(), b'\x01\x02')

        # now test blocking case, after closing the write end
        ch.set_flags(GLib.IOFlags(ch.get_flags() & ~GLib.IOFlags.NONBLOCK))
        os.write(w, b'\x03\x04')
        os.close(w)
        self.assertEqual(ch.read(), b'\x03\x04')

        ch.close()