appium-ios-simulator 5.1.2 → 5.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## [5.1.3](https://github.com/appium/appium-ios-simulator/compare/v5.1.2...v5.1.3) (2023-07-28)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * Exclude empty entries from the list of system bundle identifiers ([#369](https://github.com/appium/appium-ios-simulator/issues/369)) ([698f4e5](https://github.com/appium/appium-ios-simulator/commit/698f4e5ee82112868c6d286c6f2255f529160f10))
7
+
1
8
  ## [5.1.2](https://github.com/appium/appium-ios-simulator/compare/v5.1.1...v5.1.2) (2023-07-21)
2
9
 
3
10
 
@@ -20,26 +20,24 @@ class SimulatorXcode15 extends _simulatorXcode.default {
20
20
  const appsRoot = _path.default.resolve(_lodash.default.trim(await this.simctl.getEnv('IPHONE_SIMULATOR_ROOT')), 'Applications');
21
21
  const fetchBundleId = async appRoot => {
22
22
  const infoPlistPath = _path.default.resolve(appRoot, 'Info.plist');
23
- if (!(await _support.fs.exists(infoPlistPath))) {
24
- return '';
23
+ try {
24
+ const {
25
+ stdout
26
+ } = await (0, _teen_process.exec)('/usr/libexec/PlistBuddy', ['-c', 'print CFBundleIdentifier', infoPlistPath]);
27
+ return _lodash.default.trim(stdout);
28
+ } catch (ign) {
29
+ return null;
25
30
  }
26
- const {
27
- stdout
28
- } = await (0, _teen_process.exec)('/usr/libexec/PlistBuddy', ['-c', 'print CFBundleIdentifier', infoPlistPath]);
29
- return _lodash.default.trim(stdout);
30
31
  };
31
32
  const allApps = (await _support.fs.readdir(appsRoot)).filter(x => x.endsWith('.app')).map(x => _path.default.join(appsRoot, x));
32
- this._systemAppBundleIds = new Set(await _bluebird.default.all(allApps.map(fetchBundleId)));
33
+ this._systemAppBundleIds = new Set(await _bluebird.default.all(allApps.map(fetchBundleId).filter(Boolean)));
33
34
  return this._systemAppBundleIds;
34
35
  }
35
36
  async isAppInstalled(bundleId) {
36
37
  try {
37
38
  const appContainer = await this.simctl.getAppContainer(bundleId);
38
- if (!appContainer.endsWith('.app')) {
39
- return false;
40
- }
41
- return await _support.fs.exists(appContainer);
42
- } catch (err) {
39
+ return appContainer.endsWith('.app') && (await _support.fs.exists(appContainer));
40
+ } catch (ign) {
43
41
  return (await this._fetchSystemAppBundleIds()).has(bundleId);
44
42
  }
45
43
  }
@@ -49,4 +47,4 @@ class SimulatorXcode15 extends _simulatorXcode.default {
49
47
  }
50
48
  var _default = SimulatorXcode15;
51
49
  exports.default = _default;
52
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3VwcG9ydCIsInJlcXVpcmUiLCJfdGVlbl9wcm9jZXNzIiwiX3BhdGgiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2xvZGFzaCIsIl9ibHVlYmlyZCIsIl9zaW11bGF0b3JYY29kZSIsIlNpbXVsYXRvclhjb2RlMTUiLCJTaW11bGF0b3JYY29kZTE0IiwiX2ZldGNoU3lzdGVtQXBwQnVuZGxlSWRzIiwiX3N5c3RlbUFwcEJ1bmRsZUlkcyIsImFwcHNSb290IiwicGF0aCIsInJlc29sdmUiLCJfIiwidHJpbSIsInNpbWN0bCIsImdldEVudiIsImZldGNoQnVuZGxlSWQiLCJhcHBSb290IiwiaW5mb1BsaXN0UGF0aCIsImZzIiwiZXhpc3RzIiwic3Rkb3V0IiwiZXhlYyIsImFsbEFwcHMiLCJyZWFkZGlyIiwiZmlsdGVyIiwieCIsImVuZHNXaXRoIiwibWFwIiwiam9pbiIsIlNldCIsIkIiLCJhbGwiLCJpc0FwcEluc3RhbGxlZCIsImJ1bmRsZUlkIiwiYXBwQ29udGFpbmVyIiwiZ2V0QXBwQ29udGFpbmVyIiwiZXJyIiwiaGFzIiwiZ2V0TGF1bmNoRGFlbW9uc1Jvb3QiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vbGliL3NpbXVsYXRvci14Y29kZS0xNS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmcyB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCBTaW11bGF0b3JYY29kZTE0IGZyb20gJy4vc2ltdWxhdG9yLXhjb2RlLTE0JztcblxuY2xhc3MgU2ltdWxhdG9yWGNvZGUxNSBleHRlbmRzIFNpbXVsYXRvclhjb2RlMTQge1xuICAvKipcbiAgICogQ29sbGVjdHMgYW5kIGNhY2hlcyBidW5kbGUgaW5kZXRpZmllciBvZiBzeXN0ZW0gU2ltdWxhdG9yIGFwcHNcbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8U2V0PHN0cmluZz4+fVxuICAgKi9cbiAgYXN5bmMgX2ZldGNoU3lzdGVtQXBwQnVuZGxlSWRzICgpIHtcbiAgICBpZiAodGhpcy5fc3lzdGVtQXBwQnVuZGxlSWRzKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3lzdGVtQXBwQnVuZGxlSWRzO1xuICAgIH1cblxuICAgIGNvbnN0IGFwcHNSb290ID0gcGF0aC5yZXNvbHZlKF8udHJpbShhd2FpdCB0aGlzLnNpbWN0bC5nZXRFbnYoJ0lQSE9ORV9TSU1VTEFUT1JfUk9PVCcpKSwgJ0FwcGxpY2F0aW9ucycpO1xuICAgIGNvbnN0IGZldGNoQnVuZGxlSWQgPSBhc3luYyAoYXBwUm9vdCkgPT4ge1xuICAgICAgY29uc3QgaW5mb1BsaXN0UGF0aCA9IHBhdGgucmVzb2x2ZShhcHBSb290LCAnSW5mby5wbGlzdCcpO1xuICAgICAgaWYgKCEoYXdhaXQgZnMuZXhpc3RzKGluZm9QbGlzdFBhdGgpKSkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWMoJy91c3IvbGliZXhlYy9QbGlzdEJ1ZGR5JywgW1xuICAgICAgICAnLWMnLCAncHJpbnQgQ0ZCdW5kbGVJZGVudGlmaWVyJywgaW5mb1BsaXN0UGF0aFxuICAgICAgXSk7XG4gICAgICByZXR1cm4gXy50cmltKHN0ZG91dCk7XG4gICAgfTtcbiAgICBjb25zdCBhbGxBcHBzID0gKGF3YWl0IGZzLnJlYWRkaXIoYXBwc1Jvb3QpKVxuICAgICAgLmZpbHRlcigoeCkgPT4geC5lbmRzV2l0aCgnLmFwcCcpKVxuICAgICAgLm1hcCgoeCkgPT4gcGF0aC5qb2luKGFwcHNSb290LCB4KSk7XG4gICAgdGhpcy5fc3lzdGVtQXBwQnVuZGxlSWRzID0gbmV3IFNldChhd2FpdCBCLmFsbChhbGxBcHBzLm1hcChmZXRjaEJ1bmRsZUlkKSkpO1xuICAgIHJldHVybiB0aGlzLl9zeXN0ZW1BcHBCdW5kbGVJZHM7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZ5IHdoZXRoZXIgdGhlIHBhcnRpY3VsYXIgYXBwbGljYXRpb24gaXMgaW5zdGFsbGVkIG9uIFNpbXVsYXRvci5cbiAgICogQG92ZXJyaWRlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBidW5kbGVJZCAtIFRoZSBidW5kbGUgaWQgb2YgdGhlIGFwcGxpY2F0aW9uIHRvIGJlIGNoZWNrZWQuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8Ym9vbGVhbj59IFRydWUgaWYgdGhlIGdpdmVuIGFwcGxpY2F0aW9uIGlzIGluc3RhbGxlZC5cbiAgICovXG4gIGFzeW5jIGlzQXBwSW5zdGFsbGVkIChidW5kbGVJZCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhcHBDb250YWluZXIgPSBhd2FpdCB0aGlzLnNpbWN0bC5nZXRBcHBDb250YWluZXIoYnVuZGxlSWQpO1xuICAgICAgaWYgKCFhcHBDb250YWluZXIuZW5kc1dpdGgoJy5hcHAnKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXdhaXQgZnMuZXhpc3RzKGFwcENvbnRhaW5lcik7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBnZXRfYXBwX2NvbnRhaW5lciBzdWJjb21tYW5kIGZhaWxzIGZvciBzeXN0ZW0gYXBwbGljYXRpb25zLFxuICAgICAgLy8gYXMgd2VsbCBhcyB0aGUgaGlkZGVuIGFwcGluZm8gY29tbWFuZFxuICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLl9mZXRjaFN5c3RlbUFwcEJ1bmRsZUlkcygpKS5oYXMoYnVuZGxlSWQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIGFzeW5jIGdldExhdW5jaERhZW1vbnNSb290ICgpIHtcbiAgICByZXR1cm4gcGF0aC5yZXNvbHZlKFxuICAgICAgXy50cmltKGF3YWl0IHRoaXMuc2ltY3RsLmdldEVudignSVBIT05FX1NJTVVMQVRPUl9ST09UJykpLFxuICAgICAgJ1N5c3RlbS9MaWJyYXJ5L0xhdW5jaERhZW1vbnMnXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTaW11bGF0b3JYY29kZTE1O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLGFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUQsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFLLFNBQUEsR0FBQUYsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFNLGVBQUEsR0FBQUgsc0JBQUEsQ0FBQUgsT0FBQTtBQUVBLE1BQU1PLGdCQUFnQixTQUFTQyx1QkFBZ0IsQ0FBQztFQU05QyxNQUFNQyx3QkFBd0JBLENBQUEsRUFBSTtJQUNoQyxJQUFJLElBQUksQ0FBQ0MsbUJBQW1CLEVBQUU7TUFDNUIsT0FBTyxJQUFJLENBQUNBLG1CQUFtQjtJQUNqQztJQUVBLE1BQU1DLFFBQVEsR0FBR0MsYUFBSSxDQUFDQyxPQUFPLENBQUNDLGVBQUMsQ0FBQ0MsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDQyxNQUFNLENBQUNDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDO0lBQ3hHLE1BQU1DLGFBQWEsR0FBRyxNQUFPQyxPQUFPLElBQUs7TUFDdkMsTUFBTUMsYUFBYSxHQUFHUixhQUFJLENBQUNDLE9BQU8sQ0FBQ00sT0FBTyxFQUFFLFlBQVksQ0FBQztNQUN6RCxJQUFJLEVBQUUsTUFBTUUsV0FBRSxDQUFDQyxNQUFNLENBQUNGLGFBQWEsQ0FBQyxDQUFDLEVBQUU7UUFDckMsT0FBTyxFQUFFO01BQ1g7TUFDQSxNQUFNO1FBQUNHO01BQU0sQ0FBQyxHQUFHLE1BQU0sSUFBQUMsa0JBQUksRUFBQyx5QkFBeUIsRUFBRSxDQUNyRCxJQUFJLEVBQUUsMEJBQTBCLEVBQUVKLGFBQWEsQ0FDaEQsQ0FBQztNQUNGLE9BQU9OLGVBQUMsQ0FBQ0MsSUFBSSxDQUFDUSxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUNELE1BQU1FLE9BQU8sR0FBRyxDQUFDLE1BQU1KLFdBQUUsQ0FBQ0ssT0FBTyxDQUFDZixRQUFRLENBQUMsRUFDeENnQixNQUFNLENBQUVDLENBQUMsSUFBS0EsQ0FBQyxDQUFDQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FDakNDLEdBQUcsQ0FBRUYsQ0FBQyxJQUFLaEIsYUFBSSxDQUFDbUIsSUFBSSxDQUFDcEIsUUFBUSxFQUFFaUIsQ0FBQyxDQUFDLENBQUM7SUFDckMsSUFBSSxDQUFDbEIsbUJBQW1CLEdBQUcsSUFBSXNCLEdBQUcsQ0FBQyxNQUFNQyxpQkFBQyxDQUFDQyxHQUFHLENBQUNULE9BQU8sQ0FBQ0ssR0FBRyxDQUFDWixhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQzNFLE9BQU8sSUFBSSxDQUFDUixtQkFBbUI7RUFDakM7RUFTQSxNQUFNeUIsY0FBY0EsQ0FBRUMsUUFBUSxFQUFFO0lBQzlCLElBQUk7TUFDRixNQUFNQyxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUNyQixNQUFNLENBQUNzQixlQUFlLENBQUNGLFFBQVEsQ0FBQztNQUNoRSxJQUFJLENBQUNDLFlBQVksQ0FBQ1IsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ2xDLE9BQU8sS0FBSztNQUNkO01BQ0EsT0FBTyxNQUFNUixXQUFFLENBQUNDLE1BQU0sQ0FBQ2UsWUFBWSxDQUFDO0lBQ3RDLENBQUMsQ0FBQyxPQUFPRSxHQUFHLEVBQUU7TUFHWixPQUFPLENBQUMsTUFBTSxJQUFJLENBQUM5Qix3QkFBd0IsQ0FBQyxDQUFDLEVBQUUrQixHQUFHLENBQUNKLFFBQVEsQ0FBQztJQUM5RDtFQUNGO0VBTUEsTUFBTUssb0JBQW9CQSxDQUFBLEVBQUk7SUFDNUIsT0FBTzdCLGFBQUksQ0FBQ0MsT0FBTyxDQUNqQkMsZUFBQyxDQUFDQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUNDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUMsRUFDekQsOEJBQ0YsQ0FBQztFQUNIO0FBQ0Y7QUFBQyxJQUFBeUIsUUFBQSxHQUVjbkMsZ0JBQWdCO0FBQUFvQyxPQUFBLENBQUFDLE9BQUEsR0FBQUYsUUFBQSJ9
50
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3VwcG9ydCIsInJlcXVpcmUiLCJfdGVlbl9wcm9jZXNzIiwiX3BhdGgiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2xvZGFzaCIsIl9ibHVlYmlyZCIsIl9zaW11bGF0b3JYY29kZSIsIlNpbXVsYXRvclhjb2RlMTUiLCJTaW11bGF0b3JYY29kZTE0IiwiX2ZldGNoU3lzdGVtQXBwQnVuZGxlSWRzIiwiX3N5c3RlbUFwcEJ1bmRsZUlkcyIsImFwcHNSb290IiwicGF0aCIsInJlc29sdmUiLCJfIiwidHJpbSIsInNpbWN0bCIsImdldEVudiIsImZldGNoQnVuZGxlSWQiLCJhcHBSb290IiwiaW5mb1BsaXN0UGF0aCIsInN0ZG91dCIsImV4ZWMiLCJpZ24iLCJhbGxBcHBzIiwiZnMiLCJyZWFkZGlyIiwiZmlsdGVyIiwieCIsImVuZHNXaXRoIiwibWFwIiwiam9pbiIsIlNldCIsIkIiLCJhbGwiLCJCb29sZWFuIiwiaXNBcHBJbnN0YWxsZWQiLCJidW5kbGVJZCIsImFwcENvbnRhaW5lciIsImdldEFwcENvbnRhaW5lciIsImV4aXN0cyIsImhhcyIsImdldExhdW5jaERhZW1vbnNSb290IiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9zaW11bGF0b3IteGNvZGUtMTUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZnMgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgU2ltdWxhdG9yWGNvZGUxNCBmcm9tICcuL3NpbXVsYXRvci14Y29kZS0xNCc7XG5cbmNsYXNzIFNpbXVsYXRvclhjb2RlMTUgZXh0ZW5kcyBTaW11bGF0b3JYY29kZTE0IHtcbiAgLyoqXG4gICAqIENvbGxlY3RzIGFuZCBjYWNoZXMgYnVuZGxlIGluZGV0aWZpZXIgb2Ygc3lzdGVtIFNpbXVsYXRvciBhcHBzXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFNldDxzdHJpbmc+Pn1cbiAgICovXG4gIGFzeW5jIF9mZXRjaFN5c3RlbUFwcEJ1bmRsZUlkcyAoKSB7XG4gICAgaWYgKHRoaXMuX3N5c3RlbUFwcEJ1bmRsZUlkcykge1xuICAgICAgcmV0dXJuIHRoaXMuX3N5c3RlbUFwcEJ1bmRsZUlkcztcbiAgICB9XG5cbiAgICBjb25zdCBhcHBzUm9vdCA9IHBhdGgucmVzb2x2ZShcbiAgICAgIF8udHJpbShhd2FpdCB0aGlzLnNpbWN0bC5nZXRFbnYoJ0lQSE9ORV9TSU1VTEFUT1JfUk9PVCcpKSxcbiAgICAgICdBcHBsaWNhdGlvbnMnXG4gICAgKTtcbiAgICBjb25zdCBmZXRjaEJ1bmRsZUlkID0gYXN5bmMgKGFwcFJvb3QpID0+IHtcbiAgICAgIGNvbnN0IGluZm9QbGlzdFBhdGggPSBwYXRoLnJlc29sdmUoYXBwUm9vdCwgJ0luZm8ucGxpc3QnKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgZXhlYygnL3Vzci9saWJleGVjL1BsaXN0QnVkZHknLCBbXG4gICAgICAgICAgJy1jJywgJ3ByaW50IENGQnVuZGxlSWRlbnRpZmllcicsIGluZm9QbGlzdFBhdGhcbiAgICAgICAgXSk7XG4gICAgICAgIHJldHVybiBfLnRyaW0oc3Rkb3V0KTtcbiAgICAgIH0gY2F0Y2ggKGlnbikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IGFsbEFwcHMgPSAoYXdhaXQgZnMucmVhZGRpcihhcHBzUm9vdCkpXG4gICAgICAuZmlsdGVyKCh4KSA9PiB4LmVuZHNXaXRoKCcuYXBwJykpXG4gICAgICAubWFwKCh4KSA9PiBwYXRoLmpvaW4oYXBwc1Jvb3QsIHgpKTtcbiAgICB0aGlzLl9zeXN0ZW1BcHBCdW5kbGVJZHMgPSBuZXcgU2V0KGF3YWl0IEIuYWxsKFxuICAgICAgYWxsQXBwcy5tYXAoZmV0Y2hCdW5kbGVJZCkuZmlsdGVyKEJvb2xlYW4pXG4gICAgKSk7XG4gICAgcmV0dXJuIHRoaXMuX3N5c3RlbUFwcEJ1bmRsZUlkcztcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZnkgd2hldGhlciB0aGUgcGFydGljdWxhciBhcHBsaWNhdGlvbiBpcyBpbnN0YWxsZWQgb24gU2ltdWxhdG9yLlxuICAgKiBAb3ZlcnJpZGVcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGJ1bmRsZUlkIC0gVGhlIGJ1bmRsZSBpZCBvZiB0aGUgYXBwbGljYXRpb24gdG8gYmUgY2hlY2tlZC5cbiAgICogQHJldHVybiB7UHJvbWlzZTxib29sZWFuPn0gVHJ1ZSBpZiB0aGUgZ2l2ZW4gYXBwbGljYXRpb24gaXMgaW5zdGFsbGVkLlxuICAgKi9cbiAgYXN5bmMgaXNBcHBJbnN0YWxsZWQgKGJ1bmRsZUlkKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGFwcENvbnRhaW5lciA9IGF3YWl0IHRoaXMuc2ltY3RsLmdldEFwcENvbnRhaW5lcihidW5kbGVJZCk7XG4gICAgICByZXR1cm4gYXBwQ29udGFpbmVyLmVuZHNXaXRoKCcuYXBwJykgJiYgYXdhaXQgZnMuZXhpc3RzKGFwcENvbnRhaW5lcik7XG4gICAgfSBjYXRjaCAoaWduKSB7XG4gICAgICAvLyBnZXRfYXBwX2NvbnRhaW5lciBzdWJjb21tYW5kIGZhaWxzIGZvciBzeXN0ZW0gYXBwbGljYXRpb25zLFxuICAgICAgLy8gYXMgd2VsbCBhcyB0aGUgaGlkZGVuIGFwcGluZm8gY29tbWFuZFxuICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLl9mZXRjaFN5c3RlbUFwcEJ1bmRsZUlkcygpKS5oYXMoYnVuZGxlSWQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIGFzeW5jIGdldExhdW5jaERhZW1vbnNSb290ICgpIHtcbiAgICByZXR1cm4gcGF0aC5yZXNvbHZlKFxuICAgICAgXy50cmltKGF3YWl0IHRoaXMuc2ltY3RsLmdldEVudignSVBIT05FX1NJTVVMQVRPUl9ST09UJykpLFxuICAgICAgJ1N5c3RlbS9MaWJyYXJ5L0xhdW5jaERhZW1vbnMnXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTaW11bGF0b3JYY29kZTE1O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLGFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUQsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFLLFNBQUEsR0FBQUYsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFNLGVBQUEsR0FBQUgsc0JBQUEsQ0FBQUgsT0FBQTtBQUVBLE1BQU1PLGdCQUFnQixTQUFTQyx1QkFBZ0IsQ0FBQztFQU05QyxNQUFNQyx3QkFBd0JBLENBQUEsRUFBSTtJQUNoQyxJQUFJLElBQUksQ0FBQ0MsbUJBQW1CLEVBQUU7TUFDNUIsT0FBTyxJQUFJLENBQUNBLG1CQUFtQjtJQUNqQztJQUVBLE1BQU1DLFFBQVEsR0FBR0MsYUFBSSxDQUFDQyxPQUFPLENBQzNCQyxlQUFDLENBQUNDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQ0MsTUFBTSxDQUFDQyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxFQUN6RCxjQUNGLENBQUM7SUFDRCxNQUFNQyxhQUFhLEdBQUcsTUFBT0MsT0FBTyxJQUFLO01BQ3ZDLE1BQU1DLGFBQWEsR0FBR1IsYUFBSSxDQUFDQyxPQUFPLENBQUNNLE9BQU8sRUFBRSxZQUFZLENBQUM7TUFDekQsSUFBSTtRQUNGLE1BQU07VUFBQ0U7UUFBTSxDQUFDLEdBQUcsTUFBTSxJQUFBQyxrQkFBSSxFQUFDLHlCQUF5QixFQUFFLENBQ3JELElBQUksRUFBRSwwQkFBMEIsRUFBRUYsYUFBYSxDQUNoRCxDQUFDO1FBQ0YsT0FBT04sZUFBQyxDQUFDQyxJQUFJLENBQUNNLE1BQU0sQ0FBQztNQUN2QixDQUFDLENBQUMsT0FBT0UsR0FBRyxFQUFFO1FBQ1osT0FBTyxJQUFJO01BQ2I7SUFDRixDQUFDO0lBQ0QsTUFBTUMsT0FBTyxHQUFHLENBQUMsTUFBTUMsV0FBRSxDQUFDQyxPQUFPLENBQUNmLFFBQVEsQ0FBQyxFQUN4Q2dCLE1BQU0sQ0FBRUMsQ0FBQyxJQUFLQSxDQUFDLENBQUNDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUNqQ0MsR0FBRyxDQUFFRixDQUFDLElBQUtoQixhQUFJLENBQUNtQixJQUFJLENBQUNwQixRQUFRLEVBQUVpQixDQUFDLENBQUMsQ0FBQztJQUNyQyxJQUFJLENBQUNsQixtQkFBbUIsR0FBRyxJQUFJc0IsR0FBRyxDQUFDLE1BQU1DLGlCQUFDLENBQUNDLEdBQUcsQ0FDNUNWLE9BQU8sQ0FBQ00sR0FBRyxDQUFDWixhQUFhLENBQUMsQ0FBQ1MsTUFBTSxDQUFDUSxPQUFPLENBQzNDLENBQUMsQ0FBQztJQUNGLE9BQU8sSUFBSSxDQUFDekIsbUJBQW1CO0VBQ2pDO0VBU0EsTUFBTTBCLGNBQWNBLENBQUVDLFFBQVEsRUFBRTtJQUM5QixJQUFJO01BQ0YsTUFBTUMsWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDdEIsTUFBTSxDQUFDdUIsZUFBZSxDQUFDRixRQUFRLENBQUM7TUFDaEUsT0FBT0MsWUFBWSxDQUFDVCxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUksTUFBTUosV0FBRSxDQUFDZSxNQUFNLENBQUNGLFlBQVksQ0FBQztJQUN2RSxDQUFDLENBQUMsT0FBT2YsR0FBRyxFQUFFO01BR1osT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDZCx3QkFBd0IsQ0FBQyxDQUFDLEVBQUVnQyxHQUFHLENBQUNKLFFBQVEsQ0FBQztJQUM5RDtFQUNGO0VBTUEsTUFBTUssb0JBQW9CQSxDQUFBLEVBQUk7SUFDNUIsT0FBTzlCLGFBQUksQ0FBQ0MsT0FBTyxDQUNqQkMsZUFBQyxDQUFDQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUNDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUMsRUFDekQsOEJBQ0YsQ0FBQztFQUNIO0FBQ0Y7QUFBQyxJQUFBMEIsUUFBQSxHQUVjcEMsZ0JBQWdCO0FBQUFxQyxPQUFBLENBQUFDLE9BQUEsR0FBQUYsUUFBQSJ9
@@ -1 +1 @@
1
- {"version":3,"file":"simulator-xcode-15.js","names":["_support","require","_teen_process","_path","_interopRequireDefault","_lodash","_bluebird","_simulatorXcode","SimulatorXcode15","SimulatorXcode14","_fetchSystemAppBundleIds","_systemAppBundleIds","appsRoot","path","resolve","_","trim","simctl","getEnv","fetchBundleId","appRoot","infoPlistPath","fs","exists","stdout","exec","allApps","readdir","filter","x","endsWith","map","join","Set","B","all","isAppInstalled","bundleId","appContainer","getAppContainer","err","has","getLaunchDaemonsRoot","_default","exports","default"],"sources":["../../lib/simulator-xcode-15.js"],"sourcesContent":["import { fs } from '@appium/support';\nimport { exec } from 'teen_process';\nimport path from 'path';\nimport _ from 'lodash';\nimport B from 'bluebird';\nimport SimulatorXcode14 from './simulator-xcode-14';\n\nclass SimulatorXcode15 extends SimulatorXcode14 {\n /**\n * Collects and caches bundle indetifier of system Simulator apps\n *\n * @returns {Promise<Set<string>>}\n */\n async _fetchSystemAppBundleIds () {\n if (this._systemAppBundleIds) {\n return this._systemAppBundleIds;\n }\n\n const appsRoot = path.resolve(_.trim(await this.simctl.getEnv('IPHONE_SIMULATOR_ROOT')), 'Applications');\n const fetchBundleId = async (appRoot) => {\n const infoPlistPath = path.resolve(appRoot, 'Info.plist');\n if (!(await fs.exists(infoPlistPath))) {\n return '';\n }\n const {stdout} = await exec('/usr/libexec/PlistBuddy', [\n '-c', 'print CFBundleIdentifier', infoPlistPath\n ]);\n return _.trim(stdout);\n };\n const allApps = (await fs.readdir(appsRoot))\n .filter((x) => x.endsWith('.app'))\n .map((x) => path.join(appsRoot, x));\n this._systemAppBundleIds = new Set(await B.all(allApps.map(fetchBundleId)));\n return this._systemAppBundleIds;\n }\n\n /**\n * Verify whether the particular application is installed on Simulator.\n * @override\n *\n * @param {string} bundleId - The bundle id of the application to be checked.\n * @return {Promise<boolean>} True if the given application is installed.\n */\n async isAppInstalled (bundleId) {\n try {\n const appContainer = await this.simctl.getAppContainer(bundleId);\n if (!appContainer.endsWith('.app')) {\n return false;\n }\n return await fs.exists(appContainer);\n } catch (err) {\n // get_app_container subcommand fails for system applications,\n // as well as the hidden appinfo command\n return (await this._fetchSystemAppBundleIds()).has(bundleId);\n }\n }\n\n /**\n * @override\n * @inheritdoc\n */\n async getLaunchDaemonsRoot () {\n return path.resolve(\n _.trim(await this.simctl.getEnv('IPHONE_SIMULATOR_ROOT')),\n 'System/Library/LaunchDaemons'\n );\n }\n}\n\nexport default SimulatorXcode15;\n"],"mappings":";;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,OAAA,GAAAD,sBAAA,CAAAH,OAAA;AACA,IAAAK,SAAA,GAAAF,sBAAA,CAAAH,OAAA;AACA,IAAAM,eAAA,GAAAH,sBAAA,CAAAH,OAAA;AAEA,MAAMO,gBAAgB,SAASC,uBAAgB,CAAC;EAM9C,MAAMC,wBAAwBA,CAAA,EAAI;IAChC,IAAI,IAAI,CAACC,mBAAmB,EAAE;MAC5B,OAAO,IAAI,CAACA,mBAAmB;IACjC;IAEA,MAAMC,QAAQ,GAAGC,aAAI,CAACC,OAAO,CAACC,eAAC,CAACC,IAAI,CAAC,MAAM,IAAI,CAACC,MAAM,CAACC,MAAM,CAAC,uBAAuB,CAAC,CAAC,EAAE,cAAc,CAAC;IACxG,MAAMC,aAAa,GAAG,MAAOC,OAAO,IAAK;MACvC,MAAMC,aAAa,GAAGR,aAAI,CAACC,OAAO,CAACM,OAAO,EAAE,YAAY,CAAC;MACzD,IAAI,EAAE,MAAME,WAAE,CAACC,MAAM,CAACF,aAAa,CAAC,CAAC,EAAE;QACrC,OAAO,EAAE;MACX;MACA,MAAM;QAACG;MAAM,CAAC,GAAG,MAAM,IAAAC,kBAAI,EAAC,yBAAyB,EAAE,CACrD,IAAI,EAAE,0BAA0B,EAAEJ,aAAa,CAChD,CAAC;MACF,OAAON,eAAC,CAACC,IAAI,CAACQ,MAAM,CAAC;IACvB,CAAC;IACD,MAAME,OAAO,GAAG,CAAC,MAAMJ,WAAE,CAACK,OAAO,CAACf,QAAQ,CAAC,EACxCgB,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAACC,QAAQ,CAAC,MAAM,CAAC,CAAC,CACjCC,GAAG,CAAEF,CAAC,IAAKhB,aAAI,CAACmB,IAAI,CAACpB,QAAQ,EAAEiB,CAAC,CAAC,CAAC;IACrC,IAAI,CAAClB,mBAAmB,GAAG,IAAIsB,GAAG,CAAC,MAAMC,iBAAC,CAACC,GAAG,CAACT,OAAO,CAACK,GAAG,CAACZ,aAAa,CAAC,CAAC,CAAC;IAC3E,OAAO,IAAI,CAACR,mBAAmB;EACjC;EASA,MAAMyB,cAAcA,CAAEC,QAAQ,EAAE;IAC9B,IAAI;MACF,MAAMC,YAAY,GAAG,MAAM,IAAI,CAACrB,MAAM,CAACsB,eAAe,CAACF,QAAQ,CAAC;MAChE,IAAI,CAACC,YAAY,CAACR,QAAQ,CAAC,MAAM,CAAC,EAAE;QAClC,OAAO,KAAK;MACd;MACA,OAAO,MAAMR,WAAE,CAACC,MAAM,CAACe,YAAY,CAAC;IACtC,CAAC,CAAC,OAAOE,GAAG,EAAE;MAGZ,OAAO,CAAC,MAAM,IAAI,CAAC9B,wBAAwB,CAAC,CAAC,EAAE+B,GAAG,CAACJ,QAAQ,CAAC;IAC9D;EACF;EAMA,MAAMK,oBAAoBA,CAAA,EAAI;IAC5B,OAAO7B,aAAI,CAACC,OAAO,CACjBC,eAAC,CAACC,IAAI,CAAC,MAAM,IAAI,CAACC,MAAM,CAACC,MAAM,CAAC,uBAAuB,CAAC,CAAC,EACzD,8BACF,CAAC;EACH;AACF;AAAC,IAAAyB,QAAA,GAEcnC,gBAAgB;AAAAoC,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
1
+ {"version":3,"file":"simulator-xcode-15.js","names":["_support","require","_teen_process","_path","_interopRequireDefault","_lodash","_bluebird","_simulatorXcode","SimulatorXcode15","SimulatorXcode14","_fetchSystemAppBundleIds","_systemAppBundleIds","appsRoot","path","resolve","_","trim","simctl","getEnv","fetchBundleId","appRoot","infoPlistPath","stdout","exec","ign","allApps","fs","readdir","filter","x","endsWith","map","join","Set","B","all","Boolean","isAppInstalled","bundleId","appContainer","getAppContainer","exists","has","getLaunchDaemonsRoot","_default","exports","default"],"sources":["../../lib/simulator-xcode-15.js"],"sourcesContent":["import { fs } from '@appium/support';\nimport { exec } from 'teen_process';\nimport path from 'path';\nimport _ from 'lodash';\nimport B from 'bluebird';\nimport SimulatorXcode14 from './simulator-xcode-14';\n\nclass SimulatorXcode15 extends SimulatorXcode14 {\n /**\n * Collects and caches bundle indetifier of system Simulator apps\n *\n * @returns {Promise<Set<string>>}\n */\n async _fetchSystemAppBundleIds () {\n if (this._systemAppBundleIds) {\n return this._systemAppBundleIds;\n }\n\n const appsRoot = path.resolve(\n _.trim(await this.simctl.getEnv('IPHONE_SIMULATOR_ROOT')),\n 'Applications'\n );\n const fetchBundleId = async (appRoot) => {\n const infoPlistPath = path.resolve(appRoot, 'Info.plist');\n try {\n const {stdout} = await exec('/usr/libexec/PlistBuddy', [\n '-c', 'print CFBundleIdentifier', infoPlistPath\n ]);\n return _.trim(stdout);\n } catch (ign) {\n return null;\n }\n };\n const allApps = (await fs.readdir(appsRoot))\n .filter((x) => x.endsWith('.app'))\n .map((x) => path.join(appsRoot, x));\n this._systemAppBundleIds = new Set(await B.all(\n allApps.map(fetchBundleId).filter(Boolean)\n ));\n return this._systemAppBundleIds;\n }\n\n /**\n * Verify whether the particular application is installed on Simulator.\n * @override\n *\n * @param {string} bundleId - The bundle id of the application to be checked.\n * @return {Promise<boolean>} True if the given application is installed.\n */\n async isAppInstalled (bundleId) {\n try {\n const appContainer = await this.simctl.getAppContainer(bundleId);\n return appContainer.endsWith('.app') && await fs.exists(appContainer);\n } catch (ign) {\n // get_app_container subcommand fails for system applications,\n // as well as the hidden appinfo command\n return (await this._fetchSystemAppBundleIds()).has(bundleId);\n }\n }\n\n /**\n * @override\n * @inheritdoc\n */\n async getLaunchDaemonsRoot () {\n return path.resolve(\n _.trim(await this.simctl.getEnv('IPHONE_SIMULATOR_ROOT')),\n 'System/Library/LaunchDaemons'\n );\n }\n}\n\nexport default SimulatorXcode15;\n"],"mappings":";;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,OAAA,GAAAD,sBAAA,CAAAH,OAAA;AACA,IAAAK,SAAA,GAAAF,sBAAA,CAAAH,OAAA;AACA,IAAAM,eAAA,GAAAH,sBAAA,CAAAH,OAAA;AAEA,MAAMO,gBAAgB,SAASC,uBAAgB,CAAC;EAM9C,MAAMC,wBAAwBA,CAAA,EAAI;IAChC,IAAI,IAAI,CAACC,mBAAmB,EAAE;MAC5B,OAAO,IAAI,CAACA,mBAAmB;IACjC;IAEA,MAAMC,QAAQ,GAAGC,aAAI,CAACC,OAAO,CAC3BC,eAAC,CAACC,IAAI,CAAC,MAAM,IAAI,CAACC,MAAM,CAACC,MAAM,CAAC,uBAAuB,CAAC,CAAC,EACzD,cACF,CAAC;IACD,MAAMC,aAAa,GAAG,MAAOC,OAAO,IAAK;MACvC,MAAMC,aAAa,GAAGR,aAAI,CAACC,OAAO,CAACM,OAAO,EAAE,YAAY,CAAC;MACzD,IAAI;QACF,MAAM;UAACE;QAAM,CAAC,GAAG,MAAM,IAAAC,kBAAI,EAAC,yBAAyB,EAAE,CACrD,IAAI,EAAE,0BAA0B,EAAEF,aAAa,CAChD,CAAC;QACF,OAAON,eAAC,CAACC,IAAI,CAACM,MAAM,CAAC;MACvB,CAAC,CAAC,OAAOE,GAAG,EAAE;QACZ,OAAO,IAAI;MACb;IACF,CAAC;IACD,MAAMC,OAAO,GAAG,CAAC,MAAMC,WAAE,CAACC,OAAO,CAACf,QAAQ,CAAC,EACxCgB,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAACC,QAAQ,CAAC,MAAM,CAAC,CAAC,CACjCC,GAAG,CAAEF,CAAC,IAAKhB,aAAI,CAACmB,IAAI,CAACpB,QAAQ,EAAEiB,CAAC,CAAC,CAAC;IACrC,IAAI,CAAClB,mBAAmB,GAAG,IAAIsB,GAAG,CAAC,MAAMC,iBAAC,CAACC,GAAG,CAC5CV,OAAO,CAACM,GAAG,CAACZ,aAAa,CAAC,CAACS,MAAM,CAACQ,OAAO,CAC3C,CAAC,CAAC;IACF,OAAO,IAAI,CAACzB,mBAAmB;EACjC;EASA,MAAM0B,cAAcA,CAAEC,QAAQ,EAAE;IAC9B,IAAI;MACF,MAAMC,YAAY,GAAG,MAAM,IAAI,CAACtB,MAAM,CAACuB,eAAe,CAACF,QAAQ,CAAC;MAChE,OAAOC,YAAY,CAACT,QAAQ,CAAC,MAAM,CAAC,KAAI,MAAMJ,WAAE,CAACe,MAAM,CAACF,YAAY,CAAC;IACvE,CAAC,CAAC,OAAOf,GAAG,EAAE;MAGZ,OAAO,CAAC,MAAM,IAAI,CAACd,wBAAwB,CAAC,CAAC,EAAEgC,GAAG,CAACJ,QAAQ,CAAC;IAC9D;EACF;EAMA,MAAMK,oBAAoBA,CAAA,EAAI;IAC5B,OAAO9B,aAAI,CAACC,OAAO,CACjBC,eAAC,CAACC,IAAI,CAAC,MAAM,IAAI,CAACC,MAAM,CAACC,MAAM,CAAC,uBAAuB,CAAC,CAAC,EACzD,8BACF,CAAC;EACH;AACF;AAAC,IAAA0B,QAAA,GAEcpC,gBAAgB;AAAAqC,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
@@ -16,21 +16,27 @@ class SimulatorXcode15 extends SimulatorXcode14 {
16
16
  return this._systemAppBundleIds;
17
17
  }
18
18
 
19
- const appsRoot = path.resolve(_.trim(await this.simctl.getEnv('IPHONE_SIMULATOR_ROOT')), 'Applications');
19
+ const appsRoot = path.resolve(
20
+ _.trim(await this.simctl.getEnv('IPHONE_SIMULATOR_ROOT')),
21
+ 'Applications'
22
+ );
20
23
  const fetchBundleId = async (appRoot) => {
21
24
  const infoPlistPath = path.resolve(appRoot, 'Info.plist');
22
- if (!(await fs.exists(infoPlistPath))) {
23
- return '';
25
+ try {
26
+ const {stdout} = await exec('/usr/libexec/PlistBuddy', [
27
+ '-c', 'print CFBundleIdentifier', infoPlistPath
28
+ ]);
29
+ return _.trim(stdout);
30
+ } catch (ign) {
31
+ return null;
24
32
  }
25
- const {stdout} = await exec('/usr/libexec/PlistBuddy', [
26
- '-c', 'print CFBundleIdentifier', infoPlistPath
27
- ]);
28
- return _.trim(stdout);
29
33
  };
30
34
  const allApps = (await fs.readdir(appsRoot))
31
35
  .filter((x) => x.endsWith('.app'))
32
36
  .map((x) => path.join(appsRoot, x));
33
- this._systemAppBundleIds = new Set(await B.all(allApps.map(fetchBundleId)));
37
+ this._systemAppBundleIds = new Set(await B.all(
38
+ allApps.map(fetchBundleId).filter(Boolean)
39
+ ));
34
40
  return this._systemAppBundleIds;
35
41
  }
36
42
 
@@ -44,11 +50,8 @@ class SimulatorXcode15 extends SimulatorXcode14 {
44
50
  async isAppInstalled (bundleId) {
45
51
  try {
46
52
  const appContainer = await this.simctl.getAppContainer(bundleId);
47
- if (!appContainer.endsWith('.app')) {
48
- return false;
49
- }
50
- return await fs.exists(appContainer);
51
- } catch (err) {
53
+ return appContainer.endsWith('.app') && await fs.exists(appContainer);
54
+ } catch (ign) {
52
55
  // get_app_container subcommand fails for system applications,
53
56
  // as well as the hidden appinfo command
54
57
  return (await this._fetchSystemAppBundleIds()).has(bundleId);
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "ios",
8
8
  "simctl"
9
9
  ],
10
- "version": "5.1.2",
10
+ "version": "5.1.3",
11
11
  "author": "Appium Contributors",
12
12
  "license": "Apache-2.0",
13
13
  "repository": {