2011-07-23 8 views
1

スタンドアロンのXULベースのJavaScriptアプリケーションのユニットテストにRhinoUnitを使用しようとしています。 build.xml - 多くの場合、RhinoUnitスクリプトへのパスが変更されています。これはデフォルトのディレクトリ以外のディレクトリに置くことをお勧めします(chrome/content/rhinoにRhinoUnitファイルを入れ、chrome/content/lintにJSLintファイルを入れます)。いくつかの瞬間には、しかし、私はこのエラーを持っている:RhinoUnitでJSLint JavaScriptコードで使用される属性を設定する

/<project-path>/build.xml:52: javax.script.ScriptException: 
sun.org.mozilla.javascript.internal.WrappedException: Wrapped 
java.io.FileNotFoundException: /<project-path>/jslint/fulljslint.js 
(No such file or directory) (<Unknown source>#31) in <Unknown source> 
at line number 31 

ありbuild.xmljslint/fulljslint.jsへの言及はありませんが、私はjslintant.jsでこのコードを発見した:

var jsLintPath = "jslint/fulljslint.js"; 
if (attributes.get("jslintpath")) { 
    jsLintPath = attributes.get("jslintpath"); 
} 

それは私には見えましたこのコードはデフォルト値を変数に設定してから、attributesオブジェクトの値を使用しようとします。私は、これらのスクリプトがスクリプトの外部に設定できると仮定しています。いくつか<atttribute />タグのbuild.xmlまたはいくつかの設定ファイル。

私の質問は、オブジェクトからどのように値を変更できますか?それは可能ですか?または、スクリプトからハードコードされた文字列を変更する必要がありますか?

答えて

1

これは考慮する可能性があります。

何が起こっているのかを把握する方法

あなたが直前にあなたが言及jsLintPath割り当てに、jslintant.jsファイルでこれを挿入した場合:構築RhinoUnitを実行し

echo = project.createTask("echo"); 
echo.setMessage(attributes); 
echo.perform(); 

、あなたが何かを見るべきです

run-js-lint: 
    [echo] {options={eqeqeq : false, white: true, plusplus : false, bitwise : ... }} 

あなたが欲しいものを行う方法:のような " options 'はjslintant scriptdefの属性として定義されています。 jslintpathの値を伝播するには、その値をscriptdefの属性として追加し、そのように定義されたタスクを使用するときに値を設定する必要があります。たとえば、次のビルドを再実行する場合は、あなたが表示されるはずです

<jslintant options="{eqeqeq : false, ... }" 
      jslintpath="your_path_here/fulljslint.js" /> 

run-js-lint: 
    [echo] {jslintpath=your_path_here/fulljslint.js, options={eqeqeq : false, ... }} 

そして、あなたが選んだ道を見つけるために使用されますが

<scriptdef name="jslintant" 
      src="jslint/jslintant.js" 
      language="javascript"> 
    <attribute name="options" /> 
    <attribute name="jslintpath" /> <!-- This line added. --> 
    <element name="fileset" type="fileset" /> 
</scriptdef> 

その後、タスクを使用しますfulljslint.js