Для Sikulix App.close () на Mac закрывает приложение, но возвращает false. Это правильно? - PullRequest
0 голосов
/ 15 января 2019

Я создаю сценарий автоматизации SikuliX на Java и запутался в поведении метода .close(). Внутри класса Sikuli App метод close выглядит следующим образом:

  /**
   * tries to close the app defined by this App instance, waits max given seconds for the app to no longer be running
   *
   * @return this or null on failure
   */
  public boolean close(int waitTime) {
    if (!isRunning()) {
      log("App.close: not running: %s", this);
      return false;
    }
    if (_osUtil.close(this)) {
      int timeTowait = maxWait;
      if (waitTime > 0) {
        timeTowait = waitTime;
      }
      while (isRunning(0) && timeTowait > 0) {
        timeTowait--;
      }
    }
    if (!isValid()) {
      log("App.close: %s", this);
    } else {
      log("App.close: did not work: %s", this);
      return true;
    }
    return false;
  }

Речь идет о возвращении. Насколько я понимаю, поскольку он возвращает логическое значение, оно будет истинным, если закрытие было успешным, и ложным, если закрытие завершилось неудачно. Однако этот код делает противоположное. Исходя из моего неправильного (?) Понимания этой логики, я изначально написал свой код примерно так:

if (myApp.close()) {
    System.out.println("closed.");
    isAppClosed = true;
} else {
    System.out.println("NOT closed!");
    isAppClosed = false;
}

Это имеет противоположный результат, что я хочу, так как приложение успешно закрывается, НО тест не пройден, потому что печатается «НЕ закрыто».

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

Спасибо.

1 Ответ

0 голосов
/ 16 января 2019

Оказывается, это была ошибка. Сопровождающий проекта исправил проблему в последней сборке 1.1.4. https://bugs.launchpad.net/sikuli/+bug/1811938

...