]> granicus.if.org Git - vim/commitdiff
patch 8.2.1912: with Python 3.9 some tests fail v8.2.1912
authorBram Moolenaar <Bram@vim.org>
Tue, 27 Oct 2020 18:59:10 +0000 (19:59 +0100)
committerBram Moolenaar <Bram@vim.org>
Tue, 27 Oct 2020 18:59:10 +0000 (19:59 +0100)
Problem:    With Python 3.9 some tests fail.
Solution:   Take into account the different error message. (James McCoy,
            closes #7210)

src/testdir/test_python3.vim
src/version.c

index 1bdb4c171980ce54f71034ac85a9f62fe04fb2cd..f05fc0702448a95d73b109d88c1921b9a23c6f9a 100644 (file)
@@ -23,6 +23,7 @@ func Test_AAA_python3_setup()
 
     py33_type_error_pattern = re.compile('^__call__\(\) takes (\d+) positional argument but (\d+) were given$')
     py37_exception_repr = re.compile(r'([^\(\),])(\)+)$')
+    py39_type_error_pattern = re.compile('\w+\.([^(]+\(\) takes)')
 
     def emsg(ei):
       return ei[0].__name__ + ':' + repr(ei[1].args)
@@ -56,6 +57,8 @@ func Test_AAA_python3_setup()
                         oldmsg2 = '''"Can't convert 'int' object to str implicitly"'''
                         if msg.find(newmsg2) > -1:
                             msg = msg.replace(newmsg2, oldmsg2)
+                        # Python 3.9 reports errors like "vim.command() takes ..." instead of "command() takes ..."
+                        msg = py39_type_error_pattern.sub(r'\1', msg)
                 elif sys.version_info >= (3, 5) and e.__class__ is ValueError and str(e) == 'embedded null byte':
                     msg = repr((TypeError, TypeError('expected bytes with no null')))
                 else:
@@ -3812,7 +3815,16 @@ func Test_python3_errors()
     vim.current.xxx = True:(<class 'AttributeError'>, AttributeError('xxx',))
   END
 
-  call assert_equal(expected, getline(2, '$'))
+  let actual = getline(2, '$')
+  let n_expected = len(expected)
+  let n_actual = len(actual)
+  call assert_equal(n_expected, n_actual, 'number of lines to compare')
+
+  " Compare line by line so the errors are easier to understand.  Missing lines
+  " are compared with an empty string.
+  for i in range(n_expected > n_actual ? n_expected : n_actual)
+    call assert_equal(i >= n_expected ? '' : expected[i], i >= n_actual ? '' : actual[i])
+  endfor
   close!
 endfunc
 
index 21370004a4c8edfc5f120623b70abc267c5fbc11..adef583b9192acad31489862a57929a021481049 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1912,
 /**/
     1911,
 /**/