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

vimtest修正記録-実行コマンドやassertのサンプル追加

vim

vimtestについてはこちらVim scriptのテストを行うvimtestプラグインを書いた - ぼっち勉強会
モチベーション維持と振り返りのための記録

  • 実行コマンドVimTestRunの追加
  • 直接打てるassertとverifyの追加

リポジトリにはまだあがっていない。

実行コマンドVimTestRunの追加

これまでは以下のように最後にvimtest#run()と書いた上でsourceしないといけなかった。
(実際は、自分はquickrunで実行してた)

let s:testcase = vimtest#new()
function! s:testcase.sum()
  call self.assert.equals(3, 1 + 2)
endfunction

call vimtest#run()

最初は別にquickrun使ってるしいいやと思ったけど、
だんだんとcall vimtest#run()と書くこと自体がメンドイしナンセンスじゃないかと思い始めた。
ので、ちゃんと実行コマンドを作る。

今のところ書いているサンプルでは、

let s:testcase = vimtest#new()
function! s:testcase.sum()
  call self.assert.equals(3, 1 + 2)
endfunction

この状態から「:VimTestRun」とコマンド実行するとテストが走る。

  • TODO
    • メッセージはechoで出しているけど、出力先を切り替えるられるようにしたい。echo、専用バッファ、ファイルとか
    • エラー対象のテストへジャンプできるようにしたい
    • ディレクトリ指定で動くようにしたい(優先度低)

直接打てるassertとverifyの追加

必要かどうか分からないけどサンプル書いた。

let s:a = 1
let s:b = 2
call vimtest#assert(s:a == s:b)

assertの引数に1(true)以外が来ると例外を投げる。

例外は出さずメッセージだけ出力する場合はverifyを使う

let s:a = 1
let s:b = 2
call vimtest#verify(s:a == s:b)
  • TODO
    • vimtest#assertって文字が多い。さらっとassertしたいだけなのにタイプ数多いのはどうだろう
    • ほんとは構文的に「VimTestAssert s:a == s:b」って書きたかったけど、スクリプトスコープを内側で参照できなかったので諦めた
      • どこかでスクリプトスコープの参照方法を読んだような気もするけど、あんまりやらない方がいいんだろうな
    • 出力先を切り替えられるようにしたい
    • 今の出力結果は引数をそのまま出しているだけだが、それだとあんま嬉しくない気がする

どういう設計にしていくか

悩ましい。
「使いやすい」を第一にしたいけど、使いやすさって何だろうと迷ったり。人によって違いもあるだろうしなぁ。