Add a zsh test for clone env serialization

This commit is contained in:
Kovid Goyal 2022-04-15 12:04:50 +05:30
parent c15a31e725
commit b866c3e783
No known key found for this signature in database
GPG key ID: 06BC317B515ACE7C
3 changed files with 23 additions and 2 deletions

View file

@ -520,14 +520,14 @@ def parse_message(self, msg: str) -> None:
if k == 'a':
self.args.append(v)
elif k == 'env':
env = {}
self.env = {}
for line in v.split('\0'):
if line:
try:
k, v = line.split('=', 1)
except ValueError:
continue
env[k] = v
self.env[k] = v
elif k == 'cwd':
self.cwd = v
elif k == 'argv':

View file

@ -71,6 +71,8 @@ def clear(self) -> None:
self.open_urls = []
self.cc_buf = []
self.bell_count = 0
self.clone_cmds = []
self.current_clone_data = ''
def on_bell(self) -> None:
self.bell_count += 1
@ -94,6 +96,19 @@ def handle_remote_print(self, msg):
text = process_remote_print(msg)
print(text, file=sys.__stderr__)
def handle_remote_clone(self, msg):
if not msg:
if self.current_clone_data:
cdata, self.current_clone_data = self.current_clone_data, ''
from kitty.launch import CloneCmd
self.clone_cmds.append(CloneCmd(cdata))
self.current_clone_data = ''
return
num, rest = msg.split(':', 1)
if num == '0' or len(self.current_clone_data) > 1024 * 1024:
self.current_clone_data = ''
self.current_clone_data += rest
def handle_remote_ssh(self, msg):
from kittens.ssh.main import get_ssh_data
if self.pty:

View file

@ -148,6 +148,12 @@ def redrawn():
os.mkdir(q)
pty.send_cmd_to_child(f'cd {q}')
pty.wait_till(lambda: pty.screen.last_reported_cwd.endswith(q))
with self.run_shell(rc=f'''PS1="{ps1}"\nexport ES="a\n b c\nd"''') as pty:
pty.callbacks.clear()
pty.send_cmd_to_child('clone-in-kitty')
pty.wait_till(lambda: len(pty.callbacks.clone_cmds) == 1)
env = pty.callbacks.clone_cmds[0].env
self.ae(env.get('ES'), 'a\n b c\nd')
@unittest.skipUnless(shutil.which('fish'), 'fish not installed')
def test_fish_integration(self):