Как мне выполнить или выполнить задачу муравья, основываясь на результатах работы jar-файла? - PullRequest
3 голосов
/ 25 мая 2009

Я использую CrossCheck (модульное тестирование js без браузера) как часть скрипта ant. Я хотел бы, чтобы муравей сообщил об ошибке, если тесты CrossCheck не пройдены. Вот соответствующий бит из build.xml

<target name="test" depends="concat">
    <java jar="src/test/lib/crosscheck.jar" fork="true">
        <arg value="src/test/webapp/js/"/>
    </java>

И пример сообщения об ошибках CrossCheck:

 [java] Running tests in environment: Mozilla 1.7 (Firefox 1.0)
 [java] org.mozilla.javascript.EcmaError: ReferenceError: "clusterNode" is not defined. (ResultXMLWrapperTest.js#22)
 [java]     at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3229)
 [java]     at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3219)
 [java]     at org.mozilla.javascript.ScriptRuntime.notFoundError(ScriptRuntime.java:3292)
 [java]     at org.mozilla.javascript.ScriptRuntime.nameOrFunction(ScriptRuntime.java:1636)
 [java]     at org.mozilla.javascript.ScriptRuntime.name(ScriptRuntime.java:1575)
 [java]     at org.mozilla.javascript.gen.c1._c1(ResultXMLWrapperTest.js:22)
 [java]     at org.mozilla.javascript.gen.c1.call(ResultXMLWrapperTest.js)
 [java]     at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:340)
 [java]     at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2758)
 [java]     at org.mozilla.javascript.gen.c1.call(ResultXMLWrapperTest.js)
 [java]     at net.thefrontside.crosscheck.framework.AbstractScopeFactory$1.run(AbstractScopeFactory.java:108)
 [java]     at org.mozilla.javascript.Context.call(Context.java:515)
 [java]     at org.mozilla.javascript.Context.call(Context.java:450)
 [java]     at net.thefrontside.crosscheck.framework.AbstractScopeFactory.initTestScope(AbstractScopeFactory.java:94)
 [java]     at net.thefrontside.crosscheck.framework.DefaultScopeFactory.getTestScope(DefaultScopeFactory.java:68)
 [java]     at net.thefrontside.crosscheck.framework.TestCase$1.run(TestCase.java:119)
 [java]     at org.mozilla.javascript.Context.call(Context.java:528)
 [java]     at org.mozilla.javascript.Context.call(Context.java:450)
 [java]     at net.thefrontside.crosscheck.framework.TestCase.run(TestCase.java:117)
 [java]     at net.thefrontside.crosscheck.framework.TestSuite.run(TestSuite.java:95)
 [java]     at net.thefrontside.crosscheck.framework.Crosscheck.runAll(Crosscheck.java:116)
 [java]     at net.thefrontside.crosscheck.framework.ConsoleRunner.run(ConsoleRunner.java:140)
 [java]     at net.thefrontside.crosscheck.framework.ConsoleRunner.main(ConsoleRunner.java:300)
 [java] ReferenceError: "clusterNode" is not defined. (ResultXMLWrapperTest.js#22)
 [java] Java Result: 1

Может ли ant получить результаты теста CrossCheck (возможно, Java Result: 1 возвращается обратно в ant?) И успешно или неудачно на основании этого?

Ответы [ 2 ]

14 голосов
/ 25 мая 2009

Предполагая, что CrossCheck возвращает ненулевой код возврата при ошибке, вы можете добавить атрибут failonerror в задачу java:

<target name="test" depends="concat">
    <java jar="src/test/lib/crosscheck.jar" fork="true" failonerror="true">
        <arg value="src/test/webapp/js/"/>
    </java>

См. Документацию по Ant Java-задаче .

1 голос
/ 25 мая 2009

Вы можете использовать атрибут failonerror задачи java.

failonerror Остановить процесс сборки, если команда завершается с кодом возврата кроме 0. По умолчанию "false" (см. Примечание)

Проверьте руководство Муравья здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...