appium-ios-simulator 6.2.2 → 6.2.4

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,15 @@
1
+ ## [6.2.4](https://github.com/appium/appium-ios-simulator/compare/v6.2.3...v6.2.4) (2025-06-11)
2
+
3
+ ### Bug Fixes
4
+
5
+ * Keychains backup and restore ([#450](https://github.com/appium/appium-ios-simulator/issues/450)) ([c1ee6e6](https://github.com/appium/appium-ios-simulator/commit/c1ee6e628dd472c1f294e64ba02b68a315cb7e01))
6
+
7
+ ## [6.2.3](https://github.com/appium/appium-ios-simulator/compare/v6.2.2...v6.2.3) (2025-05-20)
8
+
9
+ ### Miscellaneous Chores
10
+
11
+ * Bump conventional-changelog-conventionalcommits ([#448](https://github.com/appium/appium-ios-simulator/issues/448)) ([d442f17](https://github.com/appium/appium-ios-simulator/commit/d442f171c7de6a11d0e47556a9e312a70c908b82))
12
+
1
13
  ## [6.2.2](https://github.com/appium/appium-ios-simulator/compare/v6.2.1...v6.2.2) (2025-04-05)
2
14
 
3
15
  ### Bug Fixes
@@ -9,7 +9,7 @@
9
9
  */
10
10
  export function backupKeychains(this: CoreSimulatorWithKeychain): Promise<boolean>;
11
11
  export class backupKeychains {
12
- _keychainsBackupPath: string | undefined;
12
+ _keychainsBackupPath: string | null | undefined;
13
13
  }
14
14
  /**
15
15
  * Restore the previsouly created keychains backup.
@@ -1 +1 @@
1
- {"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../../../lib/extensions/keychain.js"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,kEAFa,OAAO,CAAC,OAAO,CAAC,CAsB5B;;IAFC,yCAAsC;;AAIxC;;;;;;;;;;;;GAYG;AACH,oFATW,MAAM,EAAE,GAMN,OAAO,CAAC,OAAO,CAAC,CAuC5B;;IAjDD;;;;;;;;;;;;OAYG;IACH,+DATW,MAAM,EAAE,EA6ClB;IAPG,0BAAgC;;AASpC;;;;;;GAMG;AACH,iEAHa,OAAO,CAAC,IAAI,CAAC,CAiBzB;wCAGY,OAAO,UAAU,EAAE,aAAa,GAAG,OAAO,UAAU,EAAE,qBAAqB"}
1
+ {"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../../../lib/extensions/keychain.js"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,kEAFa,OAAO,CAAC,OAAO,CAAC,CAgC5B;;IAzBG,gDAAmC;;AA2BvC;;;;;;;;;;;;GAYG;AACH,oFATW,MAAM,EAAE,GAMN,OAAO,CAAC,OAAO,CAAC,CA8C5B;;IAxDD;;;;;;;;;;;;OAYG;IACH,+DATW,MAAM,EAAE,EAoDlB;IAPG,0BAAgC;;AASpC;;;;;;GAMG;AACH,iEAHa,OAAO,CAAC,IAAI,CAAC,CAiBzB;wCAGY,OAAO,UAAU,EAAE,aAAa,GAAG,OAAO,UAAU,EAAE,qBAAqB"}
@@ -20,23 +20,31 @@ const teen_process_1 = require("teen_process");
20
20
  * @returns {Promise<boolean>} True if the backup operation was successfull.
21
21
  */
22
22
  async function backupKeychains() {
23
- if (!await support_1.fs.exists(this.keychainPath)) {
23
+ const resetBackupPath = async (/** @type {string | null | undefined} */ newPath) => {
24
+ if (lodash_1.default.isString(this._keychainsBackupPath) && await support_1.fs.exists(this._keychainsBackupPath)) {
25
+ await support_1.fs.unlink(this._keychainsBackupPath);
26
+ }
27
+ this._keychainsBackupPath = newPath;
28
+ };
29
+ if (!await support_1.fs.exists(this.keychainPath) || lodash_1.default.isEmpty(await support_1.fs.readdir(this.keychainPath))) {
30
+ this.log.info(`There is nothing to backup from '${this.keychainPath}'`);
31
+ await resetBackupPath(null);
24
32
  return false;
25
33
  }
26
- const backupPath = await support_1.tempDir.path({
34
+ const dstPath = await support_1.tempDir.path({
27
35
  prefix: `keychains_backup_${Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1)}`,
28
36
  suffix: '.zip',
29
37
  });
30
- const zipArgs = [
31
- '-r', backupPath,
32
- `${this.keychainPath}${path_1.default.sep}`
33
- ];
34
- this.log.debug(`Creating keychains backup with 'zip ${zipArgs.join(' ')}' command`);
35
- await (0, teen_process_1.exec)('zip', zipArgs);
36
- if (lodash_1.default.isString(this._keychainsBackupPath) && await support_1.fs.exists(this._keychainsBackupPath)) {
37
- await support_1.fs.unlink(this._keychainsBackupPath);
38
+ const zipArgs = ['-r', dstPath, `${path_1.default.basename(this.keychainPath)}${path_1.default.sep}`];
39
+ this.log.debug(`Creating keychains backup with '${support_1.util.quote(['zip', ...zipArgs])}' command`);
40
+ try {
41
+ await (0, teen_process_1.exec)('zip', zipArgs, { cwd: path_1.default.dirname(this.keychainPath) });
38
42
  }
39
- this._keychainsBackupPath = backupPath;
43
+ catch (err) {
44
+ throw new Error(`Cannot create keychains backup from '${this.keychainPath}'. ` +
45
+ `Original error: ${err.stderr || err.stdout || err.message}`);
46
+ }
47
+ await resetBackupPath(dstPath);
40
48
  return true;
41
49
  }
42
50
  /**
@@ -75,10 +83,16 @@ async function restoreKeychains(excludePatterns = []) {
75
83
  const unzipArgs = [
76
84
  '-o', this._keychainsBackupPath,
77
85
  ...(lodash_1.default.flatMap(excludePatterns.map((x) => ['-x', x]))),
78
- '-d', '/'
86
+ '-d', path_1.default.dirname(this.keychainPath),
79
87
  ];
80
- this.log.debug(`Restoring keychains with 'unzip ${unzipArgs.join(' ')}' command`);
81
- await (0, teen_process_1.exec)('unzip', unzipArgs);
88
+ this.log.debug(`Restoring keychains with '${support_1.util.quote(['unzip', ...unzipArgs])}' command`);
89
+ try {
90
+ await (0, teen_process_1.exec)('unzip', unzipArgs);
91
+ }
92
+ catch (err) {
93
+ throw new Error(`Cannot restore keychains from '${this._keychainsBackupPath}'. ` +
94
+ `Original error: ${err.stderr || err.stdout || err.message}`);
95
+ }
82
96
  await support_1.fs.unlink(this._keychainsBackupPath);
83
97
  this._keychainsBackupPath = null;
84
98
  }
@@ -1 +1 @@
1
- {"version":3,"file":"keychain.js","sourceRoot":"","sources":["../../../lib/extensions/keychain.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keychain.js","sourceRoot":"","sources":["../../../lib/extensions/keychain.js"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import _ from 'lodash';
2
2
  import path from 'path';
3
- import { fs, mkdirp, tempDir } from '@appium/support';
3
+ import { fs, mkdirp, tempDir, util } from '@appium/support';
4
4
  import { exec } from 'teen_process';
5
5
 
6
6
  /**
@@ -13,24 +13,34 @@ import { exec } from 'teen_process';
13
13
  * @returns {Promise<boolean>} True if the backup operation was successfull.
14
14
  */
15
15
  export async function backupKeychains () {
16
- if (!await fs.exists(this.keychainPath)) {
16
+ const resetBackupPath = async (/** @type {string | null | undefined} */ newPath) => {
17
+ if (_.isString(this._keychainsBackupPath) && await fs.exists(this._keychainsBackupPath)) {
18
+ await fs.unlink(this._keychainsBackupPath);
19
+ }
20
+ this._keychainsBackupPath = newPath;
21
+ };
22
+
23
+ if (!await fs.exists(this.keychainPath) || _.isEmpty(await fs.readdir(this.keychainPath))) {
24
+ this.log.info(`There is nothing to backup from '${this.keychainPath}'`);
25
+ await resetBackupPath(null);
17
26
  return false;
18
27
  }
19
28
 
20
- const backupPath = await tempDir.path({
29
+ const dstPath = await tempDir.path({
21
30
  prefix: `keychains_backup_${Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1)}`,
22
31
  suffix: '.zip',
23
32
  });
24
- const zipArgs = [
25
- '-r', backupPath,
26
- `${this.keychainPath}${path.sep}`
27
- ];
28
- this.log.debug(`Creating keychains backup with 'zip ${zipArgs.join(' ')}' command`);
29
- await exec('zip', zipArgs);
30
- if (_.isString(this._keychainsBackupPath) && await fs.exists(this._keychainsBackupPath)) {
31
- await fs.unlink(this._keychainsBackupPath);
33
+ const zipArgs = ['-r', dstPath, `${path.basename(this.keychainPath)}${path.sep}`];
34
+ this.log.debug(`Creating keychains backup with '${util.quote(['zip', ...zipArgs])}' command`);
35
+ try {
36
+ await exec('zip', zipArgs, {cwd: path.dirname(this.keychainPath)});
37
+ } catch (err) {
38
+ throw new Error(
39
+ `Cannot create keychains backup from '${this.keychainPath}'. ` +
40
+ `Original error: ${err.stderr || err.stdout || err.message}`
41
+ );
32
42
  }
33
- this._keychainsBackupPath = backupPath;
43
+ await resetBackupPath(dstPath);
34
44
  return true;
35
45
  }
36
46
 
@@ -71,10 +81,17 @@ export async function restoreKeychains (excludePatterns = []) {
71
81
  const unzipArgs = [
72
82
  '-o', this._keychainsBackupPath,
73
83
  ...(_.flatMap(excludePatterns.map((x) => ['-x', x]))),
74
- '-d', '/'
84
+ '-d', path.dirname(this.keychainPath),
75
85
  ];
76
- this.log.debug(`Restoring keychains with 'unzip ${unzipArgs.join(' ')}' command`);
77
- await exec('unzip', unzipArgs);
86
+ this.log.debug(`Restoring keychains with '${util.quote(['unzip', ...unzipArgs])}' command`);
87
+ try {
88
+ await exec('unzip', unzipArgs);
89
+ } catch (err) {
90
+ throw new Error(
91
+ `Cannot restore keychains from '${this._keychainsBackupPath}'. ` +
92
+ `Original error: ${err.stderr || err.stdout || err.message}`
93
+ );
94
+ }
78
95
  await fs.unlink(this._keychainsBackupPath);
79
96
  this._keychainsBackupPath = null;
80
97
  } finally {
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "ios",
8
8
  "simctl"
9
9
  ],
10
- "version": "6.2.2",
10
+ "version": "6.2.4",
11
11
  "author": "Appium Contributors",
12
12
  "license": "Apache-2.0",
13
13
  "repository": {
@@ -76,7 +76,7 @@
76
76
  "@types/teen_process": "^2.0.2",
77
77
  "chai": "^5.1.1",
78
78
  "chai-as-promised": "^8.0.0",
79
- "conventional-changelog-conventionalcommits": "^8.0.0",
79
+ "conventional-changelog-conventionalcommits": "^9.0.0",
80
80
  "mocha": "^11.0.1",
81
81
  "pem": "^1.8.3",
82
82
  "prettier": "^3.0.0",