@@ -3047,6 +3047,42 @@ def test_set_term(self):
30473047 self .assertIs (curses .set_term (a ), b ) # returns the previous one
30483048 self .assertIs (curses .set_term (b ), a )
30493049
3050+ def test_set_term_refreshes_lines_cols_colors (self ):
3051+ s1 = self .make_pty ()
3052+ s2 = self .make_pty ()
3053+ a = curses .newterm ('xterm' , s1 , s1 )
3054+ if hasattr (curses , 'start_color' ):
3055+ try :
3056+ curses .start_color ()
3057+ except curses .error :
3058+ pass
3059+ b = curses .newterm ('xterm-256color' , s2 , s2 )
3060+ if hasattr (curses , 'start_color' ):
3061+ try :
3062+ curses .start_color ()
3063+ except curses .error :
3064+ pass
3065+
3066+ curses .set_term (a )
3067+ lines_a , cols_a = curses .LINES , curses .COLS
3068+ colors_a = getattr (curses , 'COLORS' , None )
3069+
3070+ curses .set_term (b )
3071+ lines_b , cols_b = curses .LINES , curses .COLS
3072+ colors_b = getattr (curses , 'COLORS' , None )
3073+
3074+ self .assertEqual (curses .set_term (a ), b )
3075+ self .assertEqual (curses .LINES , lines_a )
3076+ self .assertEqual (curses .COLS , cols_a )
3077+ if colors_a is not None :
3078+ self .assertEqual (curses .COLORS , colors_a )
3079+
3080+ self .assertEqual (curses .set_term (b ), a )
3081+ self .assertEqual (curses .LINES , lines_b )
3082+ self .assertEqual (curses .COLS , cols_b )
3083+ if colors_b is not None :
3084+ self .assertEqual (curses .COLORS , colors_b )
3085+
30503086 def test_window_keeps_screen_alive (self ):
30513087 # The standard window keeps its screen alive; dropping every other
30523088 # reference and collecting must not invalidate the window.
0 commit comments