小さな単位で行うテストテストのこと。小さな単位とは、たとえばメソッドである。
昨今はユニットテストを自動化するのが一般的になっている。
自動化すると、テスト実行の負担がほぼゼロになる。
(そのかわり、テスト自動化のコードを書くため、コードを書く量は大幅に増える。)
つまり気軽にテストを繰り返せる。ちょっと書いて気軽にテストできる。気軽に回帰テストができるので、細かくリリースができる。また、ユニットテストに通っているので、まあまあ安心してリリースができる。
使い捨てのちょっとした繰り返し作業は、レジスタにマクロを保存すると楽。
q{register}
で保存開始。q
で終了。@{regiser}
で呼び出し。
たとえば、.erbファイル編集中、コマンドを<%= %>で囲みたいとする。
qaI<%= <ESC>A %><ESC>q
でI<%= <ESC>A %><ESC>
をレジスタaに記録できる。
puts 123 puts 456
の1行目で@a
を入力すると、
<%= puts 123 %> puts 456
となる。2行目を囲むには、2行目でまた@a
としてもよいが、直前のマクロは@@
で再実行できる。少しだけ楽。なので2行目は@@
と入力。
<%= puts 123 %> <%= puts 456 %>
レジスタを使ったマクロは以上。
その場だけでなく、今後も使いたいマクロはにmapしたほうがいいかも。
nnoremap <leader>a I<%= <ESC>A %><ESC>
自分は上のように設定している。\a
で呼び出せる。
smartyのテンプレートファイルから、変数名のリストを抽出したかった。
${ と } で囲まれた変数名を、重複を省いてリストにしたい。一行に複数の変数名がある場合があることにも注意すべきだ。
たとえばこんなファイルがあるとする。
--code-- {$apple} --code--{$apple}--code--{$chocolate}--code--{$banana}--code-- --code--{$banana}--code--{$chocolate}--code--
これに埋め込まれている変数名を、
apple banana chocolate
のように抜き出したい。
とりあえずegrep '{\$.+}' sample.tpl
してみる。
{$apple} --code--{$apple}--code--{$chocolate}--code--{$banana}--code-- --code--{$banana}--code--{$chocolate}--code--
そうだね。行ごと出力されるね。-o(--only-matching)オプションで、マッチ部分のみ出力する。
$ egrep -o '{\$.+}' sample.tpl
{$apple} {$apple}--code--{$chocolate}--code--{$banana} {$banana}--code--{$chocolate}
greedy matchするね。?をつけてnon-greedy matchにする。
$ egrep -o '{\$.+?}' sample.tpl
{$apple} {$apple} {$chocolate} {$banana} {$banana} {$chocolate}
よし。これをソートしてユニークにする。
$ egrep -o '{\$.+?}' sample.tpl | sort | uniq
{$apple} {$banana} {$chocolate}
まあオーケー。でも、{$ と } がないほうがいい。
$ egrep -o '{\$(.+?)}' tes.txt | sort | uniq | sed 's/{\$//' | sed 's/}//'
apple banana chocolate
よし。
でももっといい方法がいくらでもあるはずだ。
2016/8/25追記: これでも可能。
$ egrep -o '{\$.+?}' tes.txt | sort | uniq | tr -d '${}'