ert.el が素敵 その参

どもども。
ert.el が素敵ですね。

デフォルトディレクトリ問題

ディレクトリAで,ert でテストをしながら開発。
んで,別プロジェクトのディレクトリBで作業。
といった場合に発生する問題というか,はまったのでメモる。

  • M-x ert-delete-all-tests で登録しているテストを全部削除。

登録テストの削除は,M-x ert-delete-test で1つづつ削除も可能。補完は効くけど面倒。

  • M-x ert [RET] t [RET]


と,この2つで大丈夫だと思っていたのですが,テストでファイルを使用し,
かつ,相対パスで指定している場合には,問題が発生。
「*ert*」バッファ内では,ディレクトリAで作業していたときに
テストを実行したディレクトリが,デフォルトディレクトリになったまんま。
なので,プロジェクトBで作業してテストを実行する場合には,
「*ert*」バッファにて,M-x cd ディレクトリBのテストディレクトリ を
する必要がございます。


改めて考えてみるとなんのこたーないのですが,はまったのでね。
何か設定もしくは,専用の変数とかがあると思ったけど。
ま−,できたら,そのへんは自動で認識して欲しいなぁ。
なんかありそうだけど,見つけられてない感がもっそいするんですけど。


あー,そうか。こないだ書いた my-run-ert-test-maybe を修正すればいいのか。
うーん,試したけどだめだ。

  • (ert "some-test") したあとには,*ert* にいる。
    • その後に,(cd dir) しても,後の祭り。
    • 1回目のテストはこけるけど,2回目以降はデフォルトディレクトリが変わっ
    • ているので大丈夫。
  • (ert "some-test") する前に,(cd dir) してもしょうがない。


む。ヘルプによると,

ert is an alias for `ert-run-tests-interactively' in `ert.el'.

(ert SELECTOR &optional OUTPUT-BUFFER-NAME MESSAGE-FN)

と,optional で,バッファを指定することができるのか。
なら,これでできそうもないことないけど,
should normally be nil らしいので避けた方がよさそうだ。


あとは,before なアドバイスか。
しかし,すでに *ert* バッファにいて,
デフォルトディレクトリが変わってしまっているのに,
どうやって cd するのら?
前いたウィンドウ->バッファ->デフォルトディレクトリ?


ん? あれ?
変数 default-directory はバッファローカルなので,
1回でも cd でデフォルトディレクトリを設定すれば,
ert もそのディレクトリを見るようになる?

おっと。時間切れだ。相方さんの家へ,本当の意味の掃除屋として
出向かなければならんのだ。もうちょっとで解決できそうだったのに〜。