lim 0.50.1 → 0.51.0
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/JSON_OUTPUT.md +2 -1
- package/README.md +1 -1
- package/dist/base-command.d.ts +6 -0
- package/dist/base-command.d.ts.map +1 -1
- package/dist/base-command.js +6 -2
- package/dist/base-command.js.map +1 -1
- package/dist/commands/ios/create.d.ts +0 -6
- package/dist/commands/ios/create.d.ts.map +1 -1
- package/dist/commands/ios/create.js +9 -45
- package/dist/commands/ios/create.js.map +1 -1
- package/dist/commands/ios/create.test.js +22 -35
- package/dist/commands/ios/create.test.js.map +1 -1
- package/dist/commands/ios/keychain/restore.d.ts +0 -2
- package/dist/commands/ios/keychain/restore.d.ts.map +1 -1
- package/dist/commands/ios/keychain/restore.js +5 -23
- package/dist/commands/ios/keychain/restore.js.map +1 -1
- package/dist/commands/ios/keychain/save.d.ts +0 -2
- package/dist/commands/ios/keychain/save.d.ts.map +1 -1
- package/dist/commands/ios/keychain/save.js +8 -37
- package/dist/commands/ios/keychain/save.js.map +1 -1
- package/dist/commands/ios/keychain/transfer.test.d.ts +2 -0
- package/dist/commands/ios/keychain/transfer.test.d.ts.map +1 -0
- package/dist/commands/ios/keychain/transfer.test.js +64 -0
- package/dist/commands/ios/keychain/transfer.test.js.map +1 -0
- package/dist/commands/ios/snapshot/delete.d.ts +21 -0
- package/dist/commands/ios/snapshot/delete.d.ts.map +1 -0
- package/dist/commands/ios/snapshot/delete.js +30 -0
- package/dist/commands/ios/snapshot/delete.js.map +1 -0
- package/dist/commands/ios/{keychain/generate-key.d.ts → snapshot/get.d.ts} +6 -2
- package/dist/commands/ios/snapshot/get.d.ts.map +1 -0
- package/dist/commands/ios/snapshot/get.js +36 -0
- package/dist/commands/ios/snapshot/get.js.map +1 -0
- package/dist/commands/ios/snapshot/list.d.ts +20 -0
- package/dist/commands/ios/snapshot/list.d.ts.map +1 -0
- package/dist/commands/ios/snapshot/list.js +45 -0
- package/dist/commands/ios/snapshot/list.js.map +1 -0
- package/dist/commands/xcode/snapshot/delete.d.ts +21 -0
- package/dist/commands/xcode/snapshot/delete.d.ts.map +1 -0
- package/dist/commands/xcode/snapshot/delete.js +30 -0
- package/dist/commands/xcode/snapshot/delete.js.map +1 -0
- package/dist/commands/xcode/snapshot/get.d.ts +20 -0
- package/dist/commands/xcode/snapshot/get.d.ts.map +1 -0
- package/dist/commands/xcode/snapshot/get.js +36 -0
- package/dist/commands/xcode/snapshot/get.js.map +1 -0
- package/dist/commands/xcode/snapshot/list.d.ts +20 -0
- package/dist/commands/xcode/snapshot/list.d.ts.map +1 -0
- package/dist/commands/xcode/snapshot/list.js +45 -0
- package/dist/commands/xcode/snapshot/list.js.map +1 -0
- package/dist/commands/xcode/snapshot/manage.test.d.ts +2 -0
- package/dist/commands/xcode/snapshot/manage.test.d.ts.map +1 -0
- package/dist/commands/xcode/snapshot/manage.test.js +65 -0
- package/dist/commands/xcode/snapshot/manage.test.js.map +1 -0
- package/dist/commands/xcode/test.d.ts +2 -0
- package/dist/commands/xcode/test.d.ts.map +1 -1
- package/dist/commands/xcode/test.js +19 -2
- package/dist/commands/xcode/test.js.map +1 -1
- package/dist/commands/xcode/test.test.d.ts +2 -0
- package/dist/commands/xcode/test.test.d.ts.map +1 -0
- package/dist/commands/xcode/test.test.js +67 -0
- package/dist/commands/xcode/test.test.js.map +1 -0
- package/dist/json-contract.test.js +13 -5
- package/dist/json-contract.test.js.map +1 -1
- package/dist/lib/ios-device-selection.d.ts +10 -0
- package/dist/lib/ios-device-selection.d.ts.map +1 -0
- package/dist/lib/ios-device-selection.js +24 -0
- package/dist/lib/ios-device-selection.js.map +1 -0
- package/dist/lib/keychain.d.ts +2 -0
- package/dist/lib/keychain.d.ts.map +1 -0
- package/dist/lib/keychain.js +5 -0
- package/dist/lib/keychain.js.map +1 -0
- package/dist/lib/snapshots.d.ts +20 -0
- package/dist/lib/snapshots.d.ts.map +1 -0
- package/dist/lib/snapshots.js +23 -0
- package/dist/lib/snapshots.js.map +1 -0
- package/dist/lib/snapshots.test.d.ts +2 -0
- package/dist/lib/snapshots.test.d.ts.map +1 -0
- package/dist/lib/snapshots.test.js +46 -0
- package/dist/lib/snapshots.test.js.map +1 -0
- package/dist/lib/xctest-render.d.ts +1 -1
- package/dist/lib/xctest-render.d.ts.map +1 -1
- package/dist/lib/xctest-render.js +7 -2
- package/dist/lib/xctest-render.js.map +1 -1
- package/dist/lib/xctest-render.test.js +23 -0
- package/dist/lib/xctest-render.test.js.map +1 -1
- package/package.json +8 -2
- package/dist/commands/ios/keychain/generate-key.d.ts.map +0 -1
- package/dist/commands/ios/keychain/generate-key.js +0 -20
- package/dist/commands/ios/keychain/generate-key.js.map +0 -1
- package/dist/lib/keychain-encryption-key.d.ts +0 -9
- package/dist/lib/keychain-encryption-key.d.ts.map +0 -1
- package/dist/lib/keychain-encryption-key.js +0 -55
- package/dist/lib/keychain-encryption-key.js.map +0 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { BaseCommand } from '../../../base-command';
|
|
2
|
+
export default class XcodeSnapshotGet extends BaseCommand {
|
|
3
|
+
static summary: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static examples: string[];
|
|
6
|
+
static args: {
|
|
7
|
+
key: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
|
|
8
|
+
};
|
|
9
|
+
static flags: {
|
|
10
|
+
organization: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
11
|
+
'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
12
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
13
|
+
quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
14
|
+
create: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
15
|
+
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
16
|
+
daemon: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
17
|
+
};
|
|
18
|
+
run(): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=get.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../src/commands/xcode/snapshot/get.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpD,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,WAAW;IACvD,MAAM,CAAC,OAAO,SAAyB;IACvC,MAAM,CAAC,WAAW,SAAsD;IACxE,MAAM,CAAC,QAAQ,WAAuD;IAEtE,MAAM,CAAC,IAAI;;MAAgF;IAE3F,MAAM,CAAC,KAAK;;;;;;;;MAKV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAmB3B"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const base_command_1 = require("../../../base-command");
|
|
5
|
+
const backend_1 = require("../../../lib/backend");
|
|
6
|
+
const snapshots_1 = require("../../../lib/snapshots");
|
|
7
|
+
class XcodeSnapshotGet extends base_command_1.BaseCommand {
|
|
8
|
+
async run() {
|
|
9
|
+
const { args, flags } = await this.parse(XcodeSnapshotGet);
|
|
10
|
+
this.setParsedFlags(flags);
|
|
11
|
+
await this.withAuth(async () => {
|
|
12
|
+
const organizationId = flags.organization ?? (await (0, backend_1.whoAmI)(this.client));
|
|
13
|
+
const snapshot = await (0, snapshots_1.snapshotResource)(this.client, 'xcode', organizationId).get(args.key);
|
|
14
|
+
if (flags.json) {
|
|
15
|
+
this.outputJson(snapshot);
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
this.outputTable(['Field', 'Value'], Object.entries(snapshot).map(([field, value]) => [
|
|
19
|
+
field,
|
|
20
|
+
Array.isArray(value) ? value.join(', ') : String(value),
|
|
21
|
+
]));
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
XcodeSnapshotGet.summary = 'Get Xcode snapshots';
|
|
26
|
+
XcodeSnapshotGet.description = 'Get saved Xcode snapshots for your organization.';
|
|
27
|
+
XcodeSnapshotGet.examples = ['<%= config.bin %> xcode snapshot get myapp-main'];
|
|
28
|
+
XcodeSnapshotGet.args = { key: core_1.Args.string({ required: true, description: 'Exact snapshot key.' }) };
|
|
29
|
+
XcodeSnapshotGet.flags = {
|
|
30
|
+
...base_command_1.BaseCommand.baseFlags,
|
|
31
|
+
organization: core_1.Flags.string({
|
|
32
|
+
description: 'Organization ID. Defaults to the API key or login organization.',
|
|
33
|
+
}),
|
|
34
|
+
};
|
|
35
|
+
exports.default = XcodeSnapshotGet;
|
|
36
|
+
//# sourceMappingURL=get.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/commands/xcode/snapshot/get.ts"],"names":[],"mappings":";;AAAA,sCAA0C;AAC1C,wDAAoD;AACpD,kDAA8C;AAC9C,sDAA0D;AAE1D,MAAqB,gBAAiB,SAAQ,0BAAW;IAcvD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC3D,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,cAAc,GAAG,KAAK,CAAC,YAAY,IAAI,CAAC,MAAM,IAAA,gBAAM,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACzE,MAAM,QAAQ,GAAG,MAAM,IAAA,4BAAgB,EAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5F,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAC1B,OAAO;YACT,CAAC;YACD,IAAI,CAAC,WAAW,CACd,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;gBAC/C,KAAK;gBACL,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aACxD,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;;AA/BM,wBAAO,GAAG,qBAAqB,CAAC;AAChC,4BAAW,GAAG,kDAAkD,CAAC;AACjE,yBAAQ,GAAG,CAAC,iDAAiD,CAAC,CAAC;AAE/D,qBAAI,GAAG,EAAE,GAAG,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC;AAEpF,sBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,YAAY,EAAE,YAAK,CAAC,MAAM,CAAC;QACzB,WAAW,EAAE,iEAAiE;KAC/E,CAAC;CACH,CAAC;kBAZiB,gBAAgB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { BaseCommand } from '../../../base-command';
|
|
2
|
+
export default class XcodeSnapshotList extends BaseCommand {
|
|
3
|
+
static summary: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static examples: string[];
|
|
6
|
+
static flags: {
|
|
7
|
+
organization: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
8
|
+
prefix: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
9
|
+
limit: import("@oclif/core/lib/interfaces").OptionFlag<number, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
10
|
+
offset: import("@oclif/core/lib/interfaces").OptionFlag<number, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
11
|
+
'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
12
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
13
|
+
quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
14
|
+
create: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
15
|
+
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
16
|
+
daemon: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
17
|
+
};
|
|
18
|
+
run(): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../src/commands/xcode/snapshot/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpD,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,WAAW;IACxD,MAAM,CAAC,OAAO,SAA0B;IACxC,MAAM,CAAC,WAAW,SAAuD;IACzE,MAAM,CAAC,QAAQ,WAAoD;IAEnE,MAAM,CAAC,KAAK;;;;;;;;;;;MAQV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA0B3B"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const base_command_1 = require("../../../base-command");
|
|
5
|
+
const backend_1 = require("../../../lib/backend");
|
|
6
|
+
const snapshots_1 = require("../../../lib/snapshots");
|
|
7
|
+
class XcodeSnapshotList extends base_command_1.BaseCommand {
|
|
8
|
+
async run() {
|
|
9
|
+
const { flags } = await this.parse(XcodeSnapshotList);
|
|
10
|
+
this.setParsedFlags(flags);
|
|
11
|
+
await this.withAuth(async () => {
|
|
12
|
+
const organizationId = flags.organization ?? (await (0, backend_1.whoAmI)(this.client));
|
|
13
|
+
const result = await (0, snapshots_1.snapshotResource)(this.client, 'xcode', organizationId).list({
|
|
14
|
+
prefix: flags.prefix,
|
|
15
|
+
limit: flags.limit,
|
|
16
|
+
offset: flags.offset,
|
|
17
|
+
});
|
|
18
|
+
if (flags.json) {
|
|
19
|
+
this.outputJson(result);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
this.outputTable(['Key', 'Size (bytes)', 'Saved at'], result.snapshots.map((snapshot) => [
|
|
23
|
+
snapshot.key,
|
|
24
|
+
String(snapshot.archiveSizeBytes ?? 'Not saved'),
|
|
25
|
+
snapshot.publishedAt ?? '',
|
|
26
|
+
]));
|
|
27
|
+
if (result.nextOffset !== undefined)
|
|
28
|
+
this.info(`More snapshots: rerun with --offset ${result.nextOffset}.`);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
XcodeSnapshotList.summary = 'List Xcode snapshots';
|
|
33
|
+
XcodeSnapshotList.description = 'List saved Xcode snapshots for your organization.';
|
|
34
|
+
XcodeSnapshotList.examples = ['<%= config.bin %> xcode snapshot list --json'];
|
|
35
|
+
XcodeSnapshotList.flags = {
|
|
36
|
+
...base_command_1.BaseCommand.baseFlags,
|
|
37
|
+
organization: core_1.Flags.string({
|
|
38
|
+
description: 'Organization ID. Defaults to the API key or login organization.',
|
|
39
|
+
}),
|
|
40
|
+
prefix: core_1.Flags.string({ description: 'Only keys starting with this literal prefix.' }),
|
|
41
|
+
limit: core_1.Flags.integer({ description: 'Number of keys per page.', min: 1, max: 500, default: 25 }),
|
|
42
|
+
offset: core_1.Flags.integer({ description: 'Number of keys to skip.', min: 0, max: 100000, default: 0 }),
|
|
43
|
+
};
|
|
44
|
+
exports.default = XcodeSnapshotList;
|
|
45
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/xcode/snapshot/list.ts"],"names":[],"mappings":";;AAAA,sCAAoC;AACpC,wDAAoD;AACpD,kDAA8C;AAC9C,sDAA0D;AAE1D,MAAqB,iBAAkB,SAAQ,0BAAW;IAexD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACtD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,cAAc,GAAG,KAAK,CAAC,YAAY,IAAI,CAAC,MAAM,IAAA,gBAAM,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACzE,MAAM,MAAM,GAAG,MAAM,IAAA,4BAAgB,EAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC;gBAC/E,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;aACrB,CAAC,CAAC;YACH,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBACxB,OAAO;YACT,CAAC;YACD,IAAI,CAAC,WAAW,CACd,CAAC,KAAK,EAAE,cAAc,EAAE,UAAU,CAAC,EACnC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACjC,QAAQ,CAAC,GAAG;gBACZ,MAAM,CAAC,QAAQ,CAAC,gBAAgB,IAAI,WAAW,CAAC;gBAChD,QAAQ,CAAC,WAAW,IAAI,EAAE;aAC3B,CAAC,CACH,CAAC;YACF,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;gBACjC,IAAI,CAAC,IAAI,CAAC,uCAAuC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;IACL,CAAC;;AAvCM,yBAAO,GAAG,sBAAsB,CAAC;AACjC,6BAAW,GAAG,mDAAmD,CAAC;AAClE,0BAAQ,GAAG,CAAC,8CAA8C,CAAC,CAAC;AAE5D,uBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,YAAY,EAAE,YAAK,CAAC,MAAM,CAAC;QACzB,WAAW,EAAE,iEAAiE;KAC/E,CAAC;IACF,MAAM,EAAE,YAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,8CAA8C,EAAE,CAAC;IACrF,KAAK,EAAE,YAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,0BAA0B,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAChG,MAAM,EAAE,YAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,yBAAyB,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;CACnG,CAAC;kBAbiB,iBAAiB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manage.test.d.ts","sourceRoot":"","sources":["../../../../src/commands/xcode/snapshot/manage.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const list_1 = __importDefault(require("./list"));
|
|
7
|
+
const get_1 = __importDefault(require("./get"));
|
|
8
|
+
const delete_1 = __importDefault(require("./delete"));
|
|
9
|
+
const list_2 = __importDefault(require("../../ios/snapshot/list"));
|
|
10
|
+
const get_2 = __importDefault(require("../../ios/snapshot/get"));
|
|
11
|
+
const delete_2 = __importDefault(require("../../ios/snapshot/delete"));
|
|
12
|
+
const backend_1 = require("../../../lib/backend");
|
|
13
|
+
const snapshots_1 = require("../../../lib/snapshots");
|
|
14
|
+
jest.mock('../../../lib/snapshots', () => ({ snapshotResource: jest.fn() }));
|
|
15
|
+
jest.mock('../../../lib/backend', () => ({ whoAmI: jest.fn(async () => 'org_default') }));
|
|
16
|
+
describe.each([
|
|
17
|
+
{ kind: 'xcode', List: list_1.default, Get: get_1.default, Delete: delete_1.default },
|
|
18
|
+
{ kind: 'ios', List: list_2.default, Get: get_2.default, Delete: delete_2.default },
|
|
19
|
+
])('$kind snapshot commands', ({ kind, List, Get, Delete }) => {
|
|
20
|
+
const resource = { list: jest.fn(), get: jest.fn(), delete: jest.fn() };
|
|
21
|
+
const setup = (Command, flags = {}) => {
|
|
22
|
+
const command = Object.assign(Object.create(Command.prototype), {
|
|
23
|
+
parse: async () => ({ args: { key: 'app-main' }, flags: { json: true, ...flags } }),
|
|
24
|
+
setParsedFlags: jest.fn(),
|
|
25
|
+
withAuth: async (run) => run(),
|
|
26
|
+
outputJson: jest.fn(),
|
|
27
|
+
outputResult: jest.fn(),
|
|
28
|
+
outputTable: jest.fn(),
|
|
29
|
+
info: jest.fn(),
|
|
30
|
+
});
|
|
31
|
+
Object.defineProperty(command, 'client', { value: {} });
|
|
32
|
+
jest.mocked(snapshots_1.snapshotResource).mockReturnValue(resource);
|
|
33
|
+
return command;
|
|
34
|
+
};
|
|
35
|
+
beforeEach(() => jest.clearAllMocks());
|
|
36
|
+
test('lists one page with a usable next offset in JSON', async () => {
|
|
37
|
+
const page = { snapshots: [{ key: 'app-main', archiveSizeBytes: 42 }], nextOffset: 25 };
|
|
38
|
+
resource.list.mockResolvedValue(page);
|
|
39
|
+
const command = setup(List, { prefix: 'app-', limit: 25, offset: 0 });
|
|
40
|
+
await command.run();
|
|
41
|
+
expect(resource.list).toHaveBeenCalledWith({ prefix: 'app-', limit: 25, offset: 0 });
|
|
42
|
+
expect(command.outputJson).toHaveBeenCalledWith(page);
|
|
43
|
+
});
|
|
44
|
+
test('gets from the explicitly selected organization', async () => {
|
|
45
|
+
resource.get.mockResolvedValue({ key: 'app-main', saved: false });
|
|
46
|
+
const command = setup(Get, { organization: 'org_other' });
|
|
47
|
+
await command.run();
|
|
48
|
+
expect(resource.get).toHaveBeenCalledWith('app-main');
|
|
49
|
+
expect(snapshots_1.snapshotResource).toHaveBeenCalledWith(expect.anything(), kind, 'org_other');
|
|
50
|
+
expect(backend_1.whoAmI).not.toHaveBeenCalled();
|
|
51
|
+
});
|
|
52
|
+
test('reports deletion only after the server succeeds and exposes flush', async () => {
|
|
53
|
+
const command = setup(Delete);
|
|
54
|
+
resource.delete.mockRejectedValueOnce(new Error('storage unavailable'));
|
|
55
|
+
await expect(command.run()).rejects.toThrow('storage unavailable');
|
|
56
|
+
expect(command.outputResult).not.toHaveBeenCalled();
|
|
57
|
+
resource.delete.mockResolvedValueOnce(undefined);
|
|
58
|
+
await command.run();
|
|
59
|
+
expect(resource.delete).toHaveBeenLastCalledWith('app-main');
|
|
60
|
+
expect(snapshots_1.snapshotResource).toHaveBeenCalledWith(expect.anything(), kind, 'org_default');
|
|
61
|
+
expect(command.outputResult).toHaveBeenCalledWith({ ok: true, key: 'app-main' }, expect.stringContaining('Running instances'));
|
|
62
|
+
expect(Delete.aliases).toContain(`${kind}:snapshot:flush`);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
//# sourceMappingURL=manage.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manage.test.js","sourceRoot":"","sources":["../../../../src/commands/xcode/snapshot/manage.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,8 @@ export default class XcodeTest extends BaseCommand {
|
|
|
24
24
|
'xcodegen-project-root': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
25
25
|
id: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
26
26
|
'inactivity-timeout': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
27
|
+
model: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
28
|
+
'os-version': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
27
29
|
'build-only': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
28
30
|
'only-testing': import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
29
31
|
'skip-testing': import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../src/commands/xcode/test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../src/commands/xcode/test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAejD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,MAAM,CAAC,WAAW,SACiO;IAEnP,MAAM,CAAC,QAAQ,WAQb;IAEF,MAAM,CAAC,IAAI;;MAIT;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA2CV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAsG3B"}
|
|
@@ -10,6 +10,7 @@ const xcode_version_1 = require("../../lib/xcode-version");
|
|
|
10
10
|
const sync_flags_1 = require("../../lib/sync-flags");
|
|
11
11
|
const xcode_project_flags_1 = require("../../lib/xcode-project-flags");
|
|
12
12
|
const xctest_render_1 = require("../../lib/xctest-render");
|
|
13
|
+
const ios_device_selection_1 = require("../../lib/ios-device-selection");
|
|
13
14
|
class XcodeTest extends base_command_1.BaseCommand {
|
|
14
15
|
async run() {
|
|
15
16
|
const { args, flags } = await this.parse(XcodeTest);
|
|
@@ -19,6 +20,12 @@ class XcodeTest extends base_command_1.BaseCommand {
|
|
|
19
20
|
if (flags.id && flags['inactivity-timeout']) {
|
|
20
21
|
this.error('--inactivity-timeout controls newly created instances and cannot be combined with --id.');
|
|
21
22
|
}
|
|
23
|
+
if (flags.model || flags['os-version']) {
|
|
24
|
+
if (flags.id || flags['build-only'] || flags.create === false) {
|
|
25
|
+
this.error('--model and --os-version choose the simulator this run creates and cannot be combined with --id, --build-only or --no-create.');
|
|
26
|
+
}
|
|
27
|
+
this.autoCreateSimulator = (0, ios_device_selection_1.iosDeviceSelection)(flags['os-version'], flags.model);
|
|
28
|
+
}
|
|
22
29
|
await this.withAuth(async () => {
|
|
23
30
|
const target = flags['build-only'] ?
|
|
24
31
|
await this.resolveXcodeTargetOrCreate(flags.id)
|
|
@@ -94,6 +101,8 @@ XcodeTest.examples = [
|
|
|
94
101
|
'$ lim xcode test',
|
|
95
102
|
'$ lim xcode test ./MyProject --scheme MyApp',
|
|
96
103
|
'$ lim xcode test . --only-testing MyAppTests/LoginTests/testValidLogin',
|
|
104
|
+
"$ lim xcode test . --only-testing 'MyAppTests/CartSuite/addsItem()'",
|
|
105
|
+
'$ lim xcode test . --model ipad --os-version 27',
|
|
97
106
|
'$ lim xcode test . --skip-testing MyAppUITests',
|
|
98
107
|
'$ lim xcode test . --json > results.ndjson',
|
|
99
108
|
];
|
|
@@ -111,18 +120,26 @@ XcodeTest.flags = {
|
|
|
111
120
|
'inactivity-timeout': core_1.Flags.string({
|
|
112
121
|
description: 'Inactivity timeout for the instances created by this run (for example 3s, 1m). Forces fresh instances and cannot be combined with --id.',
|
|
113
122
|
}),
|
|
123
|
+
model: core_1.Flags.string({
|
|
124
|
+
description: 'Device model of the simulator this run creates. Forces fresh instances and cannot be combined with --id, --build-only or --no-create.',
|
|
125
|
+
options: ios_device_selection_1.IOS_MODELS.filter((model) => model !== 'watch'),
|
|
126
|
+
}),
|
|
127
|
+
'os-version': core_1.Flags.string({
|
|
128
|
+
description: 'iOS major version of the simulator this run creates. iPhone and iPad run both, iPhone Duo 27. Forces fresh instances and cannot be combined with --id, --build-only or --no-create.',
|
|
129
|
+
options: ios_device_selection_1.IOS_OS_VERSIONS,
|
|
130
|
+
}),
|
|
114
131
|
'build-only': core_1.Flags.boolean({
|
|
115
132
|
description: 'Compile the test targets without running them: uses a plain sandbox and skips simulator acquisition. Products stay on the sandbox for a later run. On servers without run suppression, a previously attached simulator still runs the tests.',
|
|
116
133
|
default: false,
|
|
117
134
|
}),
|
|
118
135
|
'only-testing': core_1.Flags.string({
|
|
119
|
-
description: "Run only these tests, in xcodebuild's -only-testing format: Target[/Class[/method]]. Repeat for multiple. Mutually exclusive with --skip-testing.",
|
|
136
|
+
description: "Run only these tests, in xcodebuild's -only-testing format: Target[/Class[/method]] for XCTest, Target/Suite[/test()] for Swift Testing. Repeat for multiple. Mutually exclusive with --skip-testing.",
|
|
120
137
|
multiple: true,
|
|
121
138
|
multipleNonGreedy: true,
|
|
122
139
|
exclusive: ['skip-testing'],
|
|
123
140
|
}),
|
|
124
141
|
'skip-testing': core_1.Flags.string({
|
|
125
|
-
description: "Skip these tests, in xcodebuild's -skip-testing format: Target[/Class[/method]]. Repeat for multiple.",
|
|
142
|
+
description: "Skip these tests, in xcodebuild's -skip-testing format: Target[/Class[/method]] for XCTest, Target/Suite[/test()] for Swift Testing. Repeat for multiple.",
|
|
126
143
|
multiple: true,
|
|
127
144
|
multipleNonGreedy: true,
|
|
128
145
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/commands/xcode/test.ts"],"names":[],"mappings":";;AAAA,sCAA0C;AAE1C,qDAAiD;AACjD,iDAAsD;AACtD,2CAA8C;AAC9C,2CAAsD;AACtD,uDAAsD;AACtD,2DAA0F;AAC1F,qDAAuE;AACvE,uEAIuC;AACvC,2DAA4E;
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/commands/xcode/test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.test.d.ts","sourceRoot":"","sources":["../../../src/commands/xcode/test.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const core_1 = require("@oclif/core");
|
|
7
|
+
const test_1 = __importDefault(require("./test"));
|
|
8
|
+
const config_1 = require("../../lib/config");
|
|
9
|
+
jest.mock('../../lib/config', () => ({
|
|
10
|
+
...jest.requireActual('../../lib/config'),
|
|
11
|
+
loadLastXcodeInstance: jest.fn(),
|
|
12
|
+
registerCreatedInstance: jest.fn(),
|
|
13
|
+
}));
|
|
14
|
+
jest.mock('../../lib/set-instance', () => ({ envInstanceTarget: () => undefined }));
|
|
15
|
+
const parse = (argv) => core_1.Parser.parse(argv, { flags: test_1.default.flags });
|
|
16
|
+
const commandWith = (parsed, withAuth) => Object.assign(Object.create(test_1.default.prototype), {
|
|
17
|
+
parse: async () => ({ ...parsed, args: {} }),
|
|
18
|
+
setParsedFlags: jest.fn(),
|
|
19
|
+
withAuth,
|
|
20
|
+
error: (message) => {
|
|
21
|
+
throw new Error(message);
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
test.each([
|
|
25
|
+
{ argv: ['--model', 'ipad', '--id', 'sandbox_euna_test'] },
|
|
26
|
+
{ argv: ['--os-version', '27', '--build-only'] },
|
|
27
|
+
{ argv: ['--model', 'ipad', '--no-create'] },
|
|
28
|
+
])('rejects device selection for a run that creates no simulator: $argv', async ({ argv }) => {
|
|
29
|
+
const withAuth = jest.fn();
|
|
30
|
+
const command = commandWith(await parse(argv), withAuth);
|
|
31
|
+
await expect(command.run()).rejects.toThrow(/cannot be combined with --id, --build-only or --no-create/);
|
|
32
|
+
expect(withAuth).not.toHaveBeenCalled();
|
|
33
|
+
});
|
|
34
|
+
test('--model and --os-version become the spec of the simulator the run creates', async () => {
|
|
35
|
+
const stop = new Error('stop before creating instances');
|
|
36
|
+
const command = commandWith(await parse(['--model', 'ipad', '--os-version', '27']), jest.fn().mockRejectedValue(stop));
|
|
37
|
+
await expect(command.run()).rejects.toThrow(stop);
|
|
38
|
+
expect(command.autoCreateSimulator).toEqual({
|
|
39
|
+
model: 'ipad',
|
|
40
|
+
clues: [{ kind: 'OSVersion', osVersion: '27' }],
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
test('a chosen simulator skips the recorded target and attaches a simulator of that model and version', async () => {
|
|
44
|
+
const recorded = { id: 'sandbox_euna_recorded', type: 'xcode' };
|
|
45
|
+
const created = { id: 'sandbox_euna_new', type: 'xcode' };
|
|
46
|
+
jest.mocked(config_1.loadLastXcodeInstance).mockReturnValueOnce(recorded);
|
|
47
|
+
const getSimulator = jest.fn();
|
|
48
|
+
const attachNewSimulator = jest.fn().mockResolvedValue({ simulator: { metadata: { id: 'ios_euna_new' } } });
|
|
49
|
+
const cmd = new test_1.default([], {});
|
|
50
|
+
Object.assign(cmd, {
|
|
51
|
+
autoCreateSimulator: { model: 'ipad', clues: [{ kind: 'OSVersion', osVersion: '27' }] },
|
|
52
|
+
shouldAutoCreateOnNotFound: () => true,
|
|
53
|
+
createStandaloneXcodeInstance: async () => created,
|
|
54
|
+
resolveXcodeClient: async () => ({ getSimulator, attachNewSimulator }),
|
|
55
|
+
info: jest.fn(),
|
|
56
|
+
});
|
|
57
|
+
const resolve = cmd;
|
|
58
|
+
await expect(resolve.resolveSimulatorBackedXcodeTargetOrCreate(undefined)).resolves.toMatchObject({
|
|
59
|
+
id: created.id,
|
|
60
|
+
});
|
|
61
|
+
expect(getSimulator).not.toHaveBeenCalled();
|
|
62
|
+
expect(attachNewSimulator).toHaveBeenCalledWith({
|
|
63
|
+
model: 'ipad',
|
|
64
|
+
clues: [{ kind: 'OSVersion', osVersion: '27' }],
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
//# sourceMappingURL=test.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.test.js","sourceRoot":"","sources":["../../../src/commands/xcode/test.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -497,11 +497,19 @@ test('asset push preserves the API response', async () => {
|
|
|
497
497
|
await c.run();
|
|
498
498
|
expect(JSON.parse(stdout)).toEqual(asset);
|
|
499
499
|
});
|
|
500
|
-
test('
|
|
501
|
-
|
|
502
|
-
const
|
|
503
|
-
|
|
504
|
-
|
|
500
|
+
test('keychain save returns the asset without an encryption key', async () => {
|
|
501
|
+
const c = command('ios/keychain/save');
|
|
502
|
+
const asset = {
|
|
503
|
+
id: 'asset_test',
|
|
504
|
+
name: 'keychain/login.tar.gz',
|
|
505
|
+
signedUploadUrl: 'https://assets.example/upload',
|
|
506
|
+
};
|
|
507
|
+
c.client.assets.list = jest.fn().mockResolvedValue([]);
|
|
508
|
+
c.client.assets.getOrCreate = jest.fn().mockResolvedValue(asset);
|
|
509
|
+
client.saveKeychain = jest.fn().mockResolvedValue(undefined);
|
|
510
|
+
await c.run();
|
|
511
|
+
expect(JSON.parse(stdout)).toEqual(asset);
|
|
512
|
+
expect(client.saveKeychain).toHaveBeenCalledWith({ url: asset.signedUploadUrl });
|
|
505
513
|
});
|
|
506
514
|
test('tunnel and asset deletion return their IDs', async () => {
|
|
507
515
|
await command('tunnel/delete', { name: 'staging' }).run();
|