Start work on testing the bootstrap script

This commit is contained in:
Kovid Goyal
2022-02-23 15:34:19 +05:30
parent f37d947dd5
commit e73525d0a2
6 changed files with 64 additions and 55 deletions

View File

@@ -26,8 +26,9 @@ from kitty.window import process_remote_print, process_title_from_child
class Callbacks:
def __init__(self) -> None:
def __init__(self, pty=None) -> None:
self.clear()
self.pty = pty
def write(self, data) -> None:
self.wtcbuf += data
@@ -93,6 +94,18 @@ class Callbacks:
text = process_remote_print(msg)
print(text, file=sys.__stderr__)
def handle_remote_ssh(self, msg):
from kittens.ssh.main import get_ssh_data
for line in get_ssh_data(msg):
self.pty.write_to_child(line)
self.pty.process_input_from_child(timeout=0)
def handle_remote_echo(self, msg):
from base64 import standard_b64decode
data = standard_b64decode(msg)
self.pty.write_to_child(data)
self.pty.process_input_from_child(timeout=0)
def filled_line_buf(ynum=5, xnum=5, cursor=Cursor()):
ans = LineBuf(ynum, xnum)
@@ -177,7 +190,7 @@ class PTY:
self.cell_width = cell_width
self.cell_height = cell_height
self.set_window_size(rows=rows, columns=columns)
self.callbacks = Callbacks()
self.callbacks = Callbacks(self)
self.screen = Screen(self.callbacks, rows, columns, scrollback, cell_width, cell_height, 0, self.callbacks)
self.received_bytes = b''

View File

@@ -3,13 +3,15 @@
import os
import shlex
import shutil
import tempfile
from kittens.ssh.main import get_connection_data
from kittens.ssh.main import bootstrap_script, get_connection_data
from kitty.utils import SSHConnectionData
from . import BaseTest
from .shell_integration import basic_shell_env
class SSHTest(BaseTest):
@@ -39,11 +41,14 @@ print(' '.join(map(str, buf)))'''), lines=13, cols=77)
t('ssh -p 33 main', port=33)
def test_ssh_launcher_script(self):
for sh in ('sh', 'zsh', 'bash', 'dash'):
for sh in ('dash', 'zsh', 'bash', 'posh', 'sh'):
q = shutil.which(sh)
if q:
with self.subTest(sh=sh), tempfile.TemporaryDirectory() as tdir:
self.run_launcher(sh, tdir)
script = bootstrap_script('echo TEST_DONE; return 0')
env = basic_shell_env(tdir)
pty = self.create_pty(f'{sh} -c {shlex.quote(script)}', cwd=tdir, env=env)
self.check_bootstrap(tdir, pty)
def run_launcher(self, sh, tdir):
pass
def check_bootstrap(self, home_dir, pty):
pty.wait_till(lambda: 'TEST_DONE' in pty.screen_contents())