以下 3 点を忘れないようにメモ。
- ビルド環境構築方法
CFLAGS
へのワーニングフラグ追加- 一部のみテスト実行方法
- ターミナルの描画テスト実装方法
前提
- OS: Ubuntu 22.04
ビルド環境構築方法
ビルドパッケージ取得用に
deb-src
ソースを追加
後述の apt build-dep
を利用するために、
/etc/apt/sources.list
のコメントアウトされている
deb-src
を有効にする。
sed -i -e 's/^# deb-src /deb-src /' /etc/apt/sources.list
vim-gtk3 のビルドに必要なパッケージのインストール
apt build-dep
を利用し、Debian が vim-gtk3
のパッケージをビルドするために使っているパッケージをインストールする。
sudo apt build-dep vim-gtk3
CFLAGS
へのワーニングフラグ追加
CI では、以下のようにワーニングフラグの追加を行っているので、 Pull request を送るならローカルでもこれらフラグを追加してビルドすること。
テスト実行方法
全テスト実行
src
ディレクトリ内で make test
する。
cd src
make test
部分的なテスト実行
src/testdir
に test_*.vim
が複数あるので、ファイル名の拡張子を除いたものを make
に渡すと、その中のテストのみを実行できる。
cd src/testdir
make test_utf8
ターミナルの描画テスト実装方法
CUI の描画テストを行う場合には、Vim が提供している、ターミナル出力をダンプ・比較する仕組みを使う。
5. 画面ダンプの差分 - terminal - Vim日本語ドキュメント の「Vimの画面ダンプテストを書く」の通りにやればよい。
- ターミナルダンプの正解ファイルを生成する(最初は空ファイル)
src/testdir/dumps
に入れる
- 「1.」で作ったファイルを正解ファイルとして読み込むテストを実装する
- テストの実装は後述
- 「2.」で作ったテストを実行する
- テストが失敗して、失敗時のターミナルダンプが
src/testdir/failed
に出力される
- テストが失敗して、失敗時のターミナルダンプが
- 新しい vim
を立ち上げ、失敗時のターミナルダンプを読み込み、想定通りになっているかを確認
vim -u NONE -N
して:call term_dumpload("./failed/<「2.」で出力された失敗時のターミナルダンプ>")
- 「4.」の結果が想定通りであれば、失敗時のターミナルダンプで「1.」で作った正解ファイルを上書きする
cp failed/<「2.」で出力された失敗時のターミナルダンプ> dumps/<「1.」で作った空ファイル>
テスト実装
これも 5. 画面ダンプの差分 - terminal - Vim日本語ドキュメント の「Vimの画面ダンプテストを書く」の通りにやればよい。
例えば以下のように実装する。
func Test_setcellwidths_with_non_ambiwidth_character_dump()
CheckRunVimInTerminal
" テスト開始時の初期状態までもっていくためのスクリプトを定義
let lines =<< trim END
call setline(1, [repeat("\u279c", 60), repeat("\u279c", 60)])
set ambiwidth=single
END
call writefile(lines, 'XCellwidthsWithNonAmbiwidthCharacter', 'D')
" vim を開いてテスト開始時の初期状態までもっていく(`-S` は「Vim を起動した後に指定したファイルを Vim script として実行する」オプション)
let buf = RunVimInTerminal('-S XCellwidthsWithNonAmbiwidthCharacter', {'rows': 6, 'cols': 50})
" 初期状態から、「1.」で作った正解ファイルの状態になるまでの操作を実行
call term_sendkeys(buf, ":call setcellwidths([[0x279c, 0x279c, 1]])\<CR>")
call term_sendkeys(buf, ":echo\<CR>")
" 「1.」で作った正解ファイルと比較する。差分があった場合テストが失敗する。
call VerifyScreenDump(buf, 'Test_setcellwidths_with_non_ambiwidth_character_dump_1', {})
endfunc
参考資料
変更履歴
日付 | 内容 |
---|---|
2024/4/16 | 新規作成 |
2024/4/17 | CFLAGS
へのワーニングフラグ追加について追記 |
0 件のコメント:
コメントを投稿