Vim 本体のテストに関する記事ってあんまりないような気がしたので。理解できた部分を少しずつ追記していきます。大変に地味な記事になる予感。面白そうなトピックがあれば教えてください。
OS は Linux で、以下の設定で実行した場合を想定しています。
$ ./configure --with-features=huge --enable-fail-if-missing--prefix=$HOME
make test
:help testing
を見てみると分かるように、その他大勢のアプリケーションと同様に Vim にもテストが存在していて、make test
で実行することができます。また、src/Makefileには以下のような記述があります。
# 4. "make test" {{{1
# This is optional. This will run Vim scripts on a number of test
# files, and compare the produced output with the expected output.
# If all is well, you will get the "ALL DONE" message in the end. If a
# test fails you get "TEST FAILURE". See below (search for "/^test").
日本語訳
このステップは任意です。これはたくさんのテストファイル上で Vim script を実行し、生成された出力と期待される出力を比較します。すべてが正常だった場合、"ALL DONE" というメッセージが最後に表示されます。もしテストが失敗した場合は "TEST FAILURE" が表示されます。("/^test" で検索して) 下のほうを参照してください。
2018/02/18 現在 (tag: v8.1.0946) では、"ALL DONE" は実際には最後ではなく途中に表示されます。これは次の章で説明しますが、もともとあった Vim 本体のテストに対して unit test と libvterm のテストが後から追加されたためではないかと推測します。libvterm に関しては以下のサイトが参考になります。
https://qiita.com/mattn/items/5aed718a65d21ca7855c
Makefile
make test
(もしくはmake check
) でテストを実行すると、
- scripttests
- unittests
- test_libvterm
の 3 つが実行されることが分かります。
# TESTING
#
# Execute the test scripts and the unittests.
test check:scripttests unittests test_libvterm
先に種明かしをしてしまうと、scripttests は Vim 本体の機能のテスト、unittests は Vim の内部に存在する関数のユニットテスト、test_libvterm は上述の libvterm に関するテストです。
とりあえず、第 1 回はここまで。