Exemplo n.º 1
0
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))
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
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))
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
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)', ''])
Exemplo n.º 6
0
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)', ''])
Exemplo n.º 7
0
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)', ''])
Exemplo n.º 8
0
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))
Exemplo n.º 9
0
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))
Exemplo n.º 10
0
 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))
Exemplo n.º 11
0
 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))
Exemplo n.º 12
0
 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
Exemplo n.º 13
0
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
Exemplo n.º 14
0
 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
Exemplo n.º 15
0
 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))
Exemplo n.º 16
0
 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))
Exemplo n.º 17
0
 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))
Exemplo n.º 18
0
 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))
Exemplo n.º 19
0
 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())
Exemplo n.º 20
0
 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
Exemplo n.º 21
0
 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
Exemplo n.º 22
0
 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
Exemplo n.º 23
0
 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
Exemplo n.º 24
0
 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
Exemplo n.º 25
0
 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
Exemplo n.º 26
0
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)
Exemplo n.º 27
0
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