11"""sqlite3 CLI tests.""" 
2- import  re 
32import  sqlite3 
3+ import  textwrap 
44import  unittest 
55
66from  sqlite3 .__main__  import  main  as  cli 
@@ -214,12 +214,14 @@ def setUpClass(cls):
214214            raise  unittest .SkipTest ("libedit readline is not supported" )
215215
216216    def  test_keyword_completion (self ):
217-         script  =  "from sqlite3.__main__ import main; main()" 
217+         script  =  textwrap .dedent (""" 
218+             import readline 
219+             readline.parse_and_bind("set colored-completion-prefix off") 
220+             from sqlite3.__main__ import main; main() 
221+         """ )
218222        # List candidates starting with 'S', there should be multiple matches. 
219223        input  =  b"S\t \t EL\t  1;\n .quit\n " 
220-         output  =  run_pty (script , input , env = {"NO_COLOR" : "1" })
221-         # Remove control sequences that colorize typed prefix 'S' 
222-         output  =  re .sub (rb"\x1b\[[0-9;]*[mK]" , b"" , output )
224+         output  =  run_pty (script , input )
223225        self .assertIn (b"SELECT" , output )
224226        self .assertIn (b"SET" , output )
225227        self .assertIn (b"SAVEPOINT" , output )
@@ -228,23 +230,28 @@ def test_keyword_completion(self):
228230        # Keywords are completed in upper case for even lower case user input 
229231        input  =  b"sel\t \t  1;\n .quit\n " 
230232        output  =  run_pty (script , input )
231-         output  =  re .sub (rb"\x1b\[[0-9;]*[mK]" , b"" , output )
232233        self .assertIn (b"SELECT" , output )
233234        self .assertIn (b"(1,)" , output )
234235
235236    def  test_nothing_to_complete (self ):
236-         script  =  "from sqlite3.__main__ import main; main()" 
237+         script  =  textwrap .dedent (""" 
238+             import readline 
239+             readline.parse_and_bind("set colored-completion-prefix off") 
240+             from sqlite3.__main__ import main; main() 
241+         """ )
237242        input  =  b"zzzz\t ;\n .quit\n " 
238243        output  =  run_pty (script , input , env = {"NO_COLOR" : "1" })
239-         output  =  re .sub (rb"\x1b\[[0-9;]*[mK]" , b"" , output )
240244        for  keyword  in  KEYWORDS :
241245            self .assertNotRegex (output , rf"\b{ keyword }  .encode ("utf-8" ))
242246
243247    def  test_completion_order (self ):
244-         script  =  "from sqlite3.__main__ import main; main()" 
248+         script  =  textwrap .dedent (""" 
249+             import readline 
250+             readline.parse_and_bind("set colored-completion-prefix off") 
251+             from sqlite3.__main__ import main; main() 
252+         """ )
245253        input  =  b"S\t ;\n .quit\n " 
246254        output  =  run_pty (script , input , env = {"NO_COLOR" : "1" })
247-         output  =  re .sub (rb"\x1b\[[0-9;]*[mK]" , b"" , output ).strip ()
248255        savepoint_idx  =  output .find (b"SAVEPOINT" )
249256        select_idx  =  output .find (b"SELECT" )
250257        set_idx  =  output .find (b"SET" )
0 commit comments