summaryrefslogtreecommitdiffstats
path: root/tests/test_in_vterm/test_shells.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_in_vterm/test_shells.py')
-rwxr-xr-xtests/test_in_vterm/test_shells.py162
1 files changed, 162 insertions, 0 deletions
diff --git a/tests/test_in_vterm/test_shells.py b/tests/test_in_vterm/test_shells.py
new file mode 100755
index 0000000..faf7976
--- /dev/null
+++ b/tests/test_in_vterm/test_shells.py
@@ -0,0 +1,162 @@
+#!/usr/bin/env python
+# vim:fileencoding=utf-8:noet
+from __future__ import (unicode_literals, division, absolute_import, print_function)
+
+import os
+import sys
+
+from time import sleep
+from subprocess import check_call
+from glob import glob1
+from traceback import print_exc
+
+from argparse import ArgumentParser
+
+from powerline.lib.dict import updated
+
+from tests.modules.lib.terminal import (ExpectProcess, MutableDimensions,
+ do_terminal_tests, get_env)
+from tests.modules import PowerlineTestSuite
+
+
+TEST_ROOT = os.path.abspath(os.environ['TEST_ROOT'])
+
+
+def get_parser():
+ parser = ArgumentParser()
+ parser.add_argument('--type', action='store')
+ parser.add_argument('--client', action='store')
+ parser.add_argument('--binding', action='store')
+ parser.add_argument('args', action='append')
+ return parser
+
+
+BINDING_OPTIONS = {
+ 'dash': {
+ 'cmd': 'dash',
+ 'args': ['-i'],
+ 'init': [
+ '. "$ROOT/tests/test_in_vterm/shell/inits/dash"',
+ ],
+ },
+}
+
+
+def main(argv):
+ script_args = get_parser().parse_args(argv)
+
+ vterm_path = os.path.join(TEST_ROOT, 'path')
+
+ env = get_env(vterm_path, TEST_ROOT)
+ env['ROOT'] = os.path.abspath('.')
+ env['TEST_ROOT'] = TEST_ROOT
+ env['TEST_TYPE'] = script_args.type
+ env['TEST_CLIENT'] = script_args.client
+ env['LANG'] = 'en_US.UTF_8'
+ env['_POWERLINE_RUNNING_SHELL_TESTS'] = (
+ 'ee5bcdc6-b749-11e7-9456-50465d597777')
+
+ dim = MutableDimensions(rows=50, cols=200)
+
+ binding_opts = BINDING_OPTIONS[script_args.binding]
+
+ cmd = os.path.join(vterm_path, binding_opts['cmd'])
+ args = binding_opts['args']
+
+ def gen_init(binding):
+ def init(p):
+ for line in binding_opts['init']:
+ p.send(line + '\n')
+ sleep(1)
+
+ return init
+
+ def gen_feed(line):
+ def feed(p):
+ p.send(line + '\n')
+ sleep(0.1)
+
+ return feed
+
+ base_attrs = {
+ ((255, 204,0), (204, 51, 0), 0, 0, 0): 'H',
+ ((204, 51, 0), (0, 102, 153), 0, 0, 0): 'sHU',
+ ((255, 255, 255), (0, 102, 153), 1, 0, 0): 'U',
+ ((0, 102, 153), (44, 44, 44), 0, 0, 0): 'sUB',
+ ((199, 199, 199), (44, 44, 44), 0, 0, 0): 'B',
+ ((44, 44, 44), (88, 88, 88), 0, 0, 0): 'sBD',
+ ((199, 199, 199), (88, 88, 88), 0, 0, 0): 'D',
+ ((144, 144, 144), (88, 88, 88), 0, 0, 0): 'sD',
+ ((221, 221, 221), (88, 88, 88), 1, 0, 0): 'C',
+ ((88, 88, 88), (0, 0, 0), 0, 0, 0): 'sDN',
+ ((240, 240, 240), (0, 0, 0), 0, 0, 0): 'N',
+ ((0, 102, 153), (51, 153, 204), 0, 0, 0): 'sUE',
+ ((255, 255, 255), (51, 153, 204), 0, 0, 0): 'E',
+ ((51, 153, 204), (44, 44, 44), 0, 0, 0): 'sEB',
+ }
+
+ tests = (
+ {
+ 'expected_result': (
+ '{H:  hostname }{sHU: }'
+ '{U:user }{sUB: }'
+ '{B: BRANCH }{sBD: }'
+ '{D:… }{sD: }{D:tmp }{sD: }{D:vshells }{sD: }{C:3rd }{sDN: }'
+ '{N:}',
+ base_attrs,
+ ),
+ 'prep_cb': gen_init(script_args.binding),
+ },
+ {
+ 'expected_result': (
+ '{H:  hostname }{sHU: }'
+ '{U:user }{sUB: }'
+ '{B: BRANCH }{sBD: }'
+ '{D:… }{sD: }{D:vshells }{sD: }{D:3rd }{sD: }{C:.git }{sDN: }'
+ '{N:}',
+ base_attrs
+ ),
+ 'prep_cb': gen_feed('cd .git'),
+ },
+ {
+ 'expected_result': (
+ '{H:  hostname }{sHU: }'
+ '{U:user }{sUB: }'
+ '{B: BRANCH }{sBD: }'
+ '{D:… }{sD: }{D:tmp }{sD: }{D:vshells }{sD: }{C:3rd }{sDN: }'
+ '{N:}',
+ base_attrs,
+ ),
+ 'prep_cb': gen_feed('cd ..'),
+ },
+ {
+ 'expected_result': (
+ '{H:  hostname }{sHU: }'
+ '{U:user }{sUE: }'
+ '{E:(e) some-venv }{sEB: }'
+ '{B: BRANCH }{sBD: }'
+ '{D:… }{sD: }{D:tmp }{sD: }{D:vshells }{sD: }{C:3rd }{sDN: }'
+ '{N:}',
+ base_attrs,
+ ),
+ 'prep_cb': gen_feed('set_virtual_env some-venv'),
+ },
+ )
+
+ with PowerlineTestSuite('shell') as suite:
+ return do_terminal_tests(
+ tests=tests,
+ cmd=cmd,
+ dim=dim,
+ args=args,
+ env=env,
+ cwd=TEST_ROOT,
+ suite=suite,
+ )
+
+
+if __name__ == '__main__':
+ if main(sys.argv[1:]):
+ raise SystemExit(0)
+ else:
+ raise SystemExit(1)