mirror of
https://github.com/kovidgoyal/kitty.git
synced 2024-09-11 14:45:31 +03:00
Follow PEP 0394 and use /usr/bin/env python so that the python in the users venv is respected. Not that the kitty python files are meant to be executed standalone anyway, but, whatever. Fixes #6810
60 lines
1.3 KiB
Python
60 lines
1.3 KiB
Python
#!/usr/bin/env python
|
|
# License: GPL v3 Copyright: 2018, Kovid Goyal <kovid at kovidgoyal.net>
|
|
|
|
|
|
import os
|
|
from contextlib import contextmanager
|
|
|
|
from kitty.utils import get_editor
|
|
|
|
from . import BaseTest
|
|
|
|
|
|
@contextmanager
|
|
def patch_env(**kw):
|
|
orig = os.environ.copy()
|
|
for k, v in kw.items():
|
|
if v is None:
|
|
os.environ.pop(k, None)
|
|
else:
|
|
os.environ[k] = v
|
|
yield
|
|
os.environ.clear()
|
|
os.environ.update(orig)
|
|
|
|
|
|
class TestOpenActions(BaseTest):
|
|
|
|
def test_parsing_of_open_actions(self):
|
|
from kitty.open_actions import KeyAction, actions_for_url
|
|
self.set_options()
|
|
spec = '''
|
|
protocol file
|
|
mime text/*
|
|
fragment_matches .
|
|
AcTion launch $EDITOR $FILE_PATH $FRAGMENT
|
|
action
|
|
|
|
protocol file
|
|
mime text/*
|
|
action ignored
|
|
|
|
ext py,txt
|
|
action one
|
|
action two
|
|
'''
|
|
|
|
def actions(url):
|
|
with patch_env(FILE_PATH='notgood'):
|
|
return tuple(actions_for_url(url, spec))
|
|
|
|
def single(url, func, *args):
|
|
acts = actions(url)
|
|
self.ae(len(acts), 1)
|
|
self.ae(acts[0].func, func)
|
|
self.ae(acts[0].args, args)
|
|
|
|
single('file://hostname/tmp/moo.txt#23', 'launch', *get_editor(), '/tmp/moo.txt', '23')
|
|
single('some thing.txt', 'ignored')
|
|
self.ae(actions('x:///a.txt'), (KeyAction('one', ()), KeyAction('two', ())))
|