Дженкинс сообщает об успехе, когда Scala терпит неудачу - PullRequest
2 голосов
/ 24 ноября 2011

Я только что экспериментировал с Дженкинсом и настраивал несколько проектов.Один из них, в частности, вызывает сценарий оболочки, и код выхода из этого сценария выбирается правильно, вызывая передачу / неудачу.Тем не менее, когда я вызываю Scala из командной строки, она пропускается независимо от того, что происходит.

В поле «Выполнить оболочка»:

/opt/scala/2.9.1/bin/scala sdfsdfsd
Exception in thread "main" java.lang.RuntimeException: 
Cannot figure out how to run target: sdfsdfsd
... (stack trace removed)
Finished: SUCCESS

Однако выполнение эквивалента с Java приводит к ошибке:

/opt/java/jdk1.7.0/bin/java sdfdfsd
Error: Could not find or load main class sdfdfsd
Finished: FAILURE

Оба они выдают код выхода 1 при запуске из bash (с echo $?)

Я что-то упустил или это ошибка?

РЕДАКТИРОВАТЬ:

Интересно, что я вижу то же поведение при использовании ant exec - когда я вызываю скрипт оболочки, содержащий неверный вызов scala, я получаю ожидаемый код ошибки, но через ant (с failonerror = 'true') яувидеть ноль и построить успешно.

Спасибо

1 Ответ

6 голосов
/ 24 ноября 2011

Это известная ошибка Scala ест код выхода при передаче по каналу stdin , исправленный в транке.

Чтобы исправить вашу систему, исправить это довольно просто, в сценарии $ SCALA_HOME / bin / scala, строка 25ish

function onExit() {
  if [[ "$saved_stty" != "" ]]; then
    restoreSttySettings
    exit $scala_exit_status
  fi
}

Переместить выход за пределы if:

function onExit() {
  if [[ "$saved_stty" != "" ]]; then
    restoreSttySettings
  fi
  exit $scala_exit_status
}

Это решит вашу проблему (на самом деле в ant также, но вы должны будете сделать то же самое для scalac).

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