Fix crash on startup when terminal doesnt support colors
This commit is contained in:
@@ -83,6 +83,7 @@ def curses_session():
|
||||
# return from C start_color() is ignorable.
|
||||
try:
|
||||
curses.start_color()
|
||||
curses.use_default_colors()
|
||||
except:
|
||||
_logger.warning('Curses failed to initialize color support')
|
||||
|
||||
@@ -92,9 +93,6 @@ def curses_session():
|
||||
except:
|
||||
_logger.warning('Curses failed to initialize the cursor mode')
|
||||
|
||||
# Assign the terminal's default (background) color to code -1
|
||||
curses.use_default_colors()
|
||||
|
||||
yield stdscr
|
||||
|
||||
finally:
|
||||
|
||||
@@ -849,7 +849,7 @@ class Terminal(object):
|
||||
"""
|
||||
monochrome = (not curses.has_colors())
|
||||
|
||||
if theme is None:
|
||||
if theme is None or monochrome:
|
||||
theme = Theme(monochrome=monochrome)
|
||||
|
||||
theme.bind_curses()
|
||||
|
||||
@@ -596,3 +596,16 @@ def test_set_theme(terminal, stdscr):
|
||||
terminal.set_theme(theme=theme)
|
||||
assert terminal.theme.monochrome
|
||||
stdscr.bkgd.assert_called_once_with(' ', 0)
|
||||
|
||||
|
||||
def test_set_theme_no_colors(terminal, stdscr):
|
||||
|
||||
with mock.patch('curses.has_colors') as has_colors:
|
||||
has_colors.return_value = False
|
||||
|
||||
terminal.set_theme()
|
||||
assert terminal.theme.monochrome
|
||||
|
||||
theme = Theme(monochrome=False)
|
||||
terminal.set_theme(theme=theme)
|
||||
assert terminal.theme.monochrome
|
||||
|
||||
Reference in New Issue
Block a user