ert のテストには fundamental-mode の syntax table が使われる
nodejs-repl.el のテストを el-expectations から ert-expectations に移行したらテストにコケるようになったのでメモです。
ELISP> (replace-regexp-in-string "\\s-*$" "" "a\nb")
"a\nb"
ですが、例えば、次のようなテストを書くと結果は Failed になります。
(ert-deftest test ()
(should (equal (replace-regexp-in-string "\\s-*$" "" "a\nb") "a\nb")))
これはテストが fundamental-mode で評価されるからです。
cf. https://github.com/emacs-mirror/emacs/blob/emacs-24.5/lisp/emacs-lisp/ert.el#L790-L802
よって、syntax table に依存するコードをテストする時は注意が必要です。
余談ですが、上記の正規表現は末尾の whitespace を取り除くことを意図したものであり、”\s-\’” と書かなければいけないし、\n も取り除く対象のつもりだったので syntax table に依存せず “[ \t\r\n]\’” と書くのが良さそうです。