← Back to team overview

sikuli-driver team mailing list archive

[Bug 1811938] Re: [1.1.4] App::close(): should return true if success, false in other cases --- fixed 2019-01-16 build#186

 

** Changed in: sikuli
       Status: Fix Committed => Fix Released

** Changed in: sikuli
    Milestone: 1.1.4 => 2.0.0

-- 
You received this bug notification because you are a member of Sikuli
Drivers, which is subscribed to Sikuli.
https://bugs.launchpad.net/bugs/1811938

Title:
  [1.1.4] App::close(): should return true if success, false in other
  cases --- fixed 2019-01-16 build#186

Status in Sikuli:
  Fix Released

Bug description:
  I am building a SikuliX automation script in Java and confused about
  the expected results of the .close() method. Inside of Sikuli's App
  class, the close method is as follows:

    /**
     * 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;
    }

  The part in question for me is the return. My understanding is that,
  since it returns a boolean, it would be true if the close was a
  success, and false if the close failed. However, this code does the
  opposite. Based on my flawed(?) understanding of this logic, I
  initially wrote my code like so,

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

  This is having the opposite result of what I want, as the application
  is successfully closing, BUT the test is failing because "NOT closed"
  is being printed.

  Have I found a bug, or am I missing something?

  Thanks.

  I cross-posted on Stackoverflow here:
  https://stackoverflow.com/q/54201161/185967

To manage notifications about this bug go to:
https://bugs.launchpad.net/sikuli/+bug/1811938/+subscriptions


References