緑と赤は正義!

どもです。
エアコンから水が垂れてくるという悪夢もこれで3度目くらい。
前面カバーを開けてドレンパンを確認しようとするも,
このエアコンの前面カバーを開けるのは無理じゃね? という結論に至って,
ゴミ袋とバケツでその場をしのいでいます。
エアコンいらないくらいの時期になったら修理を頼もうかというすごいダメっぷり。
てーかさードレンパンって何よ? drain panのことじゃね? だったらドレインパンだろうなぁ。
drain panを最初にドレンパンって言ったヤツの罪は重いぞ。

google test最強説

ぶっちゃけ他のunit test frameworkを使ったことがないし,他のframeworkが本気出してないだけかも。
けどgoogle testも「私の戦闘力は53万です」とか「私にはあと2回変身が残されています」とか
「私はまだ卍解していません」とか言いはじめて,インフレがはじまる・・・んなこたーない。


業務で使ったりする場合にはありえないかもしれませんが,
私の場合はC++の勉強していて使うくらいなので,emacs内で全部実行できたらうれしいということで,
コンパイルコマンドで,

g++ -Wall -Wextra -g tmp.cc -o tmp -lgtest -L/usr/local/lib && ./tmp

と指定して実行。その結果の一例がこれ。

テストが失敗したときには,該当箇所に飛べるように結果を出力してくれるやさしいgoogle testさんですが,
色に納得できない・・・。いやほんますんません。いたいいたいっ。ほんますんません。もう言いませんから。
ほんまにほんまに。これっきりにしますから。


しかし私は知っている。オプションで,--gtest_color=yesを与えれば色つきで出力してくれることを。
そしてこうなる。

・・・。まあそらそうですわ。シェルから実行する場合はOKだけど・・。
ソースちょっと見たら,エスケープシーケンスいけそうなら色つきで出力している感じ。
どこをいじるか? gtest側でなんちゃらPrinterっていうイベントリスナー作る?
いやいやemacs側でなんとかしないとまずいよな−,ということでググル。
ほいで解決策。

(require 'ansi-color)
(defun my-colorize-compilation-filter-hook-func ()
  (toggle-read-only -1)
  (ansi-color-apply-on-region (point-min) (point-max))
  (toggle-read-only 1))

(add-hook 'compilation-filter-hook 'my-colorize-compilation-filter-hook-func)
;; for removal
;;(remove-hook 'compilation-filter-hook 'my-colorize-compilation-filter-hook-func)

んでこうなる。いえぃいえぃいえぃ!

ちなみにansi-color.elは最初から入っていました。(NTEmacs23.2)

おまけ

初めて知ったのですが,オプション--gtest_filterを使うと実行するテストを選べて非常に便利。
ドキュメントはこの辺。
http://code.google.com/p/googletest/wiki/AdvancedGuide#Selecting_Tests

さっきの例の続きとして一例を挙げると,

g++ -Wall -Wextra -g tmp.cc -o tmp -lgtest -L/usr/local/lib && ./tmp --gtest_color=yes --gtest_filter='SomeTest.doSomething'

で,テストケースSomeTestのテストdoSomethingだけを実行。ワイルドカードも少しいける。
上で挙げたドキュメントに例が載っているので詳細はそちらで。