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.
|
# return from C start_color() is ignorable.
|
||||||
try:
|
try:
|
||||||
curses.start_color()
|
curses.start_color()
|
||||||
|
curses.use_default_colors()
|
||||||
except:
|
except:
|
||||||
_logger.warning('Curses failed to initialize color support')
|
_logger.warning('Curses failed to initialize color support')
|
||||||
|
|
||||||
@@ -92,9 +93,6 @@ def curses_session():
|
|||||||
except:
|
except:
|
||||||
_logger.warning('Curses failed to initialize the cursor mode')
|
_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
|
yield stdscr
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
|
|||||||
@@ -849,7 +849,7 @@ class Terminal(object):
|
|||||||
"""
|
"""
|
||||||
monochrome = (not curses.has_colors())
|
monochrome = (not curses.has_colors())
|
||||||
|
|
||||||
if theme is None:
|
if theme is None or monochrome:
|
||||||
theme = Theme(monochrome=monochrome)
|
theme = Theme(monochrome=monochrome)
|
||||||
|
|
||||||
theme.bind_curses()
|
theme.bind_curses()
|
||||||
|
|||||||
@@ -596,3 +596,16 @@ def test_set_theme(terminal, stdscr):
|
|||||||
terminal.set_theme(theme=theme)
|
terminal.set_theme(theme=theme)
|
||||||
assert terminal.theme.monochrome
|
assert terminal.theme.monochrome
|
||||||
stdscr.bkgd.assert_called_once_with(' ', 0)
|
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