Hatena::Groupmoz-addon

Ci.nsIZIGOROu

2008-06-17

xpcshell の Components.stack.filename が相対パスな件

| 18:07 |  xpcshell の Components.stack.filename が相対パスな件 - Ci.nsIZIGOROu を含むブックマーク はてなブックマーク -  xpcshell の Components.stack.filename が相対パスな件 - Ci.nsIZIGOROu

タイトル通りで引くんだけど、これ結果的に環境変数で渡すしか方法が無さそう。実際問題、Writing xpcshell-based unit tests - Mozilla | MDN のように xpcshell ベーステストツールがあるんですが、head.js の 136行目付近で、

function do_import_script(topsrcdirRelativePath) {
  var scriptPath = environment["TOPSRCDIR"];
  if (scriptPath.charAt(scriptPath.length - 1) != "/")
    scriptPath += "/";
  scriptPath += topsrcdirRelativePath;

  load(scriptPath);
}

とあるように TOPSRCDIR 環境変数依存してる。

$ /bin/sh
$ export NATIVE_TOPSRCDIR="c:\path\to\top\srcdir"
$ export TOPSRCDIR="c:/path/to/top/srcdir"
$ cd dist/bin
$ ./run-mozilla.sh ./xpcshell -f path/to/top/srcdir/tools/test-harness/xpcshell-simple/head.js \
    -f test_foo.js \
    -f path/to/top/srcdir/tools/test-harness/xpcshell-simple/tail.js
    -f path/to/top/srcdir/tools/test-harness/xpcshell-simple/execute_test.js
...failure or success messages are printed to the console...
Writing xpcshell-based unit tests
みたいな感じの設定が無いと相対的にファイルをxpcshellのload関数で読めない訳だったりする訳です。 見たかんじだと Makefile なりテストの実行用のシェルスクリプト環境に合わせて書かないと行けなさそうなのでちょっと萎えだけど、head.js には色々見所があるので、実際に MozTAP を使ってみて、MozTAP に無くて、この head.js にある機能は少しずつ移植しようかなと思う。