Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

Vim の "make test" を読み解く 第 4 回 (単体 new-style-testing の実行)

$
0
0

今回は、単体の new-style-testing のファイルが実行されるときの手順を見ていきます。以下は test_*.vim のテストを実行して、結果ファイルの test_*.res を作成するターゲットとルールです。

src/testdir/Makefile
.vim.res:@echo"$(VIMPROG)">vimcmd@echo"$(RUN_VIMTEST)">>vimcmd$(RUN_VIMTEST)$(NO_INITS)-Sruntest.vim$*.vim$(REDIR_TEST_TO_NULL)@rmvimcmd

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
  1. $VIMRUNTIMEを現在のリポジトリのものに設定
  2. -f (GUI のみ?) fork せず foreground で実行
  3. -u unix.vim unix.vim を vimrc ファイルとして読み込む
  4. -U NONE gvimrc の読み込みをスキップする
  5. --nopluginプラグインを読み込まない
  6. --not-a-term後述するように標準出力を /dev/null に捨てているが、その警告を出さない
  7. -S runtest.vimファイルを読み込んだ後に runtest.vim を読み込む (sourceする、実行する)
  8. test_assert.vim Vimに読み込ませるファイルの指定、テストの場合このファイルにテストの実行内容が記述してある
  9. --cmd 'au SwapExists * let v:swapchoice = "e"'スワップファイルが存在していても無視してファイルを編集するための自動コマンドの設定
  10. > /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 回はここまで。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>