Raise exceptions that are not intercepted when testing

Thus problems like in #1087 will result in build failure.
This commit is contained in:
ZyX 2014-09-21 15:52:58 +04:00
parent 345025ed60
commit c68eb56f7c
3 changed files with 43 additions and 14 deletions

View File

@ -15,6 +15,10 @@ from powerline.lib import mergedicts
from powerline.lib.encoding import get_preferred_output_encoding from powerline.lib.encoding import get_preferred_output_encoding
class NotInterceptedError(BaseException):
pass
def _config_loader_condition(path): def _config_loader_condition(path):
if path and os.path.isfile(path): if path and os.path.isfile(path):
return path return path

View File

@ -24,10 +24,11 @@ class RewriteResult(object):
class IPythonPowerline(Powerline): class IPythonPowerline(Powerline):
def init(self): def init(self, **kwargs):
super(IPythonPowerline, self).init( super(IPythonPowerline, self).init(
'ipython', 'ipython',
use_daemon_threads=True use_daemon_threads=True,
**kwargs
) )
def get_config_paths(self): def get_config_paths(self):

View File

@ -7,18 +7,42 @@ from __future__ import (unicode_literals, division, absolute_import, print_funct
import sys import sys
import os import os
import json import json
import logging
import tests.vim as vim_module import tests.vim as vim_module
from tests.lib import Args, urllib_read, replace_attr from tests.lib import Args, urllib_read, replace_attr
from tests import TestCase from tests import TestCase
from powerline import NotInterceptedError
from powerline.segments.common import wthr from powerline.segments.common import wthr
VBLOCK = chr(ord('V') - 0x40) VBLOCK = chr(ord('V') - 0x40)
SBLOCK = chr(ord('S') - 0x40) SBLOCK = chr(ord('S') - 0x40)
class FailingLogger(logging.Logger):
def exception(self, *args, **kwargs):
super(FailingLogger, self).exception(*args, **kwargs)
raise NotInterceptedError('Unexpected exception occurred')
def get_logger(stream=None):
log_format = '%(asctime)s:%(levelname)s:%(message)s'
formatter = logging.Formatter(log_format)
level = logging.WARNING
handler = logging.StreamHandler(stream)
handler.setLevel(level)
handler.setFormatter(formatter)
logger = FailingLogger('powerline')
logger.setLevel(level)
logger.addHandler(handler)
return logger
class TestVimConfig(TestCase): class TestVimConfig(TestCase):
def test_vim(self): def test_vim(self):
from powerline.vim import VimPowerline from powerline.vim import VimPowerline
@ -41,7 +65,7 @@ class TestVimConfig(TestCase):
i = 0 i = 0
with vim_module._with('split'): with vim_module._with('split'):
with VimPowerline() as powerline: with VimPowerline(logger=get_logger()) as powerline:
def check_output(mode, args, kwargs): def check_output(mode, args, kwargs):
if mode == 'nc': if mode == 'nc':
window = vim_module.windows[0] window = vim_module.windows[0]
@ -93,33 +117,33 @@ class TestConfig(TestCase):
reload(common) reload(common)
from powerline.shell import ShellPowerline from powerline.shell import ShellPowerline
with replace_attr(common, 'urllib_read', urllib_read): with replace_attr(common, 'urllib_read', urllib_read):
with ShellPowerline(Args(ext=['tmux']), run_once=False) as powerline: with ShellPowerline(Args(ext=['tmux']), logger=get_logger(), run_once=False) as powerline:
powerline.render() powerline.render()
with ShellPowerline(Args(ext=['tmux']), run_once=False) as powerline: with ShellPowerline(Args(ext=['tmux']), logger=get_logger(), run_once=False) as powerline:
powerline.render() powerline.render()
def test_zsh(self): def test_zsh(self):
from powerline.shell import ShellPowerline from powerline.shell import ShellPowerline
args = Args(last_pipe_status=[1, 0], jobnum=0, ext=['shell'], renderer_module='.zsh') args = Args(last_pipe_status=[1, 0], jobnum=0, ext=['shell'], renderer_module='.zsh')
segment_info = {'args': args} segment_info = {'args': args}
with ShellPowerline(args, run_once=False) as powerline: with ShellPowerline(args, logger=get_logger(), run_once=False) as powerline:
powerline.render(segment_info=segment_info) powerline.render(segment_info=segment_info)
with ShellPowerline(args, run_once=False) as powerline: with ShellPowerline(args, logger=get_logger(), run_once=False) as powerline:
powerline.render(segment_info=segment_info) powerline.render(segment_info=segment_info)
segment_info['local_theme'] = 'select' segment_info['local_theme'] = 'select'
with ShellPowerline(args, run_once=False) as powerline: with ShellPowerline(args, logger=get_logger(), run_once=False) as powerline:
powerline.render(segment_info=segment_info) powerline.render(segment_info=segment_info)
segment_info['local_theme'] = 'continuation' segment_info['local_theme'] = 'continuation'
segment_info['parser_state'] = 'if cmdsubst' segment_info['parser_state'] = 'if cmdsubst'
with ShellPowerline(args, run_once=False) as powerline: with ShellPowerline(args, logger=get_logger(), run_once=False) as powerline:
powerline.render(segment_info=segment_info) powerline.render(segment_info=segment_info)
def test_bash(self): def test_bash(self):
from powerline.shell import ShellPowerline from powerline.shell import ShellPowerline
args = Args(last_exit_code=1, jobnum=0, ext=['shell'], renderer_module='.bash', config={'ext': {'shell': {'theme': 'default_leftonly'}}}) args = Args(last_exit_code=1, jobnum=0, ext=['shell'], renderer_module='.bash', config={'ext': {'shell': {'theme': 'default_leftonly'}}})
with ShellPowerline(args, run_once=False) as powerline: with ShellPowerline(args, logger=get_logger(), run_once=False) as powerline:
powerline.render(segment_info={'args': args}) powerline.render(segment_info={'args': args})
with ShellPowerline(args, run_once=False) as powerline: with ShellPowerline(args, logger=get_logger(), run_once=False) as powerline:
powerline.render(segment_info={'args': args}) powerline.render(segment_info={'args': args})
def test_ipython(self): def test_ipython(self):
@ -132,11 +156,11 @@ class TestConfig(TestCase):
segment_info = Args(prompt_count=1) segment_info = Args(prompt_count=1)
with IpyPowerline() as powerline: with IpyPowerline(logger=get_logger()) as powerline:
for prompt_type in ['in', 'in2']: for prompt_type in ['in', 'in2']:
powerline.render(is_prompt=True, matcher_info=prompt_type, segment_info=segment_info) powerline.render(is_prompt=True, matcher_info=prompt_type, segment_info=segment_info)
powerline.render(is_prompt=True, matcher_info=prompt_type, segment_info=segment_info) powerline.render(is_prompt=True, matcher_info=prompt_type, segment_info=segment_info)
with IpyPowerline() as powerline: with IpyPowerline(logger=get_logger()) as powerline:
for prompt_type in ['out', 'rewrite']: for prompt_type in ['out', 'rewrite']:
powerline.render(is_prompt=False, matcher_info=prompt_type, segment_info=segment_info) powerline.render(is_prompt=False, matcher_info=prompt_type, segment_info=segment_info)
powerline.render(is_prompt=False, matcher_info=prompt_type, segment_info=segment_info) powerline.render(is_prompt=False, matcher_info=prompt_type, segment_info=segment_info)
@ -147,7 +171,7 @@ class TestConfig(TestCase):
reload(common) reload(common)
from powerline import Powerline from powerline import Powerline
with replace_attr(wthr, 'urllib_read', urllib_read): with replace_attr(wthr, 'urllib_read', urllib_read):
Powerline(ext='wm', renderer_module='pango_markup', run_once=True).render() Powerline(logger=get_logger(), ext='wm', renderer_module='pango_markup', run_once=True).render()
reload(common) reload(common)