mirror of
https://github.com/kovidgoyal/kitty.git
synced 2024-11-11 01:28:19 +03:00
59 lines
1.3 KiB
Python
59 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
# License: GPL v3 Copyright: 2018, Kovid Goyal <kovid at kovidgoyal.net>
|
|
|
|
|
|
import os
|
|
from contextlib import contextmanager
|
|
|
|
from . import BaseTest
|
|
from kitty.utils import get_editor
|
|
|
|
|
|
@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 actions_for_url, KeyAction
|
|
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', ())))
|