def test_setting_terminal_size(self): master_fd, slave_fd = terminal.openpty() terminal.set_terminal_size(slave_fd, 123, 456) proc = subprocess.Popen(["stty", "size"], stdin=slave_fd, stdout=subprocess.PIPE) stdout = proc.communicate()[0] self.assertEquals(stdout, "456 123\n")
def test_setsid_helper(self): got = [] def callback(pid, status): got.append((pid, status)) spec1 = {"args": ["sh", "-c", "exit 42"], "fds": {0: sys.stdin, 1: sys.stdout, 2: sys.stderr}} spec2 = {"args": ["sh", "-c", "exit 24"], "fds": {0: sys.stdin, 1: sys.stdout, 2: sys.stderr}} master_fd, slave_fd = terminal.openpty() helper_pid, pids = setsid_helper.run([spec1, spec2], slave_fd, callback) self.assertEquals(len(pids), 2) gobject.main_context_default().iteration(True) gobject.main_context_default().iteration(True) gobject.main_context_default().iteration(True) statuses = dict(got) self.assertEquals(set(statuses.keys()), set(pids)) assert os.WIFEXITED(statuses[pids[0]]) assert os.WIFEXITED(statuses[pids[1]]) self.assertEquals(os.WEXITSTATUS(statuses[pids[0]]), 42) self.assertEquals(os.WEXITSTATUS(statuses[pids[1]]), 24) # Helper process should exit OK. pid2, status = os.waitpid(helper_pid, 0) assert os.WIFEXITED(status) self.assertEquals(os.WEXITSTATUS(status), 0)