Ejemplo n.º 1
0
def test_format_prompt_with_broken_template():
    for p in ('{user', '{user}{hostname'):
        assert partial_format_prompt(p) == p

    # '{{user' will be parsed to '{user'
    for p in ('{{user}', '{{user'):
        assert 'user' in partial_format_prompt(p)
Ejemplo n.º 2
0
def test_format_prompt_with_broken_template():
    for p in ('{user', '{user}{hostname'):
        assert partial_format_prompt(p) == p

    # '{{user' will be parsed to '{user'
    for p in ('{{user}', '{{user'):
        assert 'user' in partial_format_prompt(p)
Ejemplo 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))
Ejemplo n.º 4
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))
Ejemplo n.º 5
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()
     #return super().prompt
     if self.need_more_lines:
         if self.mlprompt is None:
             try:
                 self.mlprompt = multiline_prompt(curr=self._current_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 = partial_format_prompt(p)
     except Exception:  # pylint: disable=broad-except
         print_exception()
     p = partial_color_format(p,
                              style=env.get('XONSH_COLOR_STYLE'),
                              hide=True)
     self._current_prompt = p
     self.settitle()
     return p
Ejemplo n.º 6
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)
Ejemplo n.º 7
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:
             try:
                 self.mlprompt = multiline_prompt(curr=self._current_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 = partial_format_prompt(p)
     except Exception:  # pylint: disable=broad-except
         print_exception()
     hide = True if self._force_hide is None else self._force_hide
     p = ansi_partial_color_format(p, style=env.get('XONSH_COLOR_STYLE'),
                                   hide=hide)
     self._current_prompt = p
     self.settitle()
     return p
Ejemplo 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 'user' in partial_format_prompt(p)
Ejemplo 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 'user' in partial_format_prompt(p)
Ejemplo n.º 10
0
 def prompt_tokens(self, cli):
     """Returns a list of (token, str) tuples for the current prompt."""
     p = builtins.__xonsh_env__.get('PROMPT')
     try:
         p = partial_format_prompt(p)
     except Exception:  # pylint: disable=broad-except
         print_exception()
     toks = partial_color_tokenize(p)
     self.settitle()
     return toks
Ejemplo n.º 11
0
 def prompt_tokens(self, cli):
     """Returns a list of (token, str) tuples for the current prompt."""
     p = builtins.__xonsh_env__.get('PROMPT')
     try:
         p = partial_format_prompt(p)
     except Exception:  # pylint: disable=broad-except
         print_exception()
     toks = partial_color_tokenize(p)
     self.settitle()
     return toks
Ejemplo n.º 12
0
 def rprompt_tokens(self, cli):
     """Returns a list of (token, str) tuples for the current right
     prompt.
     """
     p = builtins.__xonsh_env__.get('RIGHT_PROMPT')
     if len(p) == 0:
         return []
     try:
         p = partial_format_prompt(p)
     except Exception:  # pylint: disable=broad-except
         print_exception()
     toks = partial_color_tokenize(p)
     return toks
Ejemplo n.º 13
0
 def rprompt_tokens(self, cli):
     """Returns a list of (token, str) tuples for the current right
     prompt.
     """
     p = builtins.__xonsh_env__.get('RIGHT_PROMPT')
     if len(p) == 0:
         return []
     try:
         p = partial_format_prompt(p)
     except Exception:  # pylint: disable=broad-except
         print_exception()
     toks = partial_color_tokenize(p)
     return toks
Ejemplo n.º 14
0
 def rprompt_tokens(self, cli):
     """Returns a list of (token, str) tuples for the current right
     prompt.
     """
     p = builtins.__xonsh_env__.get('RIGHT_PROMPT')
     # partial_format_prompt does handle empty strings properly,
     # but this avoids descending into it in the common case of
     # $RIGHT_PROMPT == ''.
     if isinstance(p, str) and len(p) == 0:
         return []
     try:
         p = partial_format_prompt(p)
     except Exception:  # pylint: disable=broad-except
         print_exception()
     toks = partial_color_tokenize(p)
     return toks
Ejemplo n.º 15
0
 def rprompt_tokens(self, cli):
     """Returns a list of (token, str) tuples for the current right
     prompt.
     """
     p = builtins.__xonsh_env__.get('RIGHT_PROMPT')
     # partial_format_prompt does handle empty strings properly,
     # but this avoids descending into it in the common case of
     # $RIGHT_PROMPT == ''.
     if isinstance(p, str) and len(p) == 0:
         return []
     try:
         p = partial_format_prompt(p)
     except Exception:  # pylint: disable=broad-except
         print_exception()
     toks = partial_color_tokenize(p)
     return toks
Ejemplo n.º 16
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
    for p, exp in cases.items():
        obs = partial_format_prompt(template=p, formatter_dict=formatter_dict)
        yield assert_equal, exp, obs
Ejemplo n.º 17
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
    for p, exp in cases.items():
        obs = partial_format_prompt(template=p, formatter_dict=formatter_dict)
        yield assert_equal, exp, obs
Ejemplo n.º 18
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 = partial_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())
Ejemplo n.º 19
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 = partial_format_prompt(p)
     except Exception:  # pylint: disable=broad-except
         print_exception()
     self.settitle()
     return p
Ejemplo 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 = partial_format_prompt(p)
     except Exception:  # pylint: disable=broad-except
         print_exception()
     self.settitle()
     return p
Ejemplo n.º 21
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 and not ON_WINDOWS) or term in ['dumb', 'eterm-color',
                                                      'linux']:
         return
     t = env.get('TITLE')
     if t is None:
         return
     t = partial_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())
Ejemplo n.º 22
0
 def settitle(self):
     """Sets terminal title."""
     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 and not ON_WINDOWS) or term in ['dumb', 'eterm-color',
                                                      'linux']:
         return
     t = env.get('TITLE')
     if t is None:
         return
     t = partial_format_prompt(t)
     if ON_WINDOWS and 'ANSICON' not in env:
         t = escape_windows_cmd_string(t)
         os.system('title {}'.format(t))
     else:
         with open(1, 'wb', closefd=False) as f:
             # prevent xonsh from answering interative questions
             # on the next command by writing the title
             f.write("\x1b]2;{0}\x07".format(t).encode())
             f.flush()
Ejemplo n.º 23
0
 def settitle(self):
     """Sets terminal title."""
     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 and not ON_WINDOWS) or term in [
             'dumb', 'eterm-color', 'linux'
     ]:
         return
     t = env.get('TITLE')
     if t is None:
         return
     t = partial_format_prompt(t)
     if ON_WINDOWS and 'ANSICON' not in env:
         t = escape_windows_cmd_string(t)
         os.system('title {}'.format(t))
     else:
         with open(1, 'wb', closefd=False) as f:
             # prevent xonsh from answering interative questions
             # on the next command by writing the title
             f.write("\x1b]0;{0}\x07".format(t).encode())
             f.flush()
Ejemplo n.º 24
0
def test_format_prompt_with_format_spec(inp, exp, formatter_dict):
    obs = partial_format_prompt(template=inp, formatter_dict=formatter_dict)
    assert exp == obs
Ejemplo n.º 25
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)
Ejemplo n.º 26
0
def test_format_prompt_with_format_spec(inp, exp, formatter_dict):
    obs = partial_format_prompt(template=inp, formatter_dict=formatter_dict)
    assert exp == obs