summaryrefslogtreecommitdiff
path: root/src/testdir
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-09-03 22:35:40 +0200
committerBram Moolenaar <Bram@vim.org>2016-09-03 22:35:40 +0200
commitdac1947bb366ef43cd6da95acc730554e76d8b84 (patch)
treed6959ff23939dfa6e68f8618694efb617c59f2e3 /src/testdir
parentdda933d06c06c2792bd686d059f6ad19191ad30b (diff)
downloadvim-git-dac1947bb366ef43cd6da95acc730554e76d8b84.tar.gz
patch 7.4.2321v7.4.2321
Problem: When a test is commented out we forget about it. Solution: Let a test throw an exception with "Skipped" and list skipped test functions. (Christian Brabandt)
Diffstat (limited to 'src/testdir')
-rw-r--r--src/testdir/Makefile2
-rw-r--r--src/testdir/README.txt5
-rw-r--r--src/testdir/runtest.vim9
-rw-r--r--src/testdir/test_popup.vim24
4 files changed, 28 insertions, 12 deletions
diff --git a/src/testdir/Makefile b/src/testdir/Makefile
index 2153039d5..08f11cd1c 100644
--- a/src/testdir/Makefile
+++ b/src/testdir/Makefile
@@ -121,7 +121,7 @@ nolog:
RUN_VIMTEST = VIMRUNTIME=$(SCRIPTSOURCE); export VIMRUNTIME; $(VALGRIND) $(VIMPROG) -f $(GUI_FLAG) -u unix.vim $(NO_PLUGIN)
newtests: newtestssilent
- @/bin/sh -c "if test -f messages && grep -q 'FAILED' messages; then cat messages && cat test.log; fi"
+ @/bin/sh -c "if test -f messages && grep -q 'SKIPPED\|FAILED' messages; then cat messages && if test -f test.log; then cat test.log; fi ; fi"
newtestssilent: $(NEW_TESTS)
diff --git a/src/testdir/README.txt b/src/testdir/README.txt
index 3b2e101c8..640c61d1b 100644
--- a/src/testdir/README.txt
+++ b/src/testdir/README.txt
@@ -20,7 +20,7 @@ TO ADD A NEW STYLE TEST:
4) Also add an entry in src/Makefile.
What you can use (see test_assert.vim for an example):
-- Call assert_equal(), assert_true() and assert_false().
+- Call assert_equal(), assert_true(), assert_false(), etc.
- Use try/catch to check for exceptions.
- Use alloc_fail() to have memory allocation fail. This makes it possible
to check memory allocation failures are handled gracefully. You need to
@@ -29,6 +29,9 @@ What you can use (see test_assert.vim for an example):
- Use disable_char_avail_for_testing(1) if char_avail() must return FALSE for
a while. E.g. to trigger the CursorMovedI autocommand event.
See test_cursor_func.vim for an example
+- If the bug that is being tested isn't fixed yet, you can throw an exception
+ so that it's clear this still needs work. E.g.:
+ throw "Skipped: Bug with <c-e> and popupmenu not fixed yet"
- See the start of runtest.vim for more help.
diff --git a/src/testdir/runtest.vim b/src/testdir/runtest.vim
index 2660d93e8..19f1c5fb1 100644
--- a/src/testdir/runtest.vim
+++ b/src/testdir/runtest.vim
@@ -96,6 +96,9 @@ function RunTheTest(test)
let s:done += 1
try
exe 'call ' . a:test
+ catch /^\cskipped/
+ call add(s:messages, ' Skipped')
+ call add(s:skipped, 'SKIPPED ' . a:test . ': ' . substitute(v:exception, '^\S*\s\+', '', ''))
catch
call add(v:errors, 'Caught exception in ' . a:test . ': ' . v:exception . ' @ ' . v:throwpoint)
endtry
@@ -127,6 +130,7 @@ let s:done = 0
let s:fail = 0
let s:errors = []
let s:messages = []
+let s:skipped = []
if expand('%') =~ 'test_viml.vim'
" this test has intentional s:errors, don't use try/catch.
source %
@@ -200,7 +204,10 @@ if s:fail > 0
call extend(s:messages, s:errors)
endif
-" Append messages to "messages"
+" Add SKIPPED messages
+call extend(s:messages, s:skipped)
+
+" Append messages to the file "messages"
split messages
call append(line('$'), '')
call append(line('$'), 'From ' . g:testname . ':')
diff --git a/src/testdir/test_popup.vim b/src/testdir/test_popup.vim
index 34a2251ab..dd949334c 100644
--- a/src/testdir/test_popup.vim
+++ b/src/testdir/test_popup.vim
@@ -16,6 +16,21 @@ func! ListMonths()
return ''
endfunc
+func! Test_popup_complete2()
+ " Insert match immediately, if there is only one match
+ " <c-e> Should select a character from the line below
+ " TODO: test disabled because the code change has been reverted.
+ throw "Skipped: Bug with <c-e> and popupmenu not fixed yet"
+ new
+ inoremap <f5> <c-r>=ListMonths()<cr>
+ call append(1, ["December2015"])
+ :1
+ call feedkeys("aD\<f5>\<C-E>\<C-E>\<C-E>\<C-E>\<enter>\<esc>", 'tx')
+ call assert_equal(["December2015", "", "December2015"], getline(1,3))
+ %d
+ bw!
+endfu
+
func! Test_popup_complete()
new
inoremap <f5> <c-r>=ListMonths()<cr>
@@ -168,15 +183,6 @@ func! Test_popup_complete()
call assert_equal(["December2015", "December2015", ""], getline(1,3))
%d
- " Insert match immediately, if there is only one match
- " <c-e> Should select a character from the line below
- " TODO: test disabled because the code change has been reverted.
- " call append(1, ["December2015"])
- " :1
- " call feedkeys("aD\<f5>\<C-E>\<C-E>\<C-E>\<C-E>\<enter>\<esc>", 'tx')
- " call assert_equal(["December2015", "", "December2015"], getline(1,3))
- " %d
-
" use menuone for 'completeopt'
" Since for the first <c-y> the menu is still shown, will only select
" three letters from the line above