読者です 読者をやめる 読者になる 読者になる

Vim プラグインを Windows 環境でテストする

最近は専ら Vim script 向けテスティングフレームワーク themis.vim を作っているわけですが、テストを書いたら当然実行しないと意味がないわけです。
しかし手動でテストするのは面倒。そこで CI。設定しておけばリモートのリポジトリに push した時に自動でテストを走らせてくれます。
Linux 環境用の CI サービスはたくさんあるので、Travis CI なり drone.io なり自由に使えば良いと思います。便利。
しかし Vimマルチプラットフォーム。当然 Windows 環境でもテストしたいですよね。と言うわけで Windows 環境で CI できるサービスと、そこで themis.vim を使ってテストを走らせる設定例を紹介します。全部無料でできます。


と言うわけで CI サービス AppVeyor を使います。
Continuous Integration and Deployment service for Windows developers - Appveyor


AppVeyor は .NET 向けの CI サービスです。.NET と言うことは当然 Windows 環境。便利。

まずはアカウント登録。と言っても GitHub や BitBucket などのアカウントを持っていればそちらからログインできる。簡単便利。

次にテストを走らせたいプロジェクトを登録します。

GitHub 連携などが済んでいれば、リポジトリ一覧が出てくるのでそこから選ぶだけです。
登録できたら以下のような感じでテストを設定。

スクリプトは以下のような感じ。PowerShellスクリプトです。流れとしては、themis.vim を取得し、Vim 本体を香り屋さんのところからダウンロードし、テストを走らせます。古い Vim でテストしたかったらダウンロード元の URL をこの辺りから適当に変える感じで。

git clone --quiet https://github.com/thinca/vim-themis.git themis

$zip = $Env:APPVEYOR_BUILD_FOLDER + '\vim.zip'
$vim = $Env:APPVEYOR_BUILD_FOLDER + '\vim'

(New-Object Net.WebClient).DownloadFile('http://files.kaoriya.net/vim/vim74-kaoriya-win64.zip', $zip)

[Reflection.Assembly]::LoadWithPartialName('System.IO.Compression.FileSystem') > $null
[System.IO.Compression.ZipFile]::ExtractToDirectory($zip, $vim)

$Env:THEMIS_VIM = $vim + '\vim74-kaoriya-win64\vim.exe'

& $Env:THEMIS_VIM --version
.\themis\bin\themis.bat -r

更新: 香り屋さんの指摘でダウンロード元のURLをリダイレクトなしのものに差し替えました

最後に Save を忘れずに。
あとは実行すれば…

こんな感じで結果がでます!

https://ci.appveyor.com/project/thinca/vim-threes/build/3 (スクショだとでかくなるのでリンクで)

pull req に対するテストも走らせてくれます。とても便利。

Vim script 向けのテスティングフレームワークは数多くありますが、私の知る限りでは、コマンドラインから実行できてかつ Windows でも動く汎用のテスティングフレームワークは themis.vim だけだと思います。この辺りの事情も themis.vim を作った理由の一つです。
皆さんも、Windows でテスト、始めてみませんか?