今回は、単体の new-style-testing のファイルが実行されるときの手順を見ていきます。以下は test_*.vim のテストを実行して、結果ファイルの test_*.res を作成するターゲットとルールです。
src/testdir/Makefile
.vim.res:
@echo "$(VIMPROG)" > vimcmd
@echo "$(RUN_VIMTEST)" >> vimcmd
$(RUN_VIMTEST) $(NO_INITS) -S runtest.vim $*.vim $(REDIR_TEST_TO_NULL)
@rm vimcmd
vimcmd
というファイルでは、Vim のバイナリ名や実行時のオプションを一時的に覚えておいて、テスト側から参照できるようにしているみたいです。shared.vim から参照していて、いくつかのファイルから source
されていました。テストが終わるたびに削除されます。
ルールの 3 行目が肝心のテスト実行箇所ですが、これだとちょっと分かりづらいので実際の実行時の値を見てみます。以下は test_assert.vim を実行しているときのプロンプトの例です。
VIMRUNTIME=../../runtime; export VIMRUNTIME; ../vim -f -u unix.vim -U NONE --noplugin --not-a-term -S runtest.vim test_assert.vim --cmd 'au SwapExists * let v:swapchoice = "e"' > /dev/null
-
$VIMRUNTIME
を現在のリポジトリのものに設定 -
-f
(GUI のみ?) fork せず foreground で実行 -
-u unix.vim
unix.vim を vimrc ファイルとして読み込む -
-U NONE
gvimrc の読み込みをスキップする -
--noplugin
プラグインを読み込まない -
--not-a-term
後述するように標準出力を /dev/null に捨てているが、その警告を出さない -
-S runtest.vim
ファイルを読み込んだ後に runtest.vim を読み込む (source
する、実行する) -
test_assert.vim
Vimに読み込ませるファイルの指定、テストの場合このファイルにテストの実行内容が記述してある -
--cmd 'au SwapExists * let v:swapchoice = "e"'
スワップファイルが存在していても無視してファイルを編集するための自動コマンドの設定 -
> /dev/null
標準出力を /dev/null に捨てる
要するに、test_assert.vim を普通のファイルとして開いて、その中に書いてあるテスト内容を runtest.vim で実行するという形になっています。runtest.vim の内容については次回以降に見ていきます。
unix.vim の内容は以下の通り。
- 'shell' を
sh
に設定 - $HOME を
g:tester_HOME
に覚えておく - setup.vim を
source
する
中で読み込まれている setup.vim の内容は以下の通り。
- 多重読み込みの抑止
- runtimepath と packpath をテスト用ディレクトリに設定
- 環境変数の変更
- $XAUTHORITY は実際のものを使用する
- $HISTFILE を空にする
- $HOME をテスト用ディレクトリに設定
第 4 回はここまで。