1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-01-24 05:40:05 +08:00
SpaceVim/bundle/verilog/test/run_test.vim
2022-04-15 20:36:45 +08:00

181 lines
5.7 KiB
VimL
Vendored

"-----------------------------------------------------------------------
" Global configurations
"-----------------------------------------------------------------------
" Configure custom syntax
let g:verilog_syntax_custom = {
\ 'spyglass' : [{
\ 'match_start' : '\/\/\s*spyglass\s\+disable_block\s\+\z(\(\w\|-\)\+\(\s\+\(\w\|-\)\+\)*\)',
\ 'match_end' : '\/\/\s*spyglass\s\+enable_block\s\+\z1',
\ 'syn_argument': 'transparent keepend',
\ }],
\ }
"-----------------------------------------------------------------------
" Syntax folding test
"-----------------------------------------------------------------------
function! RunTestFold()
let test_result=0
" Enable all syntax folding
let g:verilog_syntax_fold_lst="all"
set foldmethod=syntax
set noautochdir
" Open syntax fold test file in read-only mode
silent view test/folding.v
" Verify folding
let test_result=TestFold(0) || test_result
echo ''
" Test with "block_nested"
let g:verilog_syntax_fold_lst="all,block_nested"
silent view!
let test_result=TestFold(1) || test_result
echo ''
" Test with "block_named"
let g:verilog_syntax_fold_lst="all,block_named"
silent view!
let test_result=TestFold(2) || test_result
echo ''
" Check test results and exit accordingly
if test_result
cquit
else
qall!
endif
endfunction
"-----------------------------------------------------------------------
" Syntax indent test
"-----------------------------------------------------------------------
function! RunTestIndent()
let g:verilog_disable_indent_lst = "module,eos"
let test_result=0
" Open syntax indent test file
silent edit test/indent.sv
" Verify indent
let test_result=TestIndent() || test_result
echo ''
silent edit!
" Test again with 'ignorecase' enabled
setlocal ignorecase
let test_result=TestIndent() || test_result
echo ''
silent edit!
" Make file read-only to guarantee that vim quits with exit status 0
silent view!
" Check test results and exit accordingly
if test_result
cquit
else
qall!
endif
endfunction
"-----------------------------------------------------------------------
" Error format test
"-----------------------------------------------------------------------
function! RunTestEfm()
let test_result=0
set nomore "Disable pager to avoid issues with Travis
let g:verilog_efm_quickfix_clean = 1
for check_uvm in [0, 1]
if check_uvm
let g:verilog_efm_uvm_lst = 'all'
else
unlet! g:verilog_efm_uvm_lst
endif
let test_result = TestEfm('iverilog', 1, check_uvm) || test_result
let test_result = TestEfm('verilator', 1, check_uvm) || test_result
let test_result = TestEfm('verilator', 3, check_uvm) || test_result
let test_result = TestEfm('ncverilog', 1, check_uvm) || test_result
let test_result = TestEfm('ncverilog', 3, check_uvm) || test_result
let test_result = TestEfm('spyglass', 1, check_uvm) || test_result
endfor
" Check test results and exit accordingly
if test_result
cquit
else
qall!
endif
endfunction
"-----------------------------------------------------------------------
" Syntax test
"-----------------------------------------------------------------------
function! RunTestSyntax()
let test_result=0
set nomore "Disable pager to avoid issues with Travis
set foldmethod=syntax
set foldlevel=99
" Run syntax test for various folding configurations
let g:verilog_syntax_fold_lst=''
let test_result = TestSyntax('syntax.sv', g:verilog_syntax_fold_lst) || test_result
let g:verilog_syntax_fold_lst='all'
let test_result = TestSyntax('syntax.sv', g:verilog_syntax_fold_lst) || test_result
let g:verilog_syntax_fold_lst='all,block_nested'
let test_result = TestSyntax('syntax.sv', g:verilog_syntax_fold_lst) || test_result
let g:verilog_syntax_fold_lst='all,block_named'
let test_result = TestSyntax('syntax.sv', g:verilog_syntax_fold_lst) || test_result
let g:verilog_syntax_fold_lst='all,instance'
let test_result = TestSyntax('syntax.sv', g:verilog_syntax_fold_lst) || test_result
let g:verilog_syntax_fold_lst=''
let test_result = TestSyntax('folding.v', g:verilog_syntax_fold_lst) || test_result
let g:verilog_syntax_fold_lst='all'
let test_result = TestSyntax('folding.v', g:verilog_syntax_fold_lst) || test_result
let g:verilog_syntax_fold_lst='all,block_nested'
let test_result = TestSyntax('folding.v', g:verilog_syntax_fold_lst) || test_result
let g:verilog_syntax_fold_lst='all,block_named'
let test_result = TestSyntax('folding.v', g:verilog_syntax_fold_lst) || test_result
let g:verilog_syntax_fold_lst='all,instance'
let test_result = TestSyntax('folding.v', g:verilog_syntax_fold_lst) || test_result
let g:verilog_syntax_fold_lst=''
let test_result = TestSyntax('indent.sv', g:verilog_syntax_fold_lst) || test_result
let g:verilog_syntax_fold_lst='all'
let test_result = TestSyntax('indent.sv', g:verilog_syntax_fold_lst) || test_result
let g:verilog_syntax_fold_lst='all,block_nested'
let test_result = TestSyntax('indent.sv', g:verilog_syntax_fold_lst) || test_result
let g:verilog_syntax_fold_lst='all,block_named'
let test_result = TestSyntax('indent.sv', g:verilog_syntax_fold_lst) || test_result
let g:verilog_syntax_fold_lst='all,instance'
let test_result = TestSyntax('indent.sv', g:verilog_syntax_fold_lst) || test_result
" Check test results and exit accordingly
if test_result
cquit
else
qall!
endif
endfunction
" vi: set expandtab softtabstop=4 shiftwidth=4: