#!/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)