summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-07-09 18:49:23 +0200
committerBram Moolenaar <Bram@vim.org>2020-07-09 18:49:23 +0200
commite4358906fdbd0b2df1889dad49c79a9c8cee5ac4 (patch)
treeef636a35fd2c4388b6dffa25d86009188a448334
parent96916ac67ad9ed5d79ce87b099f9d01aa4c13745 (diff)
patch 8.2.1165: insufficient testing for the Tcl interfacev8.2.1165
Problem: Insufficient testing for the Tcl interface. Solution: Add more tests. (Yegappan Lakshmanan, closes #6423)
-rw-r--r--src/testdir/test_tcl.vim57
-rw-r--r--src/version.c2
2 files changed, 57 insertions, 2 deletions
diff --git a/src/testdir/test_tcl.vim b/src/testdir/test_tcl.vim
index 7045fc24cb..d6b03eba6f 100644
--- a/src/testdir/test_tcl.vim
+++ b/src/testdir/test_tcl.vim
@@ -23,6 +23,13 @@ func Test_tcldo()
call setline(1, ['one', 'two', 'three'])
tcldo ::vim::command new
call assert_equal(wincount + 1, winnr('$'))
+
+ " Try to run a command in a 'nomodifiable' buffer
+ call setline(1, ['one', 'two', 'three'])
+ set nomodifiable
+ call assert_fails('tcldo set line "abc"', 'cannot save undo information')
+ set modifiable
+
%bwipe!
endfunc
@@ -91,6 +98,9 @@ func Test_vim_buffer()
\ 'expected integer but got "x"')
call assert_fails('tcl ::vim::buffer list x',
\ 'wrong # args: should be "::vim::buffer list "')
+ " Invalid buffer command
+ call assert_fails('tcl $::vim::current(buffer) abcd',
+ \ 'bad option "abcd":')
tcl rename eachbuf ""
%bwipe!
@@ -176,6 +186,8 @@ func Test_vim_window_list()
call assert_fails('tcl ::vim::window x', 'unknown option')
call assert_fails('tcl ::vim::window list x',
\ 'wrong # args: should be "::vim::window option"')
+ call assert_fails('tcl $::vim::current(window) abcd',
+ \ 'bad option "abcd":')
%bwipe
endfunc
@@ -248,6 +260,19 @@ func Test_window_cursor()
tcl $win cursor $here(row) $here(column)
call assert_equal([0, 2, 3, 0], getpos('.'))
+ " Invalid values for the row and column
+ tcl array set pos {1 2}
+ call assert_fails('tcl $win cursor pos', "can't read \"pos(row)\":")
+ tcl array set pos {row '' abc 2}
+ call assert_fails('tcl $win cursor pos', "expected integer but got \"''\"")
+ tcl array set pos {row 1 abc 2}
+ call assert_fails('tcl $win cursor pos', "can't read \"pos(column)\":")
+ tcl array set pos {row 1 column ''}
+ call assert_fails('tcl $win cursor pos', "expected integer but got \"''\"")
+
+ call assert_fails("tcl $win cursor '' 2", "expected integer but got \"''\"")
+ call assert_fails("tcl $win cursor 1 ''", "expected integer but got \"''\"")
+
call assert_fails('tcl $win cursor 1 1 1', 'wrong # args:')
tcl unset win here
@@ -351,6 +376,7 @@ func Test_window_delcmd()
call assert_equal('window deleted', TclEval('set msg'))
call assert_fails('tcl $::vim::current(window) delcmd', 'wrong # args')
+ call assert_fails('tcl $::vim::current(window) delcmd x x', 'wrong # args')
tcl unset msg
bwipe
@@ -417,6 +443,14 @@ func Test_buffer_delete()
call assert_fails('tcl $::vim::current(buffer) delete', 'wrong # args:')
call assert_fails('tcl $::vim::current(buffer) delete 1 2 3', 'wrong # args:')
+ call assert_fails('tcl $::vim::current(buffer) delete 1 abc',
+ \ 'expected integer but got "abc"')
+
+ " Try to delete lines from an 'nomodifiable' buffer
+ set nomodifiable
+ call assert_fails('tcl $::vim::current(buffer) delete 2 1',
+ \ 'cannot save undo information')
+ set modifiable
bwipe!
endfunc
@@ -458,6 +492,12 @@ func Test_buffer_append()
call assert_fails('tcl $buf append', 'wrong # args:')
call assert_fails('tcl $buf append 1 x x', 'wrong # args:')
+ " Try to append lines to a 'nomodifiable' buffer
+ set nomodifiable
+ call assert_fails('tcl $buf append 1 "first"',
+ \ 'cannot save undo information')
+ set modifiable
+
tcl unset buf
bwipe!
endfunc
@@ -485,6 +525,18 @@ func Test_buffer_set()
call assert_fails('tcl $::vim::current(buffer) set 6 "x"', 'line number out of range')
call assert_fails('tcl $::vim::current(buffer) set', 'wrong # args:')
+ call assert_fails('tcl $::vim::current(buffer) set 1 2 {[list "a" "b"]}',
+ \ 'list element in quotes followed by "]" instead of space')
+
+ " Try to modify a 'nomodifiable' buffer
+ set nomodifiable
+ call assert_fails('tcl $::vim::current(buffer) set 1 "x"',
+ \ 'cannot save undo information')
+ call assert_fails('tcl $::vim::current(buffer) set 1 {a b}',
+ \ 'cannot save undo information')
+ call assert_fails('tcl $::vim::current(buffer) set 1 2 {a b}',
+ \ 'cannot save undo information')
+ set modifiable
bwipe!
endfunc
@@ -514,6 +566,7 @@ func Test_buffer_get()
call assert_fails('tcl $buf get 0 1', 'line number out of range')
call assert_fails('tcl $::vim::current(buffer) get x', 'expected integer but got "x"')
+ call assert_fails('tcl $::vim::current(buffer) get 1 x', 'expected integer but got "x"')
call assert_fails('tcl $::vim::current(buffer) get 1 1 1', 'wrong # args:')
tcl unset buf
@@ -592,8 +645,8 @@ func Test_buffer_delcmd()
q
call assert_equal('buffer deleted', TclEval('set msg'))
- call assert_fails('tcl $::vim::current(window) delcmd', 'wrong # args')
- call assert_fails('tcl $::vim::current(window) delcmd x x', 'wrong # args')
+ call assert_fails('tcl $::vim::current(buffer) delcmd', 'wrong # args')
+ call assert_fails('tcl $::vim::current(buffer) delcmd x x', 'wrong # args')
tcl unset msg
%bwipe
diff --git a/src/version.c b/src/version.c
index f3e023f972..06f3f27caa 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1165,
+/**/
1164,
/**/
1163,