def test_format_prompt_with_broken_template(): for p in ('{user', '{user}{hostname'): assert_equal(partial_format_prompt(p), p) assert_equal(format_prompt(p), p) # '{{user' will be parsed to '{user' for p in ('{{user}', '{{user'): assert_in('user', partial_format_prompt(p)) assert_in('user', format_prompt(p))
def test_format_prompt_with_broken_template(): for p in ('{user', '{user}{hostname'): assert partial_format_prompt(p) == p assert format_prompt(p) == p # '{{user' will be parsed to '{user' for p in ('{{user}', '{{user'): assert 'user' in partial_format_prompt(p) assert 'user' in format_prompt(p)
def test_format_prompt_with_broken_template(): for p in ('{user', '{user}{hostname'): assert_equal(partial_format_prompt(p), p) assert_equal(format_prompt(p), p) # '{{user' will be parsed to '{user' for p in ('{{user}', '{{user'): assert_in('user', partial_format_prompt(p)) assert_in('user', format_prompt(p))
def test_format_prompt_with_invalid_func(): def p(): foo = bar # raises exception return '{user}' assert_is_instance(partial_format_prompt(p), str) assert_is_instance(format_prompt(p), str)
def test_format_prompt_for_prompt_toolkit(): templ = ('>>> {BOLD_BLUE}~/xonsh {WHITE} (main){NO_COLOR}') prompt = format_prompt(templ, TERM_COLORS) token_names, color_styles, strings = format_prompt_for_prompt_toolkit(prompt) assert_equal(token_names, ['NO_COLOR', 'BOLD_BLUE', 'WHITE', 'NO_COLOR']) assert_equal(color_styles, ['', 'bold #0000D2', '#ffffff', '']) assert_equal(strings, ['>>> ', '~/xonsh ', ' (main)', ''])
def test_format_prompt_for_prompt_toolkit(): templ = ('>>> {BOLD_BLUE}~/xonsh {WHITE} (main){NO_COLOR}') prompt = format_prompt(templ, TERM_COLORS) token_names, color_styles, strings = format_prompt_for_prompt_toolkit(prompt) assert_equal(token_names, ['NO_COLOR', 'BOLD_BLUE', 'WHITE', 'NO_COLOR']) assert_equal(color_styles, ['', 'bold #0000FF', '#FFFFFF', '']) assert_equal(strings, ['>>> ', '~/xonsh ', ' (main)', ''])
def test_format_prompt_for_prompt_toolkit(): templ = ('>>> {BOLD_INTENSE_BLUE}~/xonsh {WHITE} {BACKGROUND_RED} {INTENSE_RED}(main){NO_COLOR}') prompt = format_prompt(templ, TERM_COLORS) token_names, color_styles, strings = format_prompt_for_prompt_toolkit(prompt) assert_equal(token_names, ['NO_COLOR', 'BOLD_INTENSE_BLUE', 'WHITE', 'BACKGROUND_RED', 'INTENSE_RED', 'NO_COLOR']) assert_equal(color_styles, ['noinherit', 'bold #0000d2', '#f0f0f0', 'bg:#800000', 'bg:#800000 #ff1010', 'noinherit']) assert_equal(strings, ['>>> ', '~/xonsh ', ' ', ' ', '(main)', ''])
def test_format_prompt_with_broken_template_in_func(): for p in ( lambda: '{user', lambda: '{{user', lambda: '{{user}', lambda: '{user}{hostname', ): # '{{user' will be parsed to '{user' assert_in('user', partial_format_prompt(p)) assert_in('user', format_prompt(p))
def test_format_prompt_with_broken_template_in_func(): for p in ( lambda: '{user', lambda: '{{user', lambda: '{{user}', lambda: '{user}{hostname', ): # '{{user' will be parsed to '{user' assert_in('user', partial_format_prompt(p)) assert_in('user', format_prompt(p))
def settitle(self): env = builtins.__xonsh_env__ term = env.get('TERM', None) if term is None or term == 'linux': return if 'TITLE' in env: t = env['TITLE'] else: return t = format_prompt(t) sys.stdout.write("\x1b]2;{0}\x07".format(t))
def settitle(self): env = builtins.__xonsh_env__ term = env.get('TERM', None) if term is None or term == 'linux': return if 'TITLE' in env: t = env['TITLE'] if callable(t): t = t() else: return t = format_prompt(t) sys.stdout.write("\x1b]2;{0}\x07".format(t))
def prompt(self): """Obtains the current prompt string.""" if self.need_more_lines: if self.mlprompt is None: self.mlprompt = multiline_prompt() return self.mlprompt env = builtins.__xonsh_env__ if 'PROMPT' in env: p = env['PROMPT'] p = format_prompt(p) else: p = "set '$PROMPT = ...' $ " self.settitle() return p
def test_format_prompt(): formatter_dict = { 'a_string': 'cat', 'none': (lambda: None), 'f': (lambda: 'wakka'), } cases = { 'my {a_string}': 'my cat', 'my {none}{a_string}': 'my cat', '{f} jawaka': 'wakka jawaka', } for p, exp in cases.items(): obs = format_prompt(template=p, formatter_dict=formatter_dict) yield assert_equal, exp, obs
def prompt(self): """Obtains the current prompt string.""" if self.need_more_lines: if self.mlprompt is None: self.mlprompt = multiline_prompt() return self.mlprompt env = builtins.__xonsh_env__ if 'PROMPT' in env: p = env['PROMPT'] p = format_prompt(p) else: p = "set '$PROMPT = ...' $ " self.settitle() return p
def settitle(self): """Sets terminal title.""" env = builtins.__xonsh_env__ term = env.get('TERM', None) if term is None or term == 'linux': return t = env.get('TITLE') if t is None: return t = format_prompt(t) if ON_WINDOWS and 'ANSICON' not in env: t = escape_windows_title_string(t) os.system('title {}'.format(t)) else: sys.stdout.write("\x1b]2;{0}\x07".format(t))
def settitle(self): """Sets terminal title.""" env = builtins.__xonsh_env__ term = env.get('TERM', None) if term is None or term == 'linux': return t = env.get('TITLE') if t is None: return t = format_prompt(t) if ON_WINDOWS and 'ANSICON' not in env: t = escape_windows_title_string(t) os.system('title {}'.format(t)) else: sys.stdout.write("\x1b]2;{0}\x07".format(t))
def settitle(self): """Sets terminal title.""" env = builtins.__xonsh_env__ term = env.get('TERM', None) # Shells running in emacs sets TERM to "dumb" or "eterm-color". # Do not set title for these to avoid garbled prompt. if term is None or term in ['dumb', 'eterm-color', 'linux']: return t = env.get('TITLE') if t is None: return t = format_prompt(t) if ON_WINDOWS and 'ANSICON' not in env: t = escape_windows_title_string(t) os.system('title {}'.format(t)) else: sys.stdout.write("\x1b]2;{0}\x07".format(t))
def settitle(self): """Sets terminal title.""" env = builtins.__xonsh_env__ term = env.get('TERM', None) # Shells running in emacs sets TERM to "dumb" or "eterm-color". # Do not set title for these to avoid garbled prompt. if term is None or term in ['dumb', 'eterm-color', 'linux']: return t = env.get('TITLE') if t is None: return t = format_prompt(t) if ON_WINDOWS and 'ANSICON' not in env: t = escape_windows_title_string(t) os.system('title {}'.format(t)) else: sys.stdout.write("\x1b]2;{0}\x07".format(t))
def settitle(self): """Sets terminal title.""" _ = self env = builtins.__xonsh_env__ # pylint: disable=no-member term = env.get("TERM", None) # Shells running in emacs sets TERM to "dumb" or "eterm-color". # Do not set title for these to avoid garbled prompt. if term is None or term in ["dumb", "eterm-color", "linux"]: return t = env.get("TITLE") if t is None: return t = format_prompt(t) if ON_WINDOWS and "ANSICON" not in env: t = escape_windows_cmd_string(t) os.system("title {}".format(t)) else: os.write(1, "\x1b]2;{0}\x07".format(t).encode())
def prompt(self): """Obtains the current prompt string.""" if self.need_more_lines: if self.mlprompt is None: try: self.mlprompt = multiline_prompt() except Exception: # pylint: disable=broad-except print_exception() self.mlprompt = '<multiline prompt error> ' return self.mlprompt env = builtins.__xonsh_env__ # pylint: disable=no-member p = env.get('PROMPT') try: p = format_prompt(p) except Exception: # pylint: disable=broad-except print_exception() self.settitle() return p
def prompt(self): """Obtains the current prompt string.""" if self.need_more_lines: if self.mlprompt is None: try: self.mlprompt = multiline_prompt() except Exception: # pylint: disable=broad-except print_exception() self.mlprompt = '<multiline prompt error> ' return self.mlprompt env = builtins.__xonsh_env__ # pylint: disable=no-member p = env.get('PROMPT') try: p = format_prompt(p) except Exception: # pylint: disable=broad-except print_exception() self.settitle() return p
def prompt(self): """Obtains the current prompt string.""" global RL_LIB, RL_CAN_RESIZE if RL_CAN_RESIZE: # This is needed to support some system where line-wrapping doesn't # work. This is a bug in upstream Python, or possibly readline. RL_LIB.rl_reset_screen_size() if self.need_more_lines: if self.mlprompt is None: self.mlprompt = multiline_prompt() return self.mlprompt env = builtins.__xonsh_env__ if 'PROMPT' in env: p = env['PROMPT'] p = format_prompt(p) else: p = "set '$PROMPT = ...' $ " self.settitle() return p
def prompt(self): """Obtains the current prompt string.""" if self.need_more_lines: if self.mlprompt is None: try: self.mlprompt = multiline_prompt() except Exception: _print_exception() self.mlprompt = '<multiline prompt error> ' return self.mlprompt env = builtins.__xonsh_env__ if 'PROMPT' in env: p = env['PROMPT'] try: p = format_prompt(p) except Exception: _print_exception() else: p = "set '$PROMPT = ...' $ " self.settitle() return p
def prompt(self): """Obtains the current prompt string.""" if self.need_more_lines: if self.mlprompt is None: try: self.mlprompt = multiline_prompt() except Exception: _print_exception() self.mlprompt = '<multiline prompt error> ' return self.mlprompt env = builtins.__xonsh_env__ if 'PROMPT' in env: p = env['PROMPT'] try: p = format_prompt(p) except Exception: _print_exception() else: p = "set '$PROMPT = ...' $ " self.settitle() return p
def prompt(self): """Obtains the current prompt string.""" global RL_LIB, RL_CAN_RESIZE if RL_CAN_RESIZE: # This is needed to support some system where line-wrapping doesn't # work. This is a bug in upstream Python, or possibly readline. RL_LIB.rl_reset_screen_size() if self.need_more_lines: if self.mlprompt is None: self.mlprompt = multiline_prompt() return self.mlprompt env = builtins.__xonsh_env__ if 'PROMPT' in env: p = env['PROMPT'] if callable(p): p = p() p = format_prompt(p) else: p = "set '$PROMPT = ...' $ " self.settitle() return p
def test_format_prompt_with_invalid_func(): def p(): foo = bar # raises exception return '{user}' assert_is_instance(partial_format_prompt(p), str) assert_is_instance(format_prompt(p), str)
def test_format_prompt(): formatter_dict = {"a_string": "cat", "none": (lambda: None), "f": (lambda: "wakka")} cases = {"my {a_string}": "my cat", "my {none}{a_string}": "my cat", "{f} jawaka": "wakka jawaka"} for p, exp in cases.items(): obs = format_prompt(template=p, formatter_dict=formatter_dict) yield assert_equal, exp, obs