@sentry/wizard 4.6.0 → 4.7.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/CHANGELOG.md +8 -0
- package/dist/bin.js +9 -0
- package/dist/bin.js.map +1 -1
- package/dist/e2e-tests/tests/flutter.test.js +16 -16
- package/dist/e2e-tests/tests/flutter.test.js.map +1 -1
- package/dist/e2e-tests/tests/help-message.test.d.ts +1 -0
- package/dist/e2e-tests/tests/help-message.test.js +56 -0
- package/dist/e2e-tests/tests/help-message.test.js.map +1 -0
- package/dist/e2e-tests/tests/nextjs-14.test.js +15 -15
- package/dist/e2e-tests/tests/nextjs-14.test.js.map +1 -1
- package/dist/e2e-tests/tests/nextjs-15.test.js +15 -15
- package/dist/e2e-tests/tests/nextjs-15.test.js.map +1 -1
- package/dist/e2e-tests/tests/nuxt-3.test.js +13 -12
- package/dist/e2e-tests/tests/nuxt-3.test.js.map +1 -1
- package/dist/e2e-tests/tests/nuxt-4.test.js +13 -12
- package/dist/e2e-tests/tests/nuxt-4.test.js.map +1 -1
- package/dist/e2e-tests/tests/remix.test.js +20 -20
- package/dist/e2e-tests/tests/remix.test.js.map +1 -1
- package/dist/e2e-tests/tests/sveltekit.test.js +20 -20
- package/dist/e2e-tests/tests/sveltekit.test.js.map +1 -1
- package/dist/e2e-tests/utils/index.js +15 -11
- package/dist/e2e-tests/utils/index.js.map +1 -1
- package/dist/lib/Constants.d.ts +5 -1
- package/dist/lib/Constants.js.map +1 -1
- package/dist/lib/Helper/Logging.d.ts +1 -1
- package/dist/lib/Helper/Logging.js.map +1 -1
- package/dist/lib/Helper/__tests__/File.js +9 -9
- package/dist/lib/Helper/__tests__/File.js.map +1 -1
- package/dist/lib/Helper/__tests__/MergeConfig.js +17 -17
- package/dist/lib/Helper/__tests__/MergeConfig.js.map +1 -1
- package/dist/lib/Helper/__tests__/SentryCli.js +23 -22
- package/dist/lib/Helper/__tests__/SentryCli.js.map +1 -1
- package/dist/lib/Setup.d.ts +2 -1
- package/dist/lib/Setup.js +12 -2
- package/dist/lib/Setup.js.map +1 -1
- package/dist/lib/Steps/BaseStep.d.ts +1 -1
- package/dist/lib/Steps/BaseStep.js.map +1 -1
- package/dist/lib/Steps/Integrations/Cordova.js.map +1 -1
- package/dist/lib/Steps/Welcome.js +5 -0
- package/dist/lib/Steps/Welcome.js.map +1 -1
- package/dist/lib/__tests__/Env.js +4 -3
- package/dist/lib/__tests__/Env.js.map +1 -1
- package/dist/src/apple/apple-wizard.js +24 -64
- package/dist/src/apple/apple-wizard.js.map +1 -1
- package/dist/src/apple/configure-package-manager.d.ts +5 -0
- package/dist/src/apple/configure-package-manager.js +68 -0
- package/dist/src/apple/configure-package-manager.js.map +1 -0
- package/dist/src/apple/configure-sentry-cli.d.ts +4 -0
- package/dist/src/apple/configure-sentry-cli.js +47 -0
- package/dist/src/apple/configure-sentry-cli.js.map +1 -0
- package/dist/src/apple/configure-xcode-project.d.ts +8 -0
- package/dist/src/apple/configure-xcode-project.js +11 -0
- package/dist/src/apple/configure-xcode-project.js.map +1 -0
- package/dist/src/apple/inject-code-snippet.d.ts +6 -0
- package/dist/src/apple/inject-code-snippet.js +54 -0
- package/dist/src/apple/inject-code-snippet.js.map +1 -0
- package/dist/src/apple/templates.js +11 -7
- package/dist/src/apple/templates.js.map +1 -1
- package/dist/src/apple/xcode-manager.js +3 -6
- package/dist/src/apple/xcode-manager.js.map +1 -1
- package/dist/src/nextjs/templates.js +3 -1
- package/dist/src/nextjs/templates.js.map +1 -1
- package/dist/src/react-native/javascript.d.ts +6 -4
- package/dist/src/react-native/javascript.js +25 -9
- package/dist/src/react-native/javascript.js.map +1 -1
- package/dist/src/react-native/react-native-wizard.d.ts +4 -0
- package/dist/src/react-native/react-native-wizard.js +30 -5
- package/dist/src/react-native/react-native-wizard.js.map +1 -1
- package/dist/src/react-native/xcode.d.ts +7 -3
- package/dist/src/react-native/xcode.js +64 -20
- package/dist/src/react-native/xcode.js.map +1 -1
- package/dist/src/run.js +2 -2
- package/dist/src/run.js.map +1 -1
- package/dist/src/utils/clack/index.js +3 -1
- package/dist/src/utils/clack/index.js.map +1 -1
- package/dist/src/utils/package-manager.d.ts +2 -0
- package/dist/src/utils/package-manager.js +55 -5
- package/dist/src/utils/package-manager.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/dist/test/android/code-tools.test.js +13 -12
- package/dist/test/android/code-tools.test.js.map +1 -1
- package/dist/test/apple/cocoapod.test.js +77 -72
- package/dist/test/apple/cocoapod.test.js.map +1 -1
- package/dist/test/apple/code-tools.test.js +173 -166
- package/dist/test/apple/code-tools.test.js.map +1 -1
- package/dist/test/apple/fastfile.test.js +86 -83
- package/dist/test/apple/fastfile.test.js.map +1 -1
- package/dist/test/apple/templates.test.js +32 -27
- package/dist/test/apple/templates.test.js.map +1 -1
- package/dist/test/apple/xcode-manager.test.js +182 -183
- package/dist/test/apple/xcode-manager.test.js.map +1 -1
- package/dist/test/flutter/code-tools.test.js +29 -28
- package/dist/test/flutter/code-tools.test.js.map +1 -1
- package/dist/test/flutter/templates.test.js +15 -14
- package/dist/test/flutter/templates.test.js.map +1 -1
- package/dist/test/nextjs/templates.test.js +43 -36
- package/dist/test/nextjs/templates.test.js.map +1 -1
- package/dist/test/nuxt/templates.test.js +25 -24
- package/dist/test/nuxt/templates.test.js.map +1 -1
- package/dist/test/react-native/expo-metro.test.js +11 -10
- package/dist/test/react-native/expo-metro.test.js.map +1 -1
- package/dist/test/react-native/expo.test.js +11 -10
- package/dist/test/react-native/expo.test.js.map +1 -1
- package/dist/test/react-native/gradle.test.js +27 -26
- package/dist/test/react-native/gradle.test.js.map +1 -1
- package/dist/test/react-native/javascript.test.js +108 -58
- package/dist/test/react-native/javascript.test.js.map +1 -1
- package/dist/test/react-native/metro.test.js +65 -64
- package/dist/test/react-native/metro.test.js.map +1 -1
- package/dist/test/react-native/xcode.test.js +138 -37
- package/dist/test/react-native/xcode.test.js.map +1 -1
- package/dist/test/remix/client-entry.test.js +8 -7
- package/dist/test/remix/client-entry.test.js.map +1 -1
- package/dist/test/remix/server-instrumentation.test.js +6 -5
- package/dist/test/remix/server-instrumentation.test.js.map +1 -1
- package/dist/test/sourcemaps/tools/sentry-cli.test.js +20 -20
- package/dist/test/sourcemaps/tools/sentry-cli.test.js.map +1 -1
- package/dist/test/sourcemaps/tools/tsc.test.js +13 -14
- package/dist/test/sourcemaps/tools/tsc.test.js.map +1 -1
- package/dist/test/sourcemaps/tools/vite.test.js +13 -14
- package/dist/test/sourcemaps/tools/vite.test.js.map +1 -1
- package/dist/test/sourcemaps/tools/webpack.test.js +19 -20
- package/dist/test/sourcemaps/tools/webpack.test.js.map +1 -1
- package/dist/test/sveltekit/templates.test.js +13 -12
- package/dist/test/sveltekit/templates.test.js.map +1 -1
- package/dist/test/utils/ast-utils.test.js +45 -44
- package/dist/test/utils/ast-utils.test.js.map +1 -1
- package/dist/test/utils/clack/index.test.js +140 -144
- package/dist/test/utils/clack/index.test.js.map +1 -1
- package/dist/test/utils/package-manager.test.js +8 -7
- package/dist/test/utils/package-manager.test.js.map +1 -1
- package/package.json +10 -38
- package/dist/e2e-tests/jest.config.d.ts +0 -17
- package/dist/e2e-tests/jest.config.js +0 -23
- package/dist/e2e-tests/jest.config.js.map +0 -1
|
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports._detectPackageManger = exports.packageManagers = exports.NPM = exports.PNPM = exports.YARN_V2 = exports.YARN_V1 = exports.BUN = void 0;
|
|
26
|
+
exports._detectPackageManger = exports.packageManagers = exports.NPM = exports.PNPM = exports.YARN_V2 = exports.YARN_V1 = exports.DENO = exports.BUN = void 0;
|
|
27
27
|
const fs = __importStar(require("node:fs"));
|
|
28
28
|
const path = __importStar(require("node:path"));
|
|
29
29
|
const Sentry = __importStar(require("@sentry/node"));
|
|
@@ -37,7 +37,43 @@ exports.BUN = {
|
|
|
37
37
|
runScriptCommand: 'bun run',
|
|
38
38
|
flags: '',
|
|
39
39
|
forceInstallFlag: '--force',
|
|
40
|
-
detect: () => ['bun.lockb', 'bun.lock'].some((lockFile) =>
|
|
40
|
+
detect: () => ['bun.lockb', 'bun.lock'].some((lockFile) => {
|
|
41
|
+
try {
|
|
42
|
+
return fs.existsSync(path.join(process.cwd(), lockFile));
|
|
43
|
+
}
|
|
44
|
+
catch (e) {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
}),
|
|
48
|
+
addOverride: async (pkgName, pkgVersion) => {
|
|
49
|
+
const packageDotJson = await (0, clack_1.getPackageDotJson)();
|
|
50
|
+
const overrides = packageDotJson.overrides || {};
|
|
51
|
+
await (0, clack_1.updatePackageDotJson)({
|
|
52
|
+
...packageDotJson,
|
|
53
|
+
overrides: {
|
|
54
|
+
...overrides,
|
|
55
|
+
[pkgName]: pkgVersion,
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
exports.DENO = {
|
|
61
|
+
name: 'deno',
|
|
62
|
+
label: 'Deno',
|
|
63
|
+
installCommand: 'install',
|
|
64
|
+
buildCommand: 'deno task build',
|
|
65
|
+
runScriptCommand: 'deno task',
|
|
66
|
+
flags: '',
|
|
67
|
+
forceInstallFlag: '--force',
|
|
68
|
+
registry: 'npm',
|
|
69
|
+
detect: () => {
|
|
70
|
+
try {
|
|
71
|
+
return fs.existsSync(path.join(process.cwd(), 'deno.lock'));
|
|
72
|
+
}
|
|
73
|
+
catch (e) {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
},
|
|
41
77
|
addOverride: async (pkgName, pkgVersion) => {
|
|
42
78
|
const packageDotJson = await (0, clack_1.getPackageDotJson)();
|
|
43
79
|
const overrides = packageDotJson.overrides || {};
|
|
@@ -121,7 +157,14 @@ exports.PNPM = {
|
|
|
121
157
|
runScriptCommand: 'pnpm',
|
|
122
158
|
flags: '--ignore-workspace-root-check',
|
|
123
159
|
forceInstallFlag: '--force',
|
|
124
|
-
detect: () =>
|
|
160
|
+
detect: () => {
|
|
161
|
+
try {
|
|
162
|
+
return fs.existsSync(path.join(process.cwd(), 'pnpm-lock.yaml'));
|
|
163
|
+
}
|
|
164
|
+
catch (e) {
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
},
|
|
125
168
|
addOverride: async (pkgName, pkgVersion) => {
|
|
126
169
|
const packageDotJson = await (0, clack_1.getPackageDotJson)();
|
|
127
170
|
const pnpm = packageDotJson.pnpm || {};
|
|
@@ -146,7 +189,14 @@ exports.NPM = {
|
|
|
146
189
|
runScriptCommand: 'npm run',
|
|
147
190
|
flags: '',
|
|
148
191
|
forceInstallFlag: '--force',
|
|
149
|
-
detect: () =>
|
|
192
|
+
detect: () => {
|
|
193
|
+
try {
|
|
194
|
+
return fs.existsSync(path.join(process.cwd(), 'package-lock.json'));
|
|
195
|
+
}
|
|
196
|
+
catch (e) {
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
},
|
|
150
200
|
addOverride: async (pkgName, pkgVersion) => {
|
|
151
201
|
const packageDotJson = await (0, clack_1.getPackageDotJson)();
|
|
152
202
|
const overrides = packageDotJson.overrides || {};
|
|
@@ -159,7 +209,7 @@ exports.NPM = {
|
|
|
159
209
|
});
|
|
160
210
|
},
|
|
161
211
|
};
|
|
162
|
-
exports.packageManagers = [exports.
|
|
212
|
+
exports.packageManagers = [exports.NPM, exports.YARN_V1, exports.YARN_V2, exports.PNPM, exports.BUN, exports.DENO];
|
|
163
213
|
/**
|
|
164
214
|
* Exported only for testing.
|
|
165
215
|
* DO NOT call this function directly!
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../../../src/utils/package-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import * as fs from 'node:fs';\nimport * as path from 'node:path';\n\nimport * as Sentry from '@sentry/node';\nimport { traceStep } from '../telemetry';\nimport { getPackageDotJson, updatePackageDotJson } from './clack';\n\nexport interface PackageManager {\n name: string;\n label: string;\n installCommand: string;\n buildCommand: string;\n /* The command that the package manager uses to run a script from package.json */\n runScriptCommand: string;\n flags: string;\n forceInstallFlag: string;\n detect: () => boolean;\n addOverride: (pkgName: string, pkgVersion: string) => Promise<void>;\n}\n\nexport const BUN: PackageManager = {\n name: 'bun',\n label: 'Bun',\n installCommand: 'add',\n buildCommand: 'bun run build',\n runScriptCommand: 'bun run',\n flags: '',\n forceInstallFlag: '--force',\n detect: () =>\n ['bun.lockb', 'bun.lock'].some((lockFile) =>\n fs.existsSync(path.join(process.cwd(), lockFile)),\n ),\n addOverride: async (pkgName, pkgVersion): Promise<void> => {\n const packageDotJson = await getPackageDotJson();\n const overrides = packageDotJson.overrides || {};\n\n await updatePackageDotJson({\n ...packageDotJson,\n overrides: {\n ...overrides,\n [pkgName]: pkgVersion,\n },\n });\n },\n};\nexport const YARN_V1: PackageManager = {\n name: 'yarn',\n label: 'Yarn V1',\n installCommand: 'add',\n buildCommand: 'yarn build',\n runScriptCommand: 'yarn',\n flags: '--ignore-workspace-root-check',\n forceInstallFlag: '--force',\n detect: () => {\n try {\n return fs\n .readFileSync(path.join(process.cwd(), 'yarn.lock'), 'utf-8')\n .slice(0, 500)\n .includes('yarn lockfile v1');\n } catch (e) {\n return false;\n }\n },\n addOverride: async (pkgName, pkgVersion): Promise<void> => {\n const packageDotJson = await getPackageDotJson();\n const resolutions = packageDotJson.resolutions || {};\n\n await updatePackageDotJson({\n ...packageDotJson,\n resolutions: {\n ...resolutions,\n [pkgName]: pkgVersion,\n },\n });\n },\n};\n/** YARN V2/3/4 */\nexport const YARN_V2: PackageManager = {\n name: 'yarn',\n label: 'Yarn V2/3/4',\n installCommand: 'add',\n buildCommand: 'yarn build',\n runScriptCommand: 'yarn',\n flags: '',\n forceInstallFlag: '--force',\n detect: () => {\n try {\n return fs\n .readFileSync(path.join(process.cwd(), 'yarn.lock'), 'utf-8')\n .slice(0, 500)\n .includes('__metadata');\n } catch (e) {\n return false;\n }\n },\n addOverride: async (pkgName, pkgVersion): Promise<void> => {\n const packageDotJson = await getPackageDotJson();\n const resolutions = packageDotJson.resolutions || {};\n\n await updatePackageDotJson({\n ...packageDotJson,\n resolutions: {\n ...resolutions,\n [pkgName]: pkgVersion,\n },\n });\n },\n};\nexport const PNPM: PackageManager = {\n name: 'pnpm',\n label: 'PNPM',\n installCommand: 'add',\n buildCommand: 'pnpm build',\n runScriptCommand: 'pnpm',\n flags: '--ignore-workspace-root-check',\n forceInstallFlag: '--force',\n detect: () => fs.existsSync(path.join(process.cwd(), 'pnpm-lock.yaml')),\n addOverride: async (pkgName, pkgVersion): Promise<void> => {\n const packageDotJson = await getPackageDotJson();\n const pnpm = packageDotJson.pnpm || {};\n const overrides = pnpm.overrides || {};\n\n await updatePackageDotJson({\n ...packageDotJson,\n pnpm: {\n ...pnpm,\n overrides: {\n ...overrides,\n [pkgName]: pkgVersion,\n },\n },\n });\n },\n};\nexport const NPM: PackageManager = {\n name: 'npm',\n label: 'NPM',\n installCommand: 'install',\n buildCommand: 'npm run build',\n runScriptCommand: 'npm run',\n flags: '',\n forceInstallFlag: '--force',\n detect: () => fs.existsSync(path.join(process.cwd(), 'package-lock.json')),\n addOverride: async (pkgName, pkgVersion): Promise<void> => {\n const packageDotJson = await getPackageDotJson();\n const overrides = packageDotJson.overrides || {};\n\n await updatePackageDotJson({\n ...packageDotJson,\n overrides: {\n ...overrides,\n [pkgName]: pkgVersion,\n },\n });\n },\n};\n\nexport const packageManagers = [BUN, YARN_V1, YARN_V2, PNPM, NPM];\n\n/**\n * Exported only for testing.\n * DO NOT call this function directly!\n * Use `getPackageManger` instead.\n */\nexport function _detectPackageManger(\n managers?: PackageManager[],\n): PackageManager | null {\n return traceStep('detect-package-manager', () => {\n const foundPackageMangers = (managers ?? packageManagers).filter(\n (packageManager) => packageManager.detect(),\n );\n\n // Only consider a package manager detected if we found exactly one.\n // If we find more than one, we should not make any assumptions.\n if (foundPackageMangers.length === 1) {\n Sentry.setTag('package-manager', foundPackageMangers[0].name);\n return foundPackageMangers[0];\n }\n\n Sentry.setTag('package-manager', 'not-detected');\n return null;\n });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../../../src/utils/package-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import * as fs from 'node:fs';\nimport * as path from 'node:path';\n\nimport * as Sentry from '@sentry/node';\nimport { traceStep } from '../telemetry';\nimport { getPackageDotJson, updatePackageDotJson } from './clack';\n\nexport interface PackageManager {\n name: string;\n label: string;\n installCommand: string;\n buildCommand: string;\n /* The command that the package manager uses to run a script from package.json */\n runScriptCommand: string;\n flags: string;\n forceInstallFlag: string;\n registry?: string;\n detect: () => boolean;\n addOverride: (pkgName: string, pkgVersion: string) => Promise<void>;\n}\n\nexport const BUN: PackageManager = {\n name: 'bun',\n label: 'Bun',\n installCommand: 'add',\n buildCommand: 'bun run build',\n runScriptCommand: 'bun run',\n flags: '',\n forceInstallFlag: '--force',\n detect: () =>\n ['bun.lockb', 'bun.lock'].some((lockFile) => {\n try {\n return fs.existsSync(path.join(process.cwd(), lockFile));\n } catch (e) {\n return false;\n }\n }),\n addOverride: async (pkgName, pkgVersion): Promise<void> => {\n const packageDotJson = await getPackageDotJson();\n const overrides = packageDotJson.overrides || {};\n\n await updatePackageDotJson({\n ...packageDotJson,\n overrides: {\n ...overrides,\n [pkgName]: pkgVersion,\n },\n });\n },\n};\nexport const DENO: PackageManager = {\n name: 'deno',\n label: 'Deno',\n installCommand: 'install',\n buildCommand: 'deno task build',\n runScriptCommand: 'deno task',\n flags: '',\n forceInstallFlag: '--force',\n registry: 'npm',\n detect: () => {\n try {\n return fs.existsSync(path.join(process.cwd(), 'deno.lock'));\n } catch (e) {\n return false;\n }\n },\n addOverride: async (pkgName, pkgVersion): Promise<void> => {\n const packageDotJson = await getPackageDotJson();\n const overrides = packageDotJson.overrides || {};\n\n await updatePackageDotJson({\n ...packageDotJson,\n overrides: {\n ...overrides,\n [pkgName]: pkgVersion,\n },\n });\n },\n};\nexport const YARN_V1: PackageManager = {\n name: 'yarn',\n label: 'Yarn V1',\n installCommand: 'add',\n buildCommand: 'yarn build',\n runScriptCommand: 'yarn',\n flags: '--ignore-workspace-root-check',\n forceInstallFlag: '--force',\n detect: () => {\n try {\n return fs\n .readFileSync(path.join(process.cwd(), 'yarn.lock'), 'utf-8')\n .slice(0, 500)\n .includes('yarn lockfile v1');\n } catch (e) {\n return false;\n }\n },\n addOverride: async (pkgName, pkgVersion): Promise<void> => {\n const packageDotJson = await getPackageDotJson();\n const resolutions = packageDotJson.resolutions || {};\n\n await updatePackageDotJson({\n ...packageDotJson,\n resolutions: {\n ...resolutions,\n [pkgName]: pkgVersion,\n },\n });\n },\n};\n/** YARN V2/3/4 */\nexport const YARN_V2: PackageManager = {\n name: 'yarn',\n label: 'Yarn V2/3/4',\n installCommand: 'add',\n buildCommand: 'yarn build',\n runScriptCommand: 'yarn',\n flags: '',\n forceInstallFlag: '--force',\n detect: () => {\n try {\n return fs\n .readFileSync(path.join(process.cwd(), 'yarn.lock'), 'utf-8')\n .slice(0, 500)\n .includes('__metadata');\n } catch (e) {\n return false;\n }\n },\n addOverride: async (pkgName, pkgVersion): Promise<void> => {\n const packageDotJson = await getPackageDotJson();\n const resolutions = packageDotJson.resolutions || {};\n\n await updatePackageDotJson({\n ...packageDotJson,\n resolutions: {\n ...resolutions,\n [pkgName]: pkgVersion,\n },\n });\n },\n};\nexport const PNPM: PackageManager = {\n name: 'pnpm',\n label: 'PNPM',\n installCommand: 'add',\n buildCommand: 'pnpm build',\n runScriptCommand: 'pnpm',\n flags: '--ignore-workspace-root-check',\n forceInstallFlag: '--force',\n detect: () => {\n try {\n return fs.existsSync(path.join(process.cwd(), 'pnpm-lock.yaml'));\n } catch (e) {\n return false;\n }\n },\n addOverride: async (pkgName, pkgVersion): Promise<void> => {\n const packageDotJson = await getPackageDotJson();\n const pnpm = packageDotJson.pnpm || {};\n const overrides = pnpm.overrides || {};\n\n await updatePackageDotJson({\n ...packageDotJson,\n pnpm: {\n ...pnpm,\n overrides: {\n ...overrides,\n [pkgName]: pkgVersion,\n },\n },\n });\n },\n};\nexport const NPM: PackageManager = {\n name: 'npm',\n label: 'NPM',\n installCommand: 'install',\n buildCommand: 'npm run build',\n runScriptCommand: 'npm run',\n flags: '',\n forceInstallFlag: '--force',\n detect: () => {\n try {\n return fs.existsSync(path.join(process.cwd(), 'package-lock.json'));\n } catch (e) {\n return false;\n }\n },\n addOverride: async (pkgName, pkgVersion): Promise<void> => {\n const packageDotJson = await getPackageDotJson();\n const overrides = packageDotJson.overrides || {};\n\n await updatePackageDotJson({\n ...packageDotJson,\n overrides: {\n ...overrides,\n [pkgName]: pkgVersion,\n },\n });\n },\n};\n\nexport const packageManagers = [NPM, YARN_V1, YARN_V2, PNPM, BUN, DENO];\n\n/**\n * Exported only for testing.\n * DO NOT call this function directly!\n * Use `getPackageManger` instead.\n */\nexport function _detectPackageManger(\n managers?: PackageManager[],\n): PackageManager | null {\n return traceStep('detect-package-manager', () => {\n const foundPackageMangers = (managers ?? packageManagers).filter(\n (packageManager) => packageManager.detect(),\n );\n\n // Only consider a package manager detected if we found exactly one.\n // If we find more than one, we should not make any assumptions.\n if (foundPackageMangers.length === 1) {\n Sentry.setTag('package-manager', foundPackageMangers[0].name);\n return foundPackageMangers[0];\n }\n\n Sentry.setTag('package-manager', 'not-detected');\n return null;\n });\n}\n"]}
|
package/dist/src/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const WIZARD_VERSION = "4.
|
|
1
|
+
export declare const WIZARD_VERSION = "4.7.0";
|
package/dist/src/version.js
CHANGED
package/dist/src/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA,oCAAoC;AACpC,2CAA2C;;;AAE9B,QAAA,cAAc,GAAG,OAAO,CAAC","sourcesContent":["// DO NOT modify this file manually!\n// This is file is updated at release time.\n\nexport const WIZARD_VERSION = '4.
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA,oCAAoC;AACpC,2CAA2C;;;AAE9B,QAAA,cAAc,GAAG,OAAO,CAAC","sourcesContent":["// DO NOT modify this file manually!\n// This is file is updated at release time.\n\nexport const WIZARD_VERSION = '4.7.0';\n"]}
|
|
@@ -1,32 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
3
4
|
const code_tools_1 = require("../../src/android/code-tools");
|
|
4
|
-
describe('code-tools', () => {
|
|
5
|
-
describe('getLastImportLineLocation', () => {
|
|
6
|
-
it('returns proper line index', () => {
|
|
5
|
+
(0, vitest_1.describe)('code-tools', () => {
|
|
6
|
+
(0, vitest_1.describe)('getLastImportLineLocation', () => {
|
|
7
|
+
(0, vitest_1.it)('returns proper line index', () => {
|
|
7
8
|
const code = `import a.b.c;\n` + `//<insert-location>\n` + `class X {}`;
|
|
8
|
-
expect((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
|
|
9
|
+
(0, vitest_1.expect)((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
|
|
9
10
|
});
|
|
10
|
-
it('returns proper line index when static import is used', () => {
|
|
11
|
+
(0, vitest_1.it)('returns proper line index when static import is used', () => {
|
|
11
12
|
const code = `import static a.b.c;\n` + `//<insert-location>\n` + `class X {}`;
|
|
12
|
-
expect((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
|
|
13
|
+
(0, vitest_1.expect)((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
|
|
13
14
|
});
|
|
14
|
-
it('returns proper line index when wildcard import is used', () => {
|
|
15
|
+
(0, vitest_1.it)('returns proper line index when wildcard import is used', () => {
|
|
15
16
|
const code = `import a.b.*\n` + `//<insert-location>\n` + `class X {}`;
|
|
16
|
-
expect((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
|
|
17
|
+
(0, vitest_1.expect)((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
|
|
17
18
|
});
|
|
18
|
-
it('returns proper line index when alias import is used', () => {
|
|
19
|
+
(0, vitest_1.it)('returns proper line index when alias import is used', () => {
|
|
19
20
|
const code = `import static a.b.c as d\n` + `//<insert-location>\n` + `class X {}`;
|
|
20
|
-
expect((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
|
|
21
|
+
(0, vitest_1.expect)((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
|
|
21
22
|
});
|
|
22
|
-
it('returns proper line index when multiple imports are present', () => {
|
|
23
|
+
(0, vitest_1.it)('returns proper line index when multiple imports are present', () => {
|
|
23
24
|
const code = `import static a.b.c as d\n` +
|
|
24
25
|
`import a.b.*\n` +
|
|
25
26
|
`import static a.b.c;\n` +
|
|
26
27
|
`import a.b.c;\n` +
|
|
27
28
|
`//<insert-location>\n` +
|
|
28
29
|
`class X {}`;
|
|
29
|
-
expect((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
|
|
30
|
+
(0, vitest_1.expect)((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
|
|
30
31
|
});
|
|
31
32
|
});
|
|
32
33
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-tools.test.js","sourceRoot":"","sources":["../../../test/android/code-tools.test.ts"],"names":[],"mappings":";;AAAA,6DAAyE;AAEzE,
|
|
1
|
+
{"version":3,"file":"code-tools.test.js","sourceRoot":"","sources":["../../../test/android/code-tools.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,6DAAyE;AAEzE,IAAA,iBAAQ,EAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAA,iBAAQ,EAAC,2BAA2B,EAAE,GAAG,EAAE;QACzC,IAAA,WAAE,EAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,IAAI,GAAG,iBAAiB,GAAG,uBAAuB,GAAG,YAAY,CAAC;YACxE,IAAA,eAAM,EAAC,IAAA,sCAAyB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC1C,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CACpC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,IAAI,GACR,wBAAwB,GAAG,uBAAuB,GAAG,YAAY,CAAC;YACpE,IAAA,eAAM,EAAC,IAAA,sCAAyB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC1C,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CACpC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,wDAAwD,EAAE,GAAG,EAAE;YAChE,MAAM,IAAI,GAAG,gBAAgB,GAAG,uBAAuB,GAAG,YAAY,CAAC;YACvE,IAAA,eAAM,EAAC,IAAA,sCAAyB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC1C,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CACpC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,MAAM,IAAI,GACR,4BAA4B,GAAG,uBAAuB,GAAG,YAAY,CAAC;YACxE,IAAA,eAAM,EAAC,IAAA,sCAAyB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC1C,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CACpC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,6DAA6D,EAAE,GAAG,EAAE;YACrE,MAAM,IAAI,GACR,4BAA4B;gBAC5B,gBAAgB;gBAChB,wBAAwB;gBACxB,iBAAiB;gBACjB,uBAAuB;gBACvB,YAAY,CAAC;YACf,IAAA,eAAM,EAAC,IAAA,sCAAyB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC1C,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CACpC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { describe, expect, it } from 'vitest';\nimport { getLastImportLineLocation } from '../../src/android/code-tools';\n\ndescribe('code-tools', () => {\n describe('getLastImportLineLocation', () => {\n it('returns proper line index', () => {\n const code = `import a.b.c;\\n` + `//<insert-location>\\n` + `class X {}`;\n expect(getLastImportLineLocation(code)).toBe(\n code.indexOf('//<insert-location>'),\n );\n });\n\n it('returns proper line index when static import is used', () => {\n const code =\n `import static a.b.c;\\n` + `//<insert-location>\\n` + `class X {}`;\n expect(getLastImportLineLocation(code)).toBe(\n code.indexOf('//<insert-location>'),\n );\n });\n\n it('returns proper line index when wildcard import is used', () => {\n const code = `import a.b.*\\n` + `//<insert-location>\\n` + `class X {}`;\n expect(getLastImportLineLocation(code)).toBe(\n code.indexOf('//<insert-location>'),\n );\n });\n\n it('returns proper line index when alias import is used', () => {\n const code =\n `import static a.b.c as d\\n` + `//<insert-location>\\n` + `class X {}`;\n expect(getLastImportLineLocation(code)).toBe(\n code.indexOf('//<insert-location>'),\n );\n });\n\n it('returns proper line index when multiple imports are present', () => {\n const code =\n `import static a.b.c as d\\n` +\n `import a.b.*\\n` +\n `import static a.b.c;\\n` +\n `import a.b.c;\\n` +\n `//<insert-location>\\n` +\n `class X {}`;\n expect(getLastImportLineLocation(code)).toBe(\n code.indexOf('//<insert-location>'),\n );\n });\n });\n});\n"]}
|
|
@@ -31,29 +31,34 @@ const cocoapod_1 = require("../../src/apple/cocoapod");
|
|
|
31
31
|
const bash = __importStar(require("../../src/utils/bash"));
|
|
32
32
|
// @ts-expect-error - clack is ESM and TS complains about that. It works though
|
|
33
33
|
const clack = __importStar(require("@clack/prompts"));
|
|
34
|
-
|
|
34
|
+
const vitest_1 = require("vitest");
|
|
35
|
+
vitest_1.vi.mock('@clack/prompts', async () => ({
|
|
35
36
|
__esModule: true,
|
|
36
|
-
...
|
|
37
|
+
...(await vitest_1.vi.importActual('@clack/prompts')),
|
|
37
38
|
}));
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
vitest_1.vi.mock('../../src/utils/bash');
|
|
40
|
+
vitest_1.vi.spyOn(Sentry, 'setTag').mockImplementation(() => {
|
|
41
|
+
/* empty */
|
|
42
|
+
});
|
|
43
|
+
vitest_1.vi.spyOn(Sentry, 'captureException').mockImplementation(() => 'id');
|
|
41
44
|
const clackSpinnerMock = {
|
|
42
|
-
start:
|
|
43
|
-
stop:
|
|
44
|
-
message:
|
|
45
|
+
start: vitest_1.vi.fn(),
|
|
46
|
+
stop: vitest_1.vi.fn(),
|
|
47
|
+
message: vitest_1.vi.fn(),
|
|
45
48
|
};
|
|
46
|
-
describe('cocoapod', () => {
|
|
47
|
-
beforeEach(() => {
|
|
48
|
-
|
|
49
|
-
|
|
49
|
+
(0, vitest_1.describe)('cocoapod', () => {
|
|
50
|
+
(0, vitest_1.beforeEach)(() => {
|
|
51
|
+
vitest_1.vi.spyOn(clack, 'spinner').mockReturnValue(clackSpinnerMock);
|
|
52
|
+
vitest_1.vi.spyOn(clack.log, 'error').mockImplementation(() => {
|
|
53
|
+
/* empty */
|
|
54
|
+
});
|
|
50
55
|
});
|
|
51
|
-
afterEach(() => {
|
|
52
|
-
|
|
56
|
+
(0, vitest_1.afterEach)(() => {
|
|
57
|
+
vitest_1.vi.clearAllMocks();
|
|
53
58
|
});
|
|
54
|
-
describe('usesCocoaPod', () => {
|
|
55
|
-
describe('Podfile exists', () => {
|
|
56
|
-
it('should return true', () => {
|
|
59
|
+
(0, vitest_1.describe)('usesCocoaPod', () => {
|
|
60
|
+
(0, vitest_1.describe)('Podfile exists', () => {
|
|
61
|
+
(0, vitest_1.it)('should return true', () => {
|
|
57
62
|
// -- Arrange --
|
|
58
63
|
const projPath = path.join(os.tmpdir(), 'test-project-with-podfile');
|
|
59
64
|
const tempDir = fs.mkdtempSync(projPath);
|
|
@@ -62,33 +67,33 @@ describe('cocoapod', () => {
|
|
|
62
67
|
// -- Act --
|
|
63
68
|
const result = (0, cocoapod_1.usesCocoaPod)(tempDir);
|
|
64
69
|
// -- Assert --
|
|
65
|
-
expect(result).toBeTruthy();
|
|
70
|
+
(0, vitest_1.expect)(result).toBeTruthy();
|
|
66
71
|
});
|
|
67
72
|
});
|
|
68
|
-
describe('Podfile does not exist', () => {
|
|
69
|
-
it('should return false', () => {
|
|
73
|
+
(0, vitest_1.describe)('Podfile does not exist', () => {
|
|
74
|
+
(0, vitest_1.it)('should return false', () => {
|
|
70
75
|
// -- Arrange --
|
|
71
76
|
const projPath = path.join(os.tmpdir(), 'test-project-without-podfile');
|
|
72
77
|
const tempDir = fs.mkdtempSync(projPath);
|
|
73
78
|
// -- Act --
|
|
74
79
|
const result = (0, cocoapod_1.usesCocoaPod)(tempDir);
|
|
75
80
|
// -- Assert --
|
|
76
|
-
expect(result).toBeFalsy();
|
|
81
|
+
(0, vitest_1.expect)(result).toBeFalsy();
|
|
77
82
|
});
|
|
78
83
|
});
|
|
79
84
|
});
|
|
80
|
-
describe('addCocoaPods', () => {
|
|
81
|
-
describe('Podfile does not exist', () => {
|
|
82
|
-
it('should throw an error', async () => {
|
|
85
|
+
(0, vitest_1.describe)('addCocoaPods', () => {
|
|
86
|
+
(0, vitest_1.describe)('Podfile does not exist', () => {
|
|
87
|
+
(0, vitest_1.it)('should throw an error', async () => {
|
|
83
88
|
// -- Arrange --
|
|
84
89
|
const projPath = path.join(os.tmpdir(), 'test-project-without-podfile');
|
|
85
90
|
const tempDir = fs.mkdtempSync(projPath);
|
|
86
91
|
// -- Act & Assert --
|
|
87
|
-
await expect((0, cocoapod_1.addCocoaPods)(tempDir)).rejects.toThrow('ENOENT: no such file or directory, open');
|
|
92
|
+
await (0, vitest_1.expect)((0, cocoapod_1.addCocoaPods)(tempDir)).rejects.toThrow('ENOENT: no such file or directory, open');
|
|
88
93
|
});
|
|
89
94
|
});
|
|
90
|
-
describe('Podfile exists', () => {
|
|
91
|
-
describe('Podfile includes Sentry pod', () => {
|
|
95
|
+
(0, vitest_1.describe)('Podfile exists', () => {
|
|
96
|
+
(0, vitest_1.describe)('Podfile includes Sentry pod', () => {
|
|
92
97
|
const variations = [
|
|
93
98
|
{
|
|
94
99
|
case: 'simple',
|
|
@@ -124,7 +129,7 @@ describe('cocoapod', () => {
|
|
|
124
129
|
},
|
|
125
130
|
];
|
|
126
131
|
for (const variation of variations) {
|
|
127
|
-
it(`should not change the Podfile for ${variation.case}`, async () => {
|
|
132
|
+
(0, vitest_1.it)(`should not change the Podfile for ${variation.case}`, async () => {
|
|
128
133
|
// -- Arrange --
|
|
129
134
|
const projPath = fs.mkdtempSync(path.join(os.tmpdir(), 'project'));
|
|
130
135
|
fs.mkdirSync(projPath, {
|
|
@@ -135,14 +140,14 @@ describe('cocoapod', () => {
|
|
|
135
140
|
// -- Act --
|
|
136
141
|
const result = await (0, cocoapod_1.addCocoaPods)(projPath);
|
|
137
142
|
// -- Assert --
|
|
138
|
-
expect(result).toBeTruthy();
|
|
139
|
-
expect(fs.readFileSync(podfile, 'utf8')).toBe(variation.content);
|
|
143
|
+
(0, vitest_1.expect)(result).toBeTruthy();
|
|
144
|
+
(0, vitest_1.expect)(fs.readFileSync(podfile, 'utf8')).toBe(variation.content);
|
|
140
145
|
});
|
|
141
146
|
}
|
|
142
147
|
});
|
|
143
|
-
describe('Podfile includes no other pods', () => {
|
|
144
|
-
describe('Podfile does not include use_frameworks!', () => {
|
|
145
|
-
it('should not change the Podfile', async () => {
|
|
148
|
+
(0, vitest_1.describe)('Podfile includes no other pods', () => {
|
|
149
|
+
(0, vitest_1.describe)('Podfile does not include use_frameworks!', () => {
|
|
150
|
+
(0, vitest_1.it)('should not change the Podfile', async () => {
|
|
146
151
|
// -- Arrange --
|
|
147
152
|
const projPath = fs.mkdtempSync(path.join(os.tmpdir(), 'project'));
|
|
148
153
|
fs.mkdirSync(projPath, {
|
|
@@ -153,12 +158,12 @@ describe('cocoapod', () => {
|
|
|
153
158
|
// -- Act --
|
|
154
159
|
const result = await (0, cocoapod_1.addCocoaPods)(projPath);
|
|
155
160
|
// -- Assert --
|
|
156
|
-
expect(result).toBeFalsy();
|
|
157
|
-
expect(fs.readFileSync(podfile, 'utf8')).toBe('');
|
|
161
|
+
(0, vitest_1.expect)(result).toBeFalsy();
|
|
162
|
+
(0, vitest_1.expect)(fs.readFileSync(podfile, 'utf8')).toBe('');
|
|
158
163
|
});
|
|
159
164
|
});
|
|
160
|
-
describe('Podfile includes use_frameworks!', () => {
|
|
161
|
-
it('should change the Podfile', async () => {
|
|
165
|
+
(0, vitest_1.describe)('Podfile includes use_frameworks!', () => {
|
|
166
|
+
(0, vitest_1.it)('should change the Podfile', async () => {
|
|
162
167
|
// -- Arrange --
|
|
163
168
|
const projPath = fs.mkdtempSync(path.join(os.tmpdir(), 'project'));
|
|
164
169
|
fs.mkdirSync(projPath, {
|
|
@@ -169,13 +174,13 @@ describe('cocoapod', () => {
|
|
|
169
174
|
// -- Act --
|
|
170
175
|
const result = await (0, cocoapod_1.addCocoaPods)(projPath);
|
|
171
176
|
// -- Assert --
|
|
172
|
-
expect(result).toBeTruthy();
|
|
173
|
-
expect(fs.readFileSync(podfile, 'utf8')).toBe(`use_frameworks!\npod 'Sentry'\n`);
|
|
177
|
+
(0, vitest_1.expect)(result).toBeTruthy();
|
|
178
|
+
(0, vitest_1.expect)(fs.readFileSync(podfile, 'utf8')).toBe(`use_frameworks!\npod 'Sentry'\n`);
|
|
174
179
|
});
|
|
175
180
|
});
|
|
176
181
|
});
|
|
177
|
-
describe('Podfile includes other pods', () => {
|
|
178
|
-
it('should append Sentry pod after last pod', async () => {
|
|
182
|
+
(0, vitest_1.describe)('Podfile includes other pods', () => {
|
|
183
|
+
(0, vitest_1.it)('should append Sentry pod after last pod', async () => {
|
|
179
184
|
// -- Arrange --
|
|
180
185
|
const projPath = fs.mkdtempSync(path.join(os.tmpdir(), 'project'));
|
|
181
186
|
fs.mkdirSync(projPath, {
|
|
@@ -186,77 +191,77 @@ describe('cocoapod', () => {
|
|
|
186
191
|
// -- Act --
|
|
187
192
|
const result = await (0, cocoapod_1.addCocoaPods)(projPath);
|
|
188
193
|
// -- Assert --
|
|
189
|
-
expect(result).toBeTruthy();
|
|
190
|
-
expect(fs.readFileSync(podfile, 'utf8')).toBe(`pod "OtherPod"\npod 'Sentry'\n`);
|
|
194
|
+
(0, vitest_1.expect)(result).toBeTruthy();
|
|
195
|
+
(0, vitest_1.expect)(fs.readFileSync(podfile, 'utf8')).toBe(`pod "OtherPod"\npod 'Sentry'\n`);
|
|
191
196
|
});
|
|
192
197
|
});
|
|
193
198
|
});
|
|
194
199
|
});
|
|
195
|
-
describe('podInstall', () => {
|
|
200
|
+
(0, vitest_1.describe)('podInstall', () => {
|
|
196
201
|
let workDir;
|
|
197
|
-
beforeEach(() => {
|
|
202
|
+
(0, vitest_1.beforeEach)(() => {
|
|
198
203
|
workDir = path.join(os.tmpdir(), 'test-project');
|
|
199
204
|
});
|
|
200
|
-
describe('any bash scripts fail', () => {
|
|
201
|
-
beforeEach(() => {
|
|
202
|
-
|
|
205
|
+
(0, vitest_1.describe)('any bash scripts fail', () => {
|
|
206
|
+
(0, vitest_1.beforeEach)(() => {
|
|
207
|
+
vitest_1.vi.spyOn(bash, 'execute').mockRejectedValue(new Error('test error'));
|
|
203
208
|
});
|
|
204
|
-
it('should not throw an error', async () => {
|
|
209
|
+
(0, vitest_1.it)('should not throw an error', async () => {
|
|
205
210
|
// -- Act & Assert --
|
|
206
|
-
await expect((0, cocoapod_1.podInstall)(workDir)).resolves.not.toThrow();
|
|
211
|
+
await (0, vitest_1.expect)((0, cocoapod_1.podInstall)(workDir)).resolves.not.toThrow();
|
|
207
212
|
});
|
|
208
|
-
it('should set tag', async () => {
|
|
213
|
+
(0, vitest_1.it)('should set tag', async () => {
|
|
209
214
|
// -- Act --
|
|
210
215
|
await (0, cocoapod_1.podInstall)(workDir);
|
|
211
216
|
// -- Assert --
|
|
212
|
-
expect(Sentry.setTag).toHaveBeenCalledWith('pods-installed', false);
|
|
217
|
+
(0, vitest_1.expect)(Sentry.setTag).toHaveBeenCalledWith('pods-installed', false);
|
|
213
218
|
});
|
|
214
|
-
it('should capture exception', async () => {
|
|
219
|
+
(0, vitest_1.it)('should capture exception', async () => {
|
|
215
220
|
// -- Act --
|
|
216
221
|
await (0, cocoapod_1.podInstall)(workDir);
|
|
217
222
|
// -- Assert --
|
|
218
|
-
expect(Sentry.captureException).toHaveBeenCalledWith('Sentry pod install failed.');
|
|
223
|
+
(0, vitest_1.expect)(Sentry.captureException).toHaveBeenCalledWith('Sentry pod install failed.');
|
|
219
224
|
});
|
|
220
|
-
it('should start and stop spinner', async () => {
|
|
225
|
+
(0, vitest_1.it)('should start and stop spinner', async () => {
|
|
221
226
|
// -- Act --
|
|
222
227
|
await (0, cocoapod_1.podInstall)(workDir);
|
|
223
228
|
// -- Assert --
|
|
224
|
-
expect(clackSpinnerMock.start).toHaveBeenCalledWith("Running 'pod install'. This may take a few minutes...");
|
|
225
|
-
expect(clackSpinnerMock.stop).toHaveBeenCalledWith('Failed to install pods.');
|
|
229
|
+
(0, vitest_1.expect)(clackSpinnerMock.start).toHaveBeenCalledWith("Running 'pod install'. This may take a few minutes...");
|
|
230
|
+
(0, vitest_1.expect)(clackSpinnerMock.stop).toHaveBeenCalledWith('Failed to install pods.');
|
|
226
231
|
});
|
|
227
232
|
});
|
|
228
|
-
describe('all bash scripts work', () => {
|
|
229
|
-
beforeEach(() => {
|
|
230
|
-
|
|
233
|
+
(0, vitest_1.describe)('all bash scripts work', () => {
|
|
234
|
+
(0, vitest_1.beforeEach)(() => {
|
|
235
|
+
vitest_1.vi.spyOn(bash, 'execute').mockResolvedValue('');
|
|
231
236
|
});
|
|
232
|
-
it('should call pod update and install', async () => {
|
|
237
|
+
(0, vitest_1.it)('should call pod update and install', async () => {
|
|
233
238
|
// -- Act --
|
|
234
239
|
await (0, cocoapod_1.podInstall)(workDir);
|
|
235
240
|
// -- Assert --
|
|
236
|
-
expect(bash.execute).toHaveBeenCalledWith(`cd ${workDir} && pod repo update`);
|
|
237
|
-
expect(bash.execute).toHaveBeenCalledWith(`cd ${workDir} && pod install --silent`);
|
|
241
|
+
(0, vitest_1.expect)(bash.execute).toHaveBeenCalledWith(`cd ${workDir} && pod repo update`);
|
|
242
|
+
(0, vitest_1.expect)(bash.execute).toHaveBeenCalledWith(`cd ${workDir} && pod install --silent`);
|
|
238
243
|
});
|
|
239
|
-
it('should set tag', async () => {
|
|
244
|
+
(0, vitest_1.it)('should set tag', async () => {
|
|
240
245
|
// -- Act --
|
|
241
246
|
await (0, cocoapod_1.podInstall)(workDir);
|
|
242
247
|
// -- Assert --
|
|
243
|
-
expect(Sentry.setTag).toHaveBeenCalledWith('pods-installed', true);
|
|
248
|
+
(0, vitest_1.expect)(Sentry.setTag).toHaveBeenCalledWith('pods-installed', true);
|
|
244
249
|
});
|
|
245
|
-
it('should start and stop spinner', async () => {
|
|
250
|
+
(0, vitest_1.it)('should start and stop spinner', async () => {
|
|
246
251
|
// -- Act --
|
|
247
252
|
await (0, cocoapod_1.podInstall)(workDir);
|
|
248
253
|
// -- Assert --
|
|
249
|
-
expect(clackSpinnerMock.start).toHaveBeenCalledWith("Running 'pod install'. This may take a few minutes...");
|
|
250
|
-
expect(clackSpinnerMock.stop).toHaveBeenCalledWith('Pods installed.');
|
|
254
|
+
(0, vitest_1.expect)(clackSpinnerMock.start).toHaveBeenCalledWith("Running 'pod install'. This may take a few minutes...");
|
|
255
|
+
(0, vitest_1.expect)(clackSpinnerMock.stop).toHaveBeenCalledWith('Pods installed.');
|
|
251
256
|
});
|
|
252
257
|
});
|
|
253
|
-
describe('dir not given', () => {
|
|
254
|
-
it('should use current directory', async () => {
|
|
258
|
+
(0, vitest_1.describe)('dir not given', () => {
|
|
259
|
+
(0, vitest_1.it)('should use current directory', async () => {
|
|
255
260
|
// -- Act --
|
|
256
261
|
await (0, cocoapod_1.podInstall)();
|
|
257
262
|
// -- Assert --
|
|
258
|
-
expect(bash.execute).toHaveBeenCalledWith(`cd . && pod repo update`);
|
|
259
|
-
expect(bash.execute).toHaveBeenCalledWith(`cd . && pod install --silent`);
|
|
263
|
+
(0, vitest_1.expect)(bash.execute).toHaveBeenCalledWith(`cd . && pod repo update`);
|
|
264
|
+
(0, vitest_1.expect)(bash.execute).toHaveBeenCalledWith(`cd . && pod install --silent`);
|
|
260
265
|
});
|
|
261
266
|
});
|
|
262
267
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cocoapod.test.js","sourceRoot":"","sources":["../../../test/apple/cocoapod.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAuC;AACvC,uCAAyB;AACzB,uCAAyB;AACzB,2CAA6B;AAC7B,uDAIkC;AAClC,2DAA6C;AAC7C,+EAA+E;AAC/E,sDAAwC;AACxC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,UAAU,EAAE,IAAI;IAChB,GAAG,IAAI,CAAC,aAAa,CAAe,gBAAgB,CAAC;CACtD,CAAC,CAAC,CAAC;AAEJ,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAClC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,kBAAkB,EAAE,CAAC;AAClD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,kBAAkB,EAAE,CAAC;AAE5D,MAAM,gBAAgB,GAAG;IACvB,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;IAChB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;IACf,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;CACnB,CAAC;AAEF,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;QAC/D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,kBAAkB,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;YAC9B,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;gBAC5B,gBAAgB;gBAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,2BAA2B,CAAC,CAAC;gBACrE,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAEzC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gBAC9C,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAE9B,YAAY;gBACZ,MAAM,MAAM,GAAG,IAAA,uBAAY,EAAC,OAAO,CAAC,CAAC;gBAErC,eAAe;gBACf,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;YAC9B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;YACtC,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;gBAC7B,gBAAgB;gBAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,8BAA8B,CAAC,CAAC;gBACxE,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAEzC,YAAY;gBACZ,MAAM,MAAM,GAAG,IAAA,uBAAY,EAAC,OAAO,CAAC,CAAC;gBAErC,eAAe;gBACf,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;YAC7B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;YACtC,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;gBACrC,gBAAgB;gBAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,8BAA8B,CAAC,CAAC;gBACxE,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAEzC,qBAAqB;gBACrB,MAAM,MAAM,CAAC,IAAA,uBAAY,EAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACjD,yCAAyC,CAC1C,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;YAC9B,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;gBAC3C,MAAM,UAAU,GAAG;oBACjB;wBACE,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,cAAc;qBACxB;oBACD;wBACE,IAAI,EAAE,cAAc;wBACpB,OAAO,EAAE,qBAAqB;qBAC/B;oBACD;wBACE,IAAI,EAAE,eAAe;wBACrB,OAAO,EAAE,gBAAgB;qBAC1B;oBACD;wBACE,IAAI,EAAE,2BAA2B;wBACjC,OAAO,EAAE,uBAAuB;qBACjC;oBACD;wBACE,IAAI,EAAE,gBAAgB;wBACtB,OAAO,EAAE,eAAe;qBACzB;oBACD;wBACE,IAAI,EAAE,4BAA4B;wBAClC,OAAO,EAAE,sBAAsB;qBAChC;oBACD;wBACE,IAAI,EAAE,eAAe;wBACrB,OAAO,EAAE,cAAc;qBACxB;oBACD;wBACE,IAAI,EAAE,eAAe;wBACrB,OAAO,EAAE,cAAc;qBACxB;iBACF,CAAC;gBACF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;oBAClC,EAAE,CAAC,qCAAqC,SAAS,CAAC,IAAI,EAAE,EAAE,KAAK,IAAI,EAAE;wBACnE,gBAAgB;wBAChB,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;wBACnE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE;4BACrB,SAAS,EAAE,IAAI;yBAChB,CAAC,CAAC;wBAEH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;wBAC/C,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;wBAErD,YAAY;wBACZ,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAY,EAAC,QAAQ,CAAC,CAAC;wBAE5C,eAAe;wBACf,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;wBAC5B,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;oBACnE,CAAC,CAAC,CAAC;iBACJ;YACH,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;gBAC9C,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;oBACxD,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;wBAC7C,gBAAgB;wBAChB,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;wBACnE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE;4BACrB,SAAS,EAAE,IAAI;yBAChB,CAAC,CAAC;wBAEH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;wBAC/C,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;wBAEtC,YAAY;wBACZ,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAY,EAAC,QAAQ,CAAC,CAAC;wBAE5C,eAAe;wBACf,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;wBAC3B,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACpD,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBAEH,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;oBAChD,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;wBACzC,gBAAgB;wBAChB,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;wBACnE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE;4BACrB,SAAS,EAAE,IAAI;yBAChB,CAAC,CAAC;wBAEH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;wBAC/C,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;wBAErD,YAAY;wBACZ,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAY,EAAC,QAAQ,CAAC,CAAC;wBAE5C,eAAe;wBACf,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;wBAC5B,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAC3C,iCAAiC,CAClC,CAAC;oBACJ,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;gBAC3C,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;oBACvD,gBAAgB;oBAChB,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;oBACnE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE;wBACrB,SAAS,EAAE,IAAI;qBAChB,CAAC,CAAC;oBAEH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;oBAC/C,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;oBAEpD,YAAY;oBACZ,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAY,EAAC,QAAQ,CAAC,CAAC;oBAE5C,eAAe;oBACf,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;oBAC5B,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAC3C,gCAAgC,CACjC,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,IAAI,OAAe,CAAC;QAEpB,UAAU,CAAC,GAAG,EAAE;YACd,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;YACrC,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;gBACzC,qBAAqB;gBACrB,MAAM,MAAM,CAAC,IAAA,qBAAU,EAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAC3D,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;gBAC9B,YAAY;gBACZ,MAAM,IAAA,qBAAU,EAAC,OAAO,CAAC,CAAC;gBAE1B,eAAe;gBACf,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;gBACxC,YAAY;gBACZ,MAAM,IAAA,qBAAU,EAAC,OAAO,CAAC,CAAC;gBAE1B,eAAe;gBACf,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAClD,4BAA4B,CAC7B,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;gBAC7C,YAAY;gBACZ,MAAM,IAAA,qBAAU,EAAC,OAAO,CAAC,CAAC;gBAE1B,eAAe;gBACf,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,oBAAoB,CACjD,uDAAuD,CACxD,CAAC;gBACF,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAChD,yBAAyB,CAC1B,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;YACrC,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;gBAClD,YAAY;gBACZ,MAAM,IAAA,qBAAU,EAAC,OAAO,CAAC,CAAC;gBAE1B,eAAe;gBACf,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,oBAAoB,CACvC,MAAM,OAAO,qBAAqB,CACnC,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,oBAAoB,CACvC,MAAM,OAAO,0BAA0B,CACxC,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;gBAC9B,YAAY;gBACZ,MAAM,IAAA,qBAAU,EAAC,OAAO,CAAC,CAAC;gBAE1B,eAAe;gBACf,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;YACrE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;gBAC7C,YAAY;gBACZ,MAAM,IAAA,qBAAU,EAAC,OAAO,CAAC,CAAC;gBAE1B,eAAe;gBACf,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,oBAAoB,CACjD,uDAAuD,CACxD,CAAC;gBACF,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;YACxE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;YAC7B,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;gBAC5C,YAAY;gBACZ,MAAM,IAAA,qBAAU,GAAE,CAAC;gBAEnB,eAAe;gBACf,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,CAAC;gBACrE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,oBAAoB,CACvC,8BAA8B,CAC/B,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import * as Sentry from '@sentry/node';\nimport * as fs from 'fs';\nimport * as os from 'os';\nimport * as path from 'path';\nimport {\n addCocoaPods,\n podInstall,\n usesCocoaPod,\n} from '../../src/apple/cocoapod';\nimport * as bash from '../../src/utils/bash';\n// @ts-expect-error - clack is ESM and TS complains about that. It works though\nimport * as clack from '@clack/prompts';\njest.mock('@clack/prompts', () => ({\n __esModule: true,\n ...jest.requireActual<typeof clack>('@clack/prompts'),\n}));\n\njest.mock('../../src/utils/bash');\njest.spyOn(Sentry, 'setTag').mockImplementation();\njest.spyOn(Sentry, 'captureException').mockImplementation();\n\nconst clackSpinnerMock = {\n start: jest.fn(),\n stop: jest.fn(),\n message: jest.fn(),\n};\n\ndescribe('cocoapod', () => {\n beforeEach(() => {\n jest.spyOn(clack, 'spinner').mockReturnValue(clackSpinnerMock);\n jest.spyOn(clack.log, 'error').mockImplementation();\n });\n\n afterEach(() => {\n jest.clearAllMocks();\n });\n\n describe('usesCocoaPod', () => {\n describe('Podfile exists', () => {\n it('should return true', () => {\n // -- Arrange --\n const projPath = path.join(os.tmpdir(), 'test-project-with-podfile');\n const tempDir = fs.mkdtempSync(projPath);\n\n const podfile = path.join(tempDir, 'Podfile');\n fs.writeFileSync(podfile, '');\n\n // -- Act --\n const result = usesCocoaPod(tempDir);\n\n // -- Assert --\n expect(result).toBeTruthy();\n });\n });\n\n describe('Podfile does not exist', () => {\n it('should return false', () => {\n // -- Arrange --\n const projPath = path.join(os.tmpdir(), 'test-project-without-podfile');\n const tempDir = fs.mkdtempSync(projPath);\n\n // -- Act --\n const result = usesCocoaPod(tempDir);\n\n // -- Assert --\n expect(result).toBeFalsy();\n });\n });\n });\n\n describe('addCocoaPods', () => {\n describe('Podfile does not exist', () => {\n it('should throw an error', async () => {\n // -- Arrange --\n const projPath = path.join(os.tmpdir(), 'test-project-without-podfile');\n const tempDir = fs.mkdtempSync(projPath);\n\n // -- Act & Assert --\n await expect(addCocoaPods(tempDir)).rejects.toThrow(\n 'ENOENT: no such file or directory, open',\n );\n });\n });\n\n describe('Podfile exists', () => {\n describe('Podfile includes Sentry pod', () => {\n const variations = [\n {\n case: 'simple',\n content: 'pod \"Sentry\"',\n },\n {\n case: 'with-swiftui',\n content: 'pod \"SentrySwiftUI\"',\n },\n {\n case: 'leading-space',\n content: ' pod \"Sentry\"',\n },\n {\n case: 'leading-space-and-swiftui',\n content: ' pod \"SentrySwiftUI\"',\n },\n {\n case: 'trailing-space',\n content: 'pod \"Sentry\" ',\n },\n {\n case: 'trailing-space-and-swiftui',\n content: 'pod \"SentrySwiftUI\" ',\n },\n {\n case: 'single-quotes',\n content: \"pod 'Sentry'\",\n },\n {\n case: 'double-quotes',\n content: 'pod \"Sentry\"',\n },\n ];\n for (const variation of variations) {\n it(`should not change the Podfile for ${variation.case}`, async () => {\n // -- Arrange --\n const projPath = fs.mkdtempSync(path.join(os.tmpdir(), 'project'));\n fs.mkdirSync(projPath, {\n recursive: true,\n });\n\n const podfile = path.join(projPath, 'Podfile');\n fs.writeFileSync(podfile, variation.content, 'utf8');\n\n // -- Act --\n const result = await addCocoaPods(projPath);\n\n // -- Assert --\n expect(result).toBeTruthy();\n expect(fs.readFileSync(podfile, 'utf8')).toBe(variation.content);\n });\n }\n });\n\n describe('Podfile includes no other pods', () => {\n describe('Podfile does not include use_frameworks!', () => {\n it('should not change the Podfile', async () => {\n // -- Arrange --\n const projPath = fs.mkdtempSync(path.join(os.tmpdir(), 'project'));\n fs.mkdirSync(projPath, {\n recursive: true,\n });\n\n const podfile = path.join(projPath, 'Podfile');\n fs.writeFileSync(podfile, '', 'utf8');\n\n // -- Act --\n const result = await addCocoaPods(projPath);\n\n // -- Assert --\n expect(result).toBeFalsy();\n expect(fs.readFileSync(podfile, 'utf8')).toBe('');\n });\n });\n\n describe('Podfile includes use_frameworks!', () => {\n it('should change the Podfile', async () => {\n // -- Arrange --\n const projPath = fs.mkdtempSync(path.join(os.tmpdir(), 'project'));\n fs.mkdirSync(projPath, {\n recursive: true,\n });\n\n const podfile = path.join(projPath, 'Podfile');\n fs.writeFileSync(podfile, `use_frameworks!`, 'utf8');\n\n // -- Act --\n const result = await addCocoaPods(projPath);\n\n // -- Assert --\n expect(result).toBeTruthy();\n expect(fs.readFileSync(podfile, 'utf8')).toBe(\n `use_frameworks!\\npod 'Sentry'\\n`,\n );\n });\n });\n });\n\n describe('Podfile includes other pods', () => {\n it('should append Sentry pod after last pod', async () => {\n // -- Arrange --\n const projPath = fs.mkdtempSync(path.join(os.tmpdir(), 'project'));\n fs.mkdirSync(projPath, {\n recursive: true,\n });\n\n const podfile = path.join(projPath, 'Podfile');\n fs.writeFileSync(podfile, 'pod \"OtherPod\"', 'utf8');\n\n // -- Act --\n const result = await addCocoaPods(projPath);\n\n // -- Assert --\n expect(result).toBeTruthy();\n expect(fs.readFileSync(podfile, 'utf8')).toBe(\n `pod \"OtherPod\"\\npod 'Sentry'\\n`,\n );\n });\n });\n });\n });\n\n describe('podInstall', () => {\n let workDir: string;\n\n beforeEach(() => {\n workDir = path.join(os.tmpdir(), 'test-project');\n });\n\n describe('any bash scripts fail', () => {\n beforeEach(() => {\n jest.spyOn(bash, 'execute').mockRejectedValue(new Error('test error'));\n });\n\n it('should not throw an error', async () => {\n // -- Act & Assert --\n await expect(podInstall(workDir)).resolves.not.toThrow();\n });\n\n it('should set tag', async () => {\n // -- Act --\n await podInstall(workDir);\n\n // -- Assert --\n expect(Sentry.setTag).toHaveBeenCalledWith('pods-installed', false);\n });\n\n it('should capture exception', async () => {\n // -- Act --\n await podInstall(workDir);\n\n // -- Assert --\n expect(Sentry.captureException).toHaveBeenCalledWith(\n 'Sentry pod install failed.',\n );\n });\n\n it('should start and stop spinner', async () => {\n // -- Act --\n await podInstall(workDir);\n\n // -- Assert --\n expect(clackSpinnerMock.start).toHaveBeenCalledWith(\n \"Running 'pod install'. This may take a few minutes...\",\n );\n expect(clackSpinnerMock.stop).toHaveBeenCalledWith(\n 'Failed to install pods.',\n );\n });\n });\n\n describe('all bash scripts work', () => {\n beforeEach(() => {\n jest.spyOn(bash, 'execute').mockResolvedValue('');\n });\n\n it('should call pod update and install', async () => {\n // -- Act --\n await podInstall(workDir);\n\n // -- Assert --\n expect(bash.execute).toHaveBeenCalledWith(\n `cd ${workDir} && pod repo update`,\n );\n expect(bash.execute).toHaveBeenCalledWith(\n `cd ${workDir} && pod install --silent`,\n );\n });\n\n it('should set tag', async () => {\n // -- Act --\n await podInstall(workDir);\n\n // -- Assert --\n expect(Sentry.setTag).toHaveBeenCalledWith('pods-installed', true);\n });\n\n it('should start and stop spinner', async () => {\n // -- Act --\n await podInstall(workDir);\n\n // -- Assert --\n expect(clackSpinnerMock.start).toHaveBeenCalledWith(\n \"Running 'pod install'. This may take a few minutes...\",\n );\n expect(clackSpinnerMock.stop).toHaveBeenCalledWith('Pods installed.');\n });\n });\n\n describe('dir not given', () => {\n it('should use current directory', async () => {\n // -- Act --\n await podInstall();\n\n // -- Assert --\n expect(bash.execute).toHaveBeenCalledWith(`cd . && pod repo update`);\n expect(bash.execute).toHaveBeenCalledWith(\n `cd . && pod install --silent`,\n );\n });\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"cocoapod.test.js","sourceRoot":"","sources":["../../../test/apple/cocoapod.test.ts"],"names":[],"mappings":"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","sourcesContent":["import * as Sentry from '@sentry/node';\nimport * as fs from 'fs';\nimport * as os from 'os';\nimport * as path from 'path';\nimport {\n addCocoaPods,\n podInstall,\n usesCocoaPod,\n} from '../../src/apple/cocoapod';\nimport * as bash from '../../src/utils/bash';\n// @ts-expect-error - clack is ESM and TS complains about that. It works though\nimport * as clack from '@clack/prompts';\nimport { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';\nvi.mock('@clack/prompts', async () => ({\n __esModule: true,\n ...(await vi.importActual<typeof clack>('@clack/prompts')),\n}));\n\nvi.mock('../../src/utils/bash');\nvi.spyOn(Sentry, 'setTag').mockImplementation(() => {\n /* empty */\n});\nvi.spyOn(Sentry, 'captureException').mockImplementation(() => 'id');\n\nconst clackSpinnerMock = {\n start: vi.fn(),\n stop: vi.fn(),\n message: vi.fn(),\n};\n\ndescribe('cocoapod', () => {\n beforeEach(() => {\n vi.spyOn(clack, 'spinner').mockReturnValue(clackSpinnerMock);\n vi.spyOn(clack.log, 'error').mockImplementation(() => {\n /* empty */\n });\n });\n\n afterEach(() => {\n vi.clearAllMocks();\n });\n\n describe('usesCocoaPod', () => {\n describe('Podfile exists', () => {\n it('should return true', () => {\n // -- Arrange --\n const projPath = path.join(os.tmpdir(), 'test-project-with-podfile');\n const tempDir = fs.mkdtempSync(projPath);\n\n const podfile = path.join(tempDir, 'Podfile');\n fs.writeFileSync(podfile, '');\n\n // -- Act --\n const result = usesCocoaPod(tempDir);\n\n // -- Assert --\n expect(result).toBeTruthy();\n });\n });\n\n describe('Podfile does not exist', () => {\n it('should return false', () => {\n // -- Arrange --\n const projPath = path.join(os.tmpdir(), 'test-project-without-podfile');\n const tempDir = fs.mkdtempSync(projPath);\n\n // -- Act --\n const result = usesCocoaPod(tempDir);\n\n // -- Assert --\n expect(result).toBeFalsy();\n });\n });\n });\n\n describe('addCocoaPods', () => {\n describe('Podfile does not exist', () => {\n it('should throw an error', async () => {\n // -- Arrange --\n const projPath = path.join(os.tmpdir(), 'test-project-without-podfile');\n const tempDir = fs.mkdtempSync(projPath);\n\n // -- Act & Assert --\n await expect(addCocoaPods(tempDir)).rejects.toThrow(\n 'ENOENT: no such file or directory, open',\n );\n });\n });\n\n describe('Podfile exists', () => {\n describe('Podfile includes Sentry pod', () => {\n const variations = [\n {\n case: 'simple',\n content: 'pod \"Sentry\"',\n },\n {\n case: 'with-swiftui',\n content: 'pod \"SentrySwiftUI\"',\n },\n {\n case: 'leading-space',\n content: ' pod \"Sentry\"',\n },\n {\n case: 'leading-space-and-swiftui',\n content: ' pod \"SentrySwiftUI\"',\n },\n {\n case: 'trailing-space',\n content: 'pod \"Sentry\" ',\n },\n {\n case: 'trailing-space-and-swiftui',\n content: 'pod \"SentrySwiftUI\" ',\n },\n {\n case: 'single-quotes',\n content: \"pod 'Sentry'\",\n },\n {\n case: 'double-quotes',\n content: 'pod \"Sentry\"',\n },\n ];\n for (const variation of variations) {\n it(`should not change the Podfile for ${variation.case}`, async () => {\n // -- Arrange --\n const projPath = fs.mkdtempSync(path.join(os.tmpdir(), 'project'));\n fs.mkdirSync(projPath, {\n recursive: true,\n });\n\n const podfile = path.join(projPath, 'Podfile');\n fs.writeFileSync(podfile, variation.content, 'utf8');\n\n // -- Act --\n const result = await addCocoaPods(projPath);\n\n // -- Assert --\n expect(result).toBeTruthy();\n expect(fs.readFileSync(podfile, 'utf8')).toBe(variation.content);\n });\n }\n });\n\n describe('Podfile includes no other pods', () => {\n describe('Podfile does not include use_frameworks!', () => {\n it('should not change the Podfile', async () => {\n // -- Arrange --\n const projPath = fs.mkdtempSync(path.join(os.tmpdir(), 'project'));\n fs.mkdirSync(projPath, {\n recursive: true,\n });\n\n const podfile = path.join(projPath, 'Podfile');\n fs.writeFileSync(podfile, '', 'utf8');\n\n // -- Act --\n const result = await addCocoaPods(projPath);\n\n // -- Assert --\n expect(result).toBeFalsy();\n expect(fs.readFileSync(podfile, 'utf8')).toBe('');\n });\n });\n\n describe('Podfile includes use_frameworks!', () => {\n it('should change the Podfile', async () => {\n // -- Arrange --\n const projPath = fs.mkdtempSync(path.join(os.tmpdir(), 'project'));\n fs.mkdirSync(projPath, {\n recursive: true,\n });\n\n const podfile = path.join(projPath, 'Podfile');\n fs.writeFileSync(podfile, `use_frameworks!`, 'utf8');\n\n // -- Act --\n const result = await addCocoaPods(projPath);\n\n // -- Assert --\n expect(result).toBeTruthy();\n expect(fs.readFileSync(podfile, 'utf8')).toBe(\n `use_frameworks!\\npod 'Sentry'\\n`,\n );\n });\n });\n });\n\n describe('Podfile includes other pods', () => {\n it('should append Sentry pod after last pod', async () => {\n // -- Arrange --\n const projPath = fs.mkdtempSync(path.join(os.tmpdir(), 'project'));\n fs.mkdirSync(projPath, {\n recursive: true,\n });\n\n const podfile = path.join(projPath, 'Podfile');\n fs.writeFileSync(podfile, 'pod \"OtherPod\"', 'utf8');\n\n // -- Act --\n const result = await addCocoaPods(projPath);\n\n // -- Assert --\n expect(result).toBeTruthy();\n expect(fs.readFileSync(podfile, 'utf8')).toBe(\n `pod \"OtherPod\"\\npod 'Sentry'\\n`,\n );\n });\n });\n });\n });\n\n describe('podInstall', () => {\n let workDir: string;\n\n beforeEach(() => {\n workDir = path.join(os.tmpdir(), 'test-project');\n });\n\n describe('any bash scripts fail', () => {\n beforeEach(() => {\n vi.spyOn(bash, 'execute').mockRejectedValue(new Error('test error'));\n });\n\n it('should not throw an error', async () => {\n // -- Act & Assert --\n await expect(podInstall(workDir)).resolves.not.toThrow();\n });\n\n it('should set tag', async () => {\n // -- Act --\n await podInstall(workDir);\n\n // -- Assert --\n expect(Sentry.setTag).toHaveBeenCalledWith('pods-installed', false);\n });\n\n it('should capture exception', async () => {\n // -- Act --\n await podInstall(workDir);\n\n // -- Assert --\n expect(Sentry.captureException).toHaveBeenCalledWith(\n 'Sentry pod install failed.',\n );\n });\n\n it('should start and stop spinner', async () => {\n // -- Act --\n await podInstall(workDir);\n\n // -- Assert --\n expect(clackSpinnerMock.start).toHaveBeenCalledWith(\n \"Running 'pod install'. This may take a few minutes...\",\n );\n expect(clackSpinnerMock.stop).toHaveBeenCalledWith(\n 'Failed to install pods.',\n );\n });\n });\n\n describe('all bash scripts work', () => {\n beforeEach(() => {\n vi.spyOn(bash, 'execute').mockResolvedValue('');\n });\n\n it('should call pod update and install', async () => {\n // -- Act --\n await podInstall(workDir);\n\n // -- Assert --\n expect(bash.execute).toHaveBeenCalledWith(\n `cd ${workDir} && pod repo update`,\n );\n expect(bash.execute).toHaveBeenCalledWith(\n `cd ${workDir} && pod install --silent`,\n );\n });\n\n it('should set tag', async () => {\n // -- Act --\n await podInstall(workDir);\n\n // -- Assert --\n expect(Sentry.setTag).toHaveBeenCalledWith('pods-installed', true);\n });\n\n it('should start and stop spinner', async () => {\n // -- Act --\n await podInstall(workDir);\n\n // -- Assert --\n expect(clackSpinnerMock.start).toHaveBeenCalledWith(\n \"Running 'pod install'. This may take a few minutes...\",\n );\n expect(clackSpinnerMock.stop).toHaveBeenCalledWith('Pods installed.');\n });\n });\n\n describe('dir not given', () => {\n it('should use current directory', async () => {\n // -- Act --\n await podInstall();\n\n // -- Assert --\n expect(bash.execute).toHaveBeenCalledWith(`cd . && pod repo update`);\n expect(bash.execute).toHaveBeenCalledWith(\n `cd . && pod install --silent`,\n );\n });\n });\n });\n});\n"]}
|