Vimで編集中のテスト実行結果(nose)をプレビュー表示する+α
VimでPython + TDD な事をしていたらVimスクリプトが出来てたので公開します。
私のPC環境
他OSでの動作確認はしていません。。。
使用は自己責任で、ご自由に。
Vimからnoseを実行する
参考にしたページ
編集中のテストの実行結果をプレビュー表示します。
また、編集中のファイルがテストコードでなければ、test_<編集中のファイル名>に対してテストを実行します。
例)編集中のファイルが"hoge.py"の場合、"test_hoge.py"をカレント以下のディレクトリから探し、
:!nosetests -v test_hoge.py
を実行します。
注意
あくまでも テストコード 1ファイルの実行結果 です。
SCMにコミットする前に全体で nosetests -v もしておいた方がいい。
- .vimrcに以下を追加する。
"preview nosetests output function! Nosetest(args) range set previewheight=18 let src = expand("%") if src !~ "[Tt]est.*\.py$" let filepaths = split(src, "\\") let filepaths[-1] = "test_" . filepaths[-1] let src = expand("**/" . filepaths[-1]) endif let dst = "Nosetest Output" " open the preview window silent execute ":pedit! " . dst " change to preview window wincmd P " set options setlocal buftype=nofile setlocal noswapfile setlocal syntax=none setlocal bufhidden=delete " replace current buffer with nosetest's output silent execute ":%! nosetests " . a:args . " " . src . " 2>&1" " change back to the source buffer wincmd p set previewheight=12 endfunction "<F10>でnosetest -vを実行し、結果をプレビュー表示 map <silent> <F10> :call Nosetest("-v")<CR> "<S-F10>でプレビュー表示を閉じる map <silent> <S-F10> :silent exec ":pclose!"<CR> "<F11>でnosetest -v --with-gae を実行し、結果をプレビュー表示 map <silent> <F11> :call Nosetest("-v --with-gae")<CR>
コード下部に日本語コメントも書いてありますが、
- F10でnosetests -v
- F11でnosetests -v --with-gae
- Shift + F10でプレビュー表示を閉じる
が出来るようになります*1
おまけ1・vimでPythonスクリプトをそのまま実行する
参考にしたページ
参考ページと同じですが、
" <F5>でpython実行 function! s:Exec() exe "!" . &ft . " %" :endfunction command! Exec call <SID>Exec() map <silent> <F5> :call <SID>Exec()<CR>
*1:nose, nose-GAEは各自で入れてください