@sentry/wizard 3.42.1 → 4.0.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/.node-cache/node-v22.14.0-darwin-arm64 +0 -0
- package/.node-cache/node-v22.14.0-darwin-x64 +0 -0
- package/.node-cache/node-v22.14.0-linux-arm64 +0 -0
- package/.node-cache/node-v22.14.0-linux-x64 +0 -0
- package/.node-cache/node-v22.14.0-win-x64.exe +0 -0
- package/CHANGELOG.md +26 -0
- package/COPYING +3575 -0
- package/bin.ts +85 -80
- package/dist/bin.js +44 -35
- package/dist/bin.js.map +1 -1
- package/dist/e2e-tests/jest.config.js +1 -1
- package/dist/e2e-tests/jest.config.js.map +1 -1
- package/dist/e2e-tests/tests/flutter.test.js +62 -147
- package/dist/e2e-tests/tests/flutter.test.js.map +1 -1
- package/dist/e2e-tests/tests/nextjs.test.js +77 -175
- package/dist/e2e-tests/tests/nextjs.test.js.map +1 -1
- package/dist/e2e-tests/tests/nuxt-3.test.js +61 -162
- package/dist/e2e-tests/tests/nuxt-3.test.js.map +1 -1
- package/dist/e2e-tests/tests/nuxt-4.test.js +62 -163
- package/dist/e2e-tests/tests/nuxt-4.test.js.map +1 -1
- package/dist/e2e-tests/tests/remix.test.js +147 -189
- package/dist/e2e-tests/tests/remix.test.js.map +1 -1
- package/dist/e2e-tests/tests/sveltekit.test.js +133 -187
- package/dist/e2e-tests/tests/sveltekit.test.js.map +1 -1
- package/dist/e2e-tests/utils/index.d.ts +1 -1
- package/dist/e2e-tests/utils/index.js +113 -195
- package/dist/e2e-tests/utils/index.js.map +1 -1
- package/dist/lib/Constants.js +5 -5
- package/dist/lib/Constants.js.map +1 -1
- package/dist/lib/Helper/BottomBar.d.ts +1 -1
- package/dist/lib/Helper/BottomBar.js +14 -15
- package/dist/lib/Helper/BottomBar.js.map +1 -1
- package/dist/lib/Helper/Env.js +5 -2
- package/dist/lib/Helper/Env.js.map +1 -1
- package/dist/lib/Helper/File.js +14 -27
- package/dist/lib/Helper/File.js.map +1 -1
- package/dist/lib/Helper/Git.js +24 -59
- package/dist/lib/Helper/Git.js.map +1 -1
- package/dist/lib/Helper/Logging.js +2 -2
- package/dist/lib/Helper/Logging.js.map +1 -1
- package/dist/lib/Helper/MergeConfig.js +4 -4
- package/dist/lib/Helper/MergeConfig.js.map +1 -1
- package/dist/lib/Helper/Package.d.ts +4 -1
- package/dist/lib/Helper/Package.js +12 -38
- package/dist/lib/Helper/Package.js.map +1 -1
- package/dist/lib/Helper/SentryCli.js +77 -149
- package/dist/lib/Helper/SentryCli.js.map +1 -1
- package/dist/lib/Helper/Wizard.js +29 -124
- package/dist/lib/Helper/Wizard.js.map +1 -1
- package/dist/lib/Helper/__tests__/File.js +4 -4
- package/dist/lib/Helper/__tests__/File.js.map +1 -1
- package/dist/lib/Helper/__tests__/MergeConfig.js +24 -24
- package/dist/lib/Helper/__tests__/MergeConfig.js.map +1 -1
- package/dist/lib/Helper/__tests__/SentryCli.js +33 -23
- package/dist/lib/Helper/__tests__/SentryCli.js.map +1 -1
- package/dist/lib/Setup.js +23 -85
- package/dist/lib/Setup.js.map +1 -1
- package/dist/lib/Steps/BaseStep.js +8 -8
- package/dist/lib/Steps/BaseStep.js.map +1 -1
- package/dist/lib/Steps/ChooseIntegration.js +80 -125
- package/dist/lib/Steps/ChooseIntegration.js.map +1 -1
- package/dist/lib/Steps/ConfigureProject.js +6 -66
- package/dist/lib/Steps/ConfigureProject.js.map +1 -1
- package/dist/lib/Steps/Initial.js +16 -104
- package/dist/lib/Steps/Initial.js.map +1 -1
- package/dist/lib/Steps/Integrations/BaseIntegration.js +24 -118
- package/dist/lib/Steps/Integrations/BaseIntegration.js.map +1 -1
- package/dist/lib/Steps/Integrations/Cordova.js +95 -183
- package/dist/lib/Steps/Integrations/Cordova.js.map +1 -1
- package/dist/lib/Steps/Integrations/Electron.js +87 -145
- package/dist/lib/Steps/Integrations/Electron.js.map +1 -1
- package/dist/lib/Steps/Integrations/MobileProject.js +40 -148
- package/dist/lib/Steps/Integrations/MobileProject.js.map +1 -1
- package/dist/lib/Steps/OpenSentry.js +63 -126
- package/dist/lib/Steps/OpenSentry.js.map +1 -1
- package/dist/lib/Steps/PromptForParameters.js +110 -206
- package/dist/lib/Steps/PromptForParameters.js.map +1 -1
- package/dist/lib/Steps/Result.js +19 -79
- package/dist/lib/Steps/Result.js.map +1 -1
- package/dist/lib/Steps/SentryProjectSelector.js +57 -148
- package/dist/lib/Steps/SentryProjectSelector.js.map +1 -1
- package/dist/lib/Steps/ShouldConfigure.js +6 -66
- package/dist/lib/Steps/ShouldConfigure.js.map +1 -1
- package/dist/lib/Steps/WaitForSentry.js +43 -120
- package/dist/lib/Steps/WaitForSentry.js.map +1 -1
- package/dist/lib/Steps/Welcome.js +17 -76
- package/dist/lib/Steps/Welcome.js.map +1 -1
- package/dist/lib/__tests__/Env.js +3 -3
- package/dist/lib/__tests__/Env.js.map +1 -1
- package/dist/src/android/android-wizard.js +100 -176
- package/dist/src/android/android-wizard.js.map +1 -1
- package/dist/src/android/code-tools.js +24 -33
- package/dist/src/android/code-tools.js.map +1 -1
- package/dist/src/android/gradle.js +106 -165
- package/dist/src/android/gradle.js.map +1 -1
- package/dist/src/android/manifest.js +26 -27
- package/dist/src/android/manifest.js.map +1 -1
- package/dist/src/android/templates.js +76 -23
- package/dist/src/android/templates.js.map +1 -1
- package/dist/src/apple/apple-wizard.js +129 -225
- package/dist/src/apple/apple-wizard.js.map +1 -1
- package/dist/src/apple/cocoapod.js +47 -109
- package/dist/src/apple/cocoapod.js.map +1 -1
- package/dist/src/apple/code-tools.js +32 -35
- package/dist/src/apple/code-tools.js.map +1 -1
- package/dist/src/apple/fastlane.js +51 -97
- package/dist/src/apple/fastlane.js.map +1 -1
- package/dist/src/apple/templates.js +41 -5
- package/dist/src/apple/templates.js.map +1 -1
- package/dist/src/apple/xcode-manager.d.ts +2 -2
- package/dist/src/apple/xcode-manager.js +93 -108
- package/dist/src/apple/xcode-manager.js.map +1 -1
- package/dist/src/flutter/code-tools.js +79 -127
- package/dist/src/flutter/code-tools.js.map +1 -1
- package/dist/src/flutter/flutter-wizard.js +75 -136
- package/dist/src/flutter/flutter-wizard.js.map +1 -1
- package/dist/src/flutter/templates.js +48 -12
- package/dist/src/flutter/templates.js.map +1 -1
- package/dist/src/nextjs/nextjs-wizard.js +527 -805
- package/dist/src/nextjs/nextjs-wizard.js.map +1 -1
- package/dist/src/nextjs/templates.js +380 -40
- package/dist/src/nextjs/templates.js.map +1 -1
- package/dist/src/nextjs/utils.js +5 -5
- package/dist/src/nextjs/utils.js.map +1 -1
- package/dist/src/nuxt/nuxt-wizard.js +91 -188
- package/dist/src/nuxt/nuxt-wizard.js.map +1 -1
- package/dist/src/nuxt/sdk-example.js +68 -137
- package/dist/src/nuxt/sdk-example.js.map +1 -1
- package/dist/src/nuxt/sdk-setup.d.ts +4 -4
- package/dist/src/nuxt/sdk-setup.js +180 -336
- package/dist/src/nuxt/sdk-setup.js.map +1 -1
- package/dist/src/nuxt/templates.js +195 -18
- package/dist/src/nuxt/templates.js.map +1 -1
- package/dist/src/nuxt/utils.js +29 -76
- package/dist/src/nuxt/utils.js.map +1 -1
- package/dist/src/react-native/expo-env-file.js +41 -94
- package/dist/src/react-native/expo-env-file.js.map +1 -1
- package/dist/src/react-native/expo-metro.d.ts +1 -1
- package/dist/src/react-native/expo-metro.js +75 -130
- package/dist/src/react-native/expo-metro.js.map +1 -1
- package/dist/src/react-native/expo.js +61 -114
- package/dist/src/react-native/expo.js.map +1 -1
- package/dist/src/react-native/git.js +23 -56
- package/dist/src/react-native/git.js.map +1 -1
- package/dist/src/react-native/glob.js +3 -3
- package/dist/src/react-native/glob.js.map +1 -1
- package/dist/src/react-native/gradle.js +4 -4
- package/dist/src/react-native/gradle.js.map +1 -1
- package/dist/src/react-native/javascript.js +51 -95
- package/dist/src/react-native/javascript.js.map +1 -1
- package/dist/src/react-native/metro.js +176 -296
- package/dist/src/react-native/metro.js.map +1 -1
- package/dist/src/react-native/react-native-wizard.js +267 -418
- package/dist/src/react-native/react-native-wizard.js.map +1 -1
- package/dist/src/react-native/uninstall.js +37 -80
- package/dist/src/react-native/uninstall.js.map +1 -1
- package/dist/src/react-native/xcode.js +57 -55
- package/dist/src/react-native/xcode.js.map +1 -1
- package/dist/src/remix/codemods/express-server.js +27 -82
- package/dist/src/remix/codemods/express-server.js.map +1 -1
- package/dist/src/remix/codemods/handle-error.js +28 -31
- package/dist/src/remix/codemods/handle-error.js.map +1 -1
- package/dist/src/remix/codemods/root-common.js +11 -11
- package/dist/src/remix/codemods/root-common.js.map +1 -1
- package/dist/src/remix/codemods/root-v1.js +17 -67
- package/dist/src/remix/codemods/root-v1.js.map +1 -1
- package/dist/src/remix/codemods/root-v2.js +89 -140
- package/dist/src/remix/codemods/root-v2.js.map +1 -1
- package/dist/src/remix/remix-wizard.js +181 -343
- package/dist/src/remix/remix-wizard.js.map +1 -1
- package/dist/src/remix/sdk-example.js +84 -66
- package/dist/src/remix/sdk-example.js.map +1 -1
- package/dist/src/remix/sdk-setup.js +161 -293
- package/dist/src/remix/sdk-setup.js.map +1 -1
- package/dist/src/remix/templates.js +10 -2
- package/dist/src/remix/templates.js.map +1 -1
- package/dist/src/remix/utils.js +13 -14
- package/dist/src/remix/utils.js.map +1 -1
- package/dist/src/run.js +106 -178
- package/dist/src/run.js.map +1 -1
- package/dist/src/sourcemaps/sourcemaps-wizard.js +248 -372
- package/dist/src/sourcemaps/sourcemaps-wizard.js.map +1 -1
- package/dist/src/sourcemaps/tools/angular.js +32 -66
- package/dist/src/sourcemaps/tools/angular.js.map +1 -1
- package/dist/src/sourcemaps/tools/create-react-app.js +14 -59
- package/dist/src/sourcemaps/tools/create-react-app.js.map +1 -1
- package/dist/src/sourcemaps/tools/esbuild.js +34 -77
- package/dist/src/sourcemaps/tools/esbuild.js.map +1 -1
- package/dist/src/sourcemaps/tools/nextjs.d.ts +2 -2
- package/dist/src/sourcemaps/tools/nextjs.js +75 -102
- package/dist/src/sourcemaps/tools/nextjs.js.map +1 -1
- package/dist/src/sourcemaps/tools/remix.js +53 -93
- package/dist/src/sourcemaps/tools/remix.js.map +1 -1
- package/dist/src/sourcemaps/tools/rollup.js +35 -76
- package/dist/src/sourcemaps/tools/rollup.js.map +1 -1
- package/dist/src/sourcemaps/tools/sentry-cli.js +157 -289
- package/dist/src/sourcemaps/tools/sentry-cli.js.map +1 -1
- package/dist/src/sourcemaps/tools/tsc.js +68 -134
- package/dist/src/sourcemaps/tools/tsc.js.map +1 -1
- package/dist/src/sourcemaps/tools/vite.js +111 -196
- package/dist/src/sourcemaps/tools/vite.js.map +1 -1
- package/dist/src/sourcemaps/tools/webpack.d.ts +1 -1
- package/dist/src/sourcemaps/tools/webpack.js +158 -260
- package/dist/src/sourcemaps/tools/webpack.js.map +1 -1
- package/dist/src/sourcemaps/utils/detect-tool.js +9 -54
- package/dist/src/sourcemaps/utils/detect-tool.js.map +1 -1
- package/dist/src/sourcemaps/utils/other-wizards.js +77 -144
- package/dist/src/sourcemaps/utils/other-wizards.js.map +1 -1
- package/dist/src/sourcemaps/utils/sdk-version.js +112 -191
- package/dist/src/sourcemaps/utils/sdk-version.js.map +1 -1
- package/dist/src/sveltekit/sdk-example.js +20 -70
- package/dist/src/sveltekit/sdk-example.js.map +1 -1
- package/dist/src/sveltekit/sdk-setup.js +250 -411
- package/dist/src/sveltekit/sdk-setup.js.map +1 -1
- package/dist/src/sveltekit/sveltekit-wizard.js +107 -191
- package/dist/src/sveltekit/sveltekit-wizard.js.map +1 -1
- package/dist/src/sveltekit/templates.js +147 -13
- package/dist/src/sveltekit/templates.js.map +1 -1
- package/dist/src/sveltekit/utils.js +3 -3
- package/dist/src/sveltekit/utils.js.map +1 -1
- package/dist/src/telemetry.d.ts +2 -2
- package/dist/src/telemetry.js +58 -108
- package/dist/src/telemetry.js.map +1 -1
- package/dist/src/utils/ast-utils.js +39 -54
- package/dist/src/utils/ast-utils.js.map +1 -1
- package/dist/src/utils/bash.js +28 -75
- package/dist/src/utils/bash.js.map +1 -1
- package/dist/src/utils/clack-utils.d.ts +3 -7
- package/dist/src/utils/clack-utils.js +688 -1083
- package/dist/src/utils/clack-utils.js.map +1 -1
- package/dist/src/utils/debug.js +6 -10
- package/dist/src/utils/debug.js.map +1 -1
- package/dist/src/utils/package-json.js +5 -6
- package/dist/src/utils/package-json.js.map +1 -1
- package/dist/src/utils/package-manager.js +65 -139
- package/dist/src/utils/package-manager.js.map +1 -1
- package/dist/src/utils/release-registry.js +12 -59
- package/dist/src/utils/release-registry.js.map +1 -1
- package/dist/src/utils/semver.js +3 -4
- package/dist/src/utils/semver.js.map +1 -1
- package/dist/src/utils/sentrycli-utils.js +4 -4
- package/dist/src/utils/sentrycli-utils.js.map +1 -1
- package/dist/src/utils/url.js +5 -6
- package/dist/src/utils/url.js.map +1 -1
- package/dist/test/android/code-tools.test.js +18 -18
- package/dist/test/android/code-tools.test.js.map +1 -1
- package/dist/test/apple/cocoapod.test.js +154 -299
- package/dist/test/apple/cocoapod.test.js.map +1 -1
- package/dist/test/apple/code-tools.test.js +375 -263
- package/dist/test/apple/code-tools.test.js.map +1 -1
- package/dist/test/apple/fastfile.test.js +319 -271
- package/dist/test/apple/fastfile.test.js.map +1 -1
- package/dist/test/apple/templates.test.js +114 -30
- package/dist/test/apple/templates.test.js.map +1 -1
- package/dist/test/apple/xcode-manager.test.js +230 -234
- package/dist/test/apple/xcode-manager.test.js.map +1 -1
- package/dist/test/flutter/code-tools.test.js +119 -48
- package/dist/test/flutter/code-tools.test.js.map +1 -1
- package/dist/test/flutter/templates.test.js +63 -20
- package/dist/test/flutter/templates.test.js.map +1 -1
- package/dist/test/nextjs/templates.test.js +332 -43
- package/dist/test/nextjs/templates.test.js.map +1 -1
- package/dist/test/nuxt/templates.test.js +161 -33
- package/dist/test/nuxt/templates.test.js.map +1 -1
- package/dist/test/react-native/expo-metro.test.js +61 -15
- package/dist/test/react-native/expo-metro.test.js.map +1 -1
- package/dist/test/react-native/expo.test.js +37 -17
- package/dist/test/react-native/expo.test.js.map +1 -1
- package/dist/test/react-native/gradle.test.js +260 -28
- package/dist/test/react-native/gradle.test.js.map +1 -1
- package/dist/test/react-native/javascript.test.js +85 -19
- package/dist/test/react-native/javascript.test.js.map +1 -1
- package/dist/test/react-native/metro.test.js +261 -187
- package/dist/test/react-native/metro.test.js.map +1 -1
- package/dist/test/react-native/xcode.test.js +243 -62
- package/dist/test/react-native/xcode.test.js.map +1 -1
- package/dist/test/remix/client-entry.test.js +81 -21
- package/dist/test/remix/client-entry.test.js.map +1 -1
- package/dist/test/remix/server-instrumentation.test.js +21 -8
- package/dist/test/remix/server-instrumentation.test.js.map +1 -1
- package/dist/test/sourcemaps/tools/sentry-cli.test.js +20 -72
- package/dist/test/sourcemaps/tools/sentry-cli.test.js.map +1 -1
- package/dist/test/sourcemaps/tools/tsc.test.js +142 -68
- package/dist/test/sourcemaps/tools/tsc.test.js.map +1 -1
- package/dist/test/sourcemaps/tools/vite.test.js +106 -75
- package/dist/test/sourcemaps/tools/vite.test.js.map +1 -1
- package/dist/test/sourcemaps/tools/webpack.test.js +226 -102
- package/dist/test/sourcemaps/tools/webpack.test.js.map +1 -1
- package/dist/test/sveltekit/templates.test.js +117 -18
- package/dist/test/sveltekit/templates.test.js.map +1 -1
- package/dist/test/utils/ast-utils.test.js +99 -58
- package/dist/test/utils/ast-utils.test.js.map +1 -1
- package/dist/test/utils/clack-utils.test.js +142 -247
- package/dist/test/utils/clack-utils.test.js.map +1 -1
- package/e2e-tests/package.json +1 -1
- package/e2e-tests/tests/flutter.test.ts +20 -20
- package/e2e-tests/tests/nextjs.test.ts +2 -2
- package/e2e-tests/tests/nuxt-3.test.ts +4 -4
- package/e2e-tests/tests/nuxt-4.test.ts +3 -3
- package/e2e-tests/tests/remix.test.ts +3 -3
- package/e2e-tests/tests/sveltekit.test.ts +3 -3
- package/e2e-tests/utils/index.ts +33 -15
- package/lib/Helper/BottomBar.ts +1 -1
- package/lib/Helper/Env.ts +1 -1
- package/lib/Helper/Package.ts +12 -10
- package/lib/Helper/SentryCli.ts +18 -27
- package/lib/Helper/Wizard.ts +1 -2
- package/lib/Setup.ts +4 -5
- package/lib/Steps/ChooseIntegration.ts +40 -8
- package/lib/Steps/Initial.ts +17 -26
- package/lib/Steps/Integrations/BaseIntegration.ts +2 -8
- package/lib/Steps/Integrations/Cordova.ts +9 -15
- package/lib/Steps/Integrations/Electron.ts +23 -20
- package/lib/Steps/Integrations/MobileProject.ts +18 -15
- package/lib/Steps/OpenSentry.ts +12 -7
- package/lib/Steps/PromptForParameters.ts +12 -19
- package/lib/Steps/SentryProjectSelector.ts +30 -29
- package/lib/Steps/WaitForSentry.ts +29 -23
- package/package.json +12 -8
- package/src/apple/xcode-manager.ts +10 -10
- package/src/nextjs/templates.ts +2 -3
- package/src/nuxt/sdk-setup.ts +21 -18
- package/src/react-native/expo-metro.ts +2 -2
- package/src/react-native/react-native-wizard.ts +1 -2
- package/src/react-native/uninstall.ts +1 -2
- package/src/react-native/xcode.ts +1 -1
- package/src/run.ts +12 -5
- package/src/sourcemaps/tools/nextjs.ts +2 -2
- package/src/sourcemaps/tools/webpack.ts +3 -3
- package/src/telemetry.ts +27 -7
- package/src/utils/clack-utils.ts +50 -47
- package/test/apple/cocoapod.test.ts +4 -0
- package/test/apple/fastfile.test.ts +12 -7
- package/test/apple/xcode-manager.test.ts +13 -11
- package/test/utils/clack-utils.test.ts +40 -50
- package/types/read-env.d.ts +3 -0
- package/types/xcode.d.ts +1 -0
- package/dist/package.json +0 -128
|
@@ -22,209 +22,221 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
35
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
36
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
37
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
38
|
-
function step(op) {
|
|
39
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
40
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
41
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
42
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
43
|
-
switch (op[0]) {
|
|
44
|
-
case 0: case 1: t = op; break;
|
|
45
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
46
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
47
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
48
|
-
default:
|
|
49
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
50
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
51
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
52
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
53
|
-
if (t[2]) _.ops.pop();
|
|
54
|
-
_.trys.pop(); continue;
|
|
55
|
-
}
|
|
56
|
-
op = body.call(thisArg, _);
|
|
57
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
58
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
26
|
+
const fs = __importStar(require("node:fs"));
|
|
27
|
+
const os = __importStar(require("node:os"));
|
|
28
|
+
const path = __importStar(require("node:path"));
|
|
29
|
+
const fastlane_1 = require("../../src/apple/fastlane");
|
|
66
30
|
// @ts-ignore - clack is ESM and TS complains about that. It works though
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
31
|
+
const clack = __importStar(require("@clack/prompts"));
|
|
32
|
+
jest.mock('@clack/prompts', () => ({
|
|
33
|
+
__esModule: true,
|
|
34
|
+
...jest.requireActual('@clack/prompts'),
|
|
35
|
+
}));
|
|
36
|
+
describe('fastlane', () => {
|
|
37
|
+
beforeEach(() => {
|
|
70
38
|
jest.spyOn(clack.log, 'warn').mockImplementation();
|
|
71
39
|
jest.spyOn(clack, 'select').mockResolvedValue(undefined);
|
|
72
40
|
});
|
|
73
|
-
describe('#fastFile',
|
|
74
|
-
describe('file exists',
|
|
75
|
-
it('should return path',
|
|
41
|
+
describe('#fastFile', () => {
|
|
42
|
+
describe('file exists', () => {
|
|
43
|
+
it('should return path', () => {
|
|
76
44
|
// -- Arrange --
|
|
77
|
-
|
|
78
|
-
|
|
45
|
+
const { fastlaneDir, projectPath } = createFastlaneDir();
|
|
46
|
+
const fastfile = createFastfile(fastlaneDir, 'lane :test do');
|
|
79
47
|
// -- Act --
|
|
80
|
-
|
|
48
|
+
const result = (0, fastlane_1.fastFile)(projectPath);
|
|
81
49
|
// -- Assert --
|
|
82
50
|
expect(result).toBe(fastfile);
|
|
83
51
|
});
|
|
84
52
|
});
|
|
85
|
-
describe('file does not exist',
|
|
86
|
-
it('should return null',
|
|
53
|
+
describe('file does not exist', () => {
|
|
54
|
+
it('should return null', () => {
|
|
87
55
|
// -- Arrange --
|
|
88
|
-
|
|
56
|
+
const { projectPath } = createFastlaneDir();
|
|
89
57
|
// do not create Fastfile
|
|
90
58
|
// -- Act --
|
|
91
|
-
|
|
59
|
+
const result = (0, fastlane_1.fastFile)(projectPath);
|
|
92
60
|
// -- Assert --
|
|
93
61
|
expect(result).toBeNull();
|
|
94
62
|
});
|
|
95
63
|
});
|
|
96
64
|
});
|
|
97
|
-
describe('#findIOSPlatform',
|
|
98
|
-
describe('platform block detection',
|
|
99
|
-
|
|
65
|
+
describe('#findIOSPlatform', () => {
|
|
66
|
+
describe('platform block detection', () => {
|
|
67
|
+
const variations = [
|
|
100
68
|
{
|
|
101
69
|
name: 'no platform',
|
|
102
|
-
content:
|
|
70
|
+
content: `lane :test do
|
|
71
|
+
end`,
|
|
103
72
|
expected: { index: 0, length: 17 },
|
|
104
73
|
},
|
|
105
74
|
{
|
|
106
75
|
name: 'platform is ios',
|
|
107
|
-
content:
|
|
76
|
+
content: `platform: ios
|
|
77
|
+
lane :test do
|
|
78
|
+
end`,
|
|
108
79
|
expected: { index: 0, length: 31 },
|
|
109
80
|
},
|
|
110
81
|
{
|
|
111
82
|
name: 'platform is ios and other platform',
|
|
112
|
-
content:
|
|
83
|
+
content: `platform: ios
|
|
84
|
+
end
|
|
85
|
+
platform: android
|
|
86
|
+
lane :test do
|
|
87
|
+
end`,
|
|
113
88
|
expected: { index: 0, length: 57 },
|
|
114
89
|
},
|
|
115
90
|
{
|
|
116
91
|
name: 'platform is ios and other platform',
|
|
117
|
-
content:
|
|
92
|
+
content: `
|
|
93
|
+
\t\tplatform: ios
|
|
94
|
+
\t\tend
|
|
95
|
+
\t\tplatform: android
|
|
96
|
+
\t\t\tlane :test do
|
|
97
|
+
\t\t\tend`,
|
|
118
98
|
expected: { index: 0, length: 66 },
|
|
119
99
|
},
|
|
120
100
|
];
|
|
121
|
-
|
|
122
|
-
describe(
|
|
123
|
-
it('should return null',
|
|
101
|
+
for (const variation of variations) {
|
|
102
|
+
describe(`${variation.name}`, () => {
|
|
103
|
+
it('should return null', () => {
|
|
124
104
|
// -- Act --
|
|
125
|
-
|
|
105
|
+
const result = fastlane_1.exportForTesting.findIOSPlatform(variation.content);
|
|
126
106
|
// -- Assert --
|
|
127
107
|
expect(result).toEqual(variation.expected);
|
|
128
108
|
});
|
|
129
109
|
});
|
|
130
|
-
};
|
|
131
|
-
for (var _i = 0, variations_1 = variations; _i < variations_1.length; _i++) {
|
|
132
|
-
var variation = variations_1[_i];
|
|
133
|
-
_loop_1(variation);
|
|
134
110
|
}
|
|
135
111
|
});
|
|
136
|
-
describe('platform block not found',
|
|
137
|
-
it('should return full content',
|
|
112
|
+
describe('platform block not found', () => {
|
|
113
|
+
it('should return full content', () => {
|
|
138
114
|
// -- Arrange --
|
|
139
|
-
|
|
115
|
+
const content = `
|
|
116
|
+
lane :test do
|
|
117
|
+
puts 'Hello, world!'
|
|
118
|
+
end`;
|
|
140
119
|
// -- Act --
|
|
141
|
-
|
|
120
|
+
const result = fastlane_1.exportForTesting.findIOSPlatform(content);
|
|
142
121
|
// -- Assert --
|
|
143
122
|
expect(result).toEqual({ index: 0, length: 65 });
|
|
144
123
|
});
|
|
145
124
|
});
|
|
146
|
-
describe('invalid platform block',
|
|
147
|
-
it('should return null',
|
|
125
|
+
describe('invalid platform block', () => {
|
|
126
|
+
it('should return null', () => {
|
|
148
127
|
// -- Arrange --
|
|
149
128
|
// platform block is not opened with `do`
|
|
150
|
-
|
|
129
|
+
const content = `
|
|
130
|
+
platform :ios\n
|
|
131
|
+
lane :test do
|
|
132
|
+
puts 'Hello, world!'
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
`;
|
|
151
136
|
// -- Act --
|
|
152
|
-
|
|
137
|
+
const result = fastlane_1.exportForTesting.findIOSPlatform(content);
|
|
153
138
|
// -- Assert --
|
|
154
139
|
expect(result).toBeNull();
|
|
155
140
|
});
|
|
156
141
|
});
|
|
157
|
-
describe('platform block is not closed',
|
|
158
|
-
it('should return null',
|
|
142
|
+
describe('platform block is not closed', () => {
|
|
143
|
+
it('should return null', () => {
|
|
159
144
|
// -- Arrange --
|
|
160
|
-
|
|
145
|
+
const content = `
|
|
146
|
+
platform :ios do
|
|
147
|
+
lane :test do
|
|
148
|
+
puts 'Hello, world!'
|
|
149
|
+
end
|
|
150
|
+
`;
|
|
161
151
|
// -- Act --
|
|
162
|
-
|
|
152
|
+
const result = fastlane_1.exportForTesting.findIOSPlatform(content);
|
|
163
153
|
// -- Assert --
|
|
164
154
|
expect(result).toBeNull();
|
|
165
155
|
});
|
|
166
156
|
});
|
|
167
|
-
describe('multiple platforms detected',
|
|
168
|
-
it('should return block with ios platform',
|
|
157
|
+
describe('multiple platforms detected', () => {
|
|
158
|
+
it('should return block with ios platform', () => {
|
|
169
159
|
// -- Arrange --
|
|
170
|
-
|
|
160
|
+
const content = `
|
|
161
|
+
fastlane_version '2.53.1'
|
|
162
|
+
|
|
163
|
+
before_all do
|
|
164
|
+
ensure_git_branch
|
|
165
|
+
ensure_git_status_clean
|
|
166
|
+
git_pull
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
platform :ios do
|
|
170
|
+
# iOS Lanes
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
platform :android do
|
|
174
|
+
# Android Lanes
|
|
175
|
+
end
|
|
176
|
+
`;
|
|
171
177
|
// -- Act --
|
|
172
|
-
|
|
178
|
+
const result = fastlane_1.exportForTesting.findIOSPlatform(content);
|
|
173
179
|
// -- Assert --
|
|
174
180
|
expect(result).toEqual({ index: 121, length: 15 });
|
|
175
181
|
});
|
|
176
182
|
});
|
|
177
183
|
});
|
|
178
|
-
describe('#findLanes',
|
|
179
|
-
describe('lanes detection',
|
|
180
|
-
describe('valid cases',
|
|
181
|
-
|
|
184
|
+
describe('#findLanes', () => {
|
|
185
|
+
describe('lanes detection', () => {
|
|
186
|
+
describe('valid cases', () => {
|
|
187
|
+
const variations = [
|
|
182
188
|
{
|
|
183
189
|
name: 'single lane',
|
|
184
|
-
content:
|
|
190
|
+
content: `
|
|
191
|
+
lane :test do
|
|
192
|
+
puts 'Hello, world!'
|
|
193
|
+
end
|
|
194
|
+
`,
|
|
185
195
|
expected: [{ index: 17, length: 25, name: 'test' }],
|
|
186
196
|
},
|
|
187
197
|
{
|
|
188
198
|
name: 'multiple lanes',
|
|
189
|
-
content:
|
|
199
|
+
content: `
|
|
200
|
+
lane :test do
|
|
201
|
+
puts 'Hello, world!'
|
|
202
|
+
end
|
|
203
|
+
lane :test2 do
|
|
204
|
+
puts 'Hello, world!'
|
|
205
|
+
end`,
|
|
190
206
|
expected: [
|
|
191
207
|
{ index: 17, length: 25, name: 'test' },
|
|
192
208
|
{ index: 65, length: 25, name: 'test2' },
|
|
193
209
|
],
|
|
194
210
|
},
|
|
195
211
|
];
|
|
196
|
-
|
|
197
|
-
describe(
|
|
198
|
-
it('should return lanes',
|
|
212
|
+
for (const variation of variations) {
|
|
213
|
+
describe(`${variation.name}`, () => {
|
|
214
|
+
it('should return lanes', () => {
|
|
199
215
|
// -- Act --
|
|
200
|
-
|
|
216
|
+
const result = fastlane_1.exportForTesting.findLanes(variation.content);
|
|
201
217
|
// -- Assert --
|
|
202
218
|
expect(result).toEqual(variation.expected);
|
|
203
219
|
});
|
|
204
220
|
});
|
|
205
|
-
};
|
|
206
|
-
for (var _i = 0, variations_2 = variations; _i < variations_2.length; _i++) {
|
|
207
|
-
var variation = variations_2[_i];
|
|
208
|
-
_loop_2(variation);
|
|
209
221
|
}
|
|
210
222
|
});
|
|
211
|
-
describe('invalid cases',
|
|
212
|
-
describe('lane is not indented',
|
|
213
|
-
it('should return null',
|
|
223
|
+
describe('invalid cases', () => {
|
|
224
|
+
describe('lane is not indented', () => {
|
|
225
|
+
it('should return null', () => {
|
|
214
226
|
// -- Arrange --
|
|
215
|
-
|
|
227
|
+
const content = `lane :test do\nend`;
|
|
216
228
|
// -- Act --
|
|
217
|
-
|
|
229
|
+
const result = fastlane_1.exportForTesting.findLanes(content);
|
|
218
230
|
// -- Assert --
|
|
219
231
|
expect(result).toBeNull();
|
|
220
232
|
});
|
|
221
233
|
});
|
|
222
|
-
describe('lane is not closed',
|
|
223
|
-
it('should return null',
|
|
234
|
+
describe('lane is not closed', () => {
|
|
235
|
+
it('should return null', () => {
|
|
224
236
|
// -- Arrange --
|
|
225
|
-
|
|
237
|
+
const content = ` lane :test do\n`;
|
|
226
238
|
// -- Act --
|
|
227
|
-
|
|
239
|
+
const result = fastlane_1.exportForTesting.findLanes(content);
|
|
228
240
|
// -- Assert --
|
|
229
241
|
expect(result).toBeNull();
|
|
230
242
|
});
|
|
@@ -232,199 +244,235 @@ describe('fastlane', function () {
|
|
|
232
244
|
});
|
|
233
245
|
});
|
|
234
246
|
});
|
|
235
|
-
describe('#addSentryToLane',
|
|
236
|
-
describe('sentry_cli is not present',
|
|
237
|
-
it('should return original content',
|
|
247
|
+
describe('#addSentryToLane', () => {
|
|
248
|
+
describe('sentry_cli is not present', () => {
|
|
249
|
+
it('should return original content', () => {
|
|
238
250
|
// -- Arrange --
|
|
239
|
-
|
|
240
|
-
|
|
251
|
+
const content = `
|
|
252
|
+
platform :ios do
|
|
253
|
+
lane :test do
|
|
254
|
+
puts 'Hello, world!'
|
|
255
|
+
end
|
|
256
|
+
end
|
|
257
|
+
`;
|
|
258
|
+
const lane = { index: 34, length: 25, name: 'test' };
|
|
241
259
|
// -- Act --
|
|
242
|
-
|
|
260
|
+
const result = fastlane_1.exportForTesting.addSentryToLane(content, lane, 'test-org', 'test-project');
|
|
243
261
|
// -- Assert --
|
|
244
|
-
expect(result).toBe(
|
|
262
|
+
expect(result).toBe(`
|
|
263
|
+
platform :ios do
|
|
264
|
+
lane :test do
|
|
265
|
+
puts 'Hello, world!'
|
|
266
|
+
|
|
267
|
+
sentry_cli(
|
|
268
|
+
org_slug: 'test-org',
|
|
269
|
+
project_slug: 'test-project',
|
|
270
|
+
include_sources: true
|
|
271
|
+
)
|
|
272
|
+
end
|
|
273
|
+
end
|
|
274
|
+
`);
|
|
245
275
|
});
|
|
246
276
|
});
|
|
247
|
-
describe('sentry_cli is present',
|
|
248
|
-
it('should return updated content',
|
|
277
|
+
describe('sentry_cli is present', () => {
|
|
278
|
+
it('should return updated content', () => {
|
|
249
279
|
// -- Arrange --
|
|
250
|
-
|
|
251
|
-
|
|
280
|
+
const content = `
|
|
281
|
+
platform :ios do
|
|
282
|
+
lane :test do
|
|
283
|
+
puts 'Hello, world!'
|
|
284
|
+
|
|
285
|
+
sentry_cli(org_slug: 'test-org', project_slug: 'test-project')
|
|
286
|
+
end
|
|
287
|
+
end
|
|
288
|
+
`;
|
|
289
|
+
const lane = { index: 34, length: 92, name: 'test' };
|
|
252
290
|
// -- Act --
|
|
253
|
-
|
|
291
|
+
const result = fastlane_1.exportForTesting.addSentryToLane(content, lane, 'test-org', 'test-project');
|
|
254
292
|
// -- Assert --
|
|
255
|
-
expect(result).toBe(
|
|
293
|
+
expect(result).toBe(`
|
|
294
|
+
platform :ios do
|
|
295
|
+
lane :test do
|
|
296
|
+
puts 'Hello, world!'
|
|
297
|
+
|
|
298
|
+
sentry_cli(
|
|
299
|
+
org_slug: 'test-org',
|
|
300
|
+
project_slug: 'test-project',
|
|
301
|
+
include_sources: true
|
|
302
|
+
)
|
|
303
|
+
end
|
|
304
|
+
end
|
|
305
|
+
`);
|
|
256
306
|
});
|
|
257
307
|
});
|
|
258
308
|
});
|
|
259
|
-
describe('#addSentryToFastlane',
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
describe('Fastfile not found',
|
|
263
|
-
it('should return false',
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
expect(result).toBe(false);
|
|
275
|
-
expect(fs.existsSync(fastfilePath)).toBe(false);
|
|
276
|
-
return [2 /*return*/];
|
|
277
|
-
}
|
|
278
|
-
});
|
|
279
|
-
}); });
|
|
309
|
+
describe('#addSentryToFastlane', () => {
|
|
310
|
+
const org = 'test-org';
|
|
311
|
+
const project = 'test-project';
|
|
312
|
+
describe('Fastfile not found', () => {
|
|
313
|
+
it('should return false', async () => {
|
|
314
|
+
// -- Arrange --
|
|
315
|
+
const { projectPath } = createFastlaneDir();
|
|
316
|
+
const fastfilePath = path.join(projectPath, 'Fastfile');
|
|
317
|
+
// do not create Fastfile
|
|
318
|
+
// -- Act --
|
|
319
|
+
const result = await (0, fastlane_1.addSentryToFastlane)(projectPath, org, project);
|
|
320
|
+
// -- Assert --
|
|
321
|
+
expect(result).toBe(false);
|
|
322
|
+
expect(fs.existsSync(fastfilePath)).toBe(false);
|
|
323
|
+
});
|
|
280
324
|
});
|
|
281
|
-
describe('platform not found',
|
|
282
|
-
it('should return false',
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
}); });
|
|
325
|
+
describe('platform not found', () => {
|
|
326
|
+
it('should return false', async () => {
|
|
327
|
+
// -- Arrange --
|
|
328
|
+
const { fastlaneDir, projectPath } = createFastlaneDir();
|
|
329
|
+
const fastfilePath = createFastfile(fastlaneDir, `
|
|
330
|
+
platform :ios
|
|
331
|
+
lane :test do
|
|
332
|
+
puts 'Hello, world!'
|
|
333
|
+
end
|
|
334
|
+
end
|
|
335
|
+
`);
|
|
336
|
+
const originalContent = fs.readFileSync(fastfilePath, 'utf8');
|
|
337
|
+
// -- Act --
|
|
338
|
+
const result = await (0, fastlane_1.addSentryToFastlane)(projectPath, org, project);
|
|
339
|
+
// -- Assert --
|
|
340
|
+
expect(result).toBe(false);
|
|
341
|
+
expect(fs.readFileSync(fastfilePath, 'utf8')).toBe(originalContent);
|
|
342
|
+
});
|
|
300
343
|
});
|
|
301
|
-
describe('no lanes',
|
|
302
|
-
it('should return false',
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
switch (_b.label) {
|
|
322
|
-
case 0:
|
|
323
|
-
_a = createFastlaneDir(), fastlaneDir = _a.fastlaneDir, projectPath = _a.projectPath;
|
|
324
|
-
createFastfile(fastlaneDir, "platform :ios");
|
|
325
|
-
return [4 /*yield*/, (0, fastlane_1.addSentryToFastlane)(projectPath, org, project)];
|
|
326
|
-
case 1:
|
|
327
|
-
result = _b.sent();
|
|
328
|
-
// -- Assert --
|
|
329
|
-
expect(result).toBe(false);
|
|
330
|
-
expect(clack.log.warn).toHaveBeenCalledWith('No suitable lanes in your Fastfile.');
|
|
331
|
-
return [2 /*return*/];
|
|
332
|
-
}
|
|
333
|
-
});
|
|
334
|
-
}); });
|
|
344
|
+
describe('no lanes', () => {
|
|
345
|
+
it('should return false', async () => {
|
|
346
|
+
// -- Arrange --
|
|
347
|
+
const { fastlaneDir, projectPath } = createFastlaneDir();
|
|
348
|
+
createFastfile(fastlaneDir, `platform :ios`);
|
|
349
|
+
// -- Act --
|
|
350
|
+
const result = await (0, fastlane_1.addSentryToFastlane)(projectPath, org, project);
|
|
351
|
+
// -- Assert --
|
|
352
|
+
expect(result).toBe(false);
|
|
353
|
+
});
|
|
354
|
+
it('should warn user', async () => {
|
|
355
|
+
// -- Arrange --
|
|
356
|
+
const { fastlaneDir, projectPath } = createFastlaneDir();
|
|
357
|
+
createFastfile(fastlaneDir, `platform :ios`);
|
|
358
|
+
// -- Act --
|
|
359
|
+
const result = await (0, fastlane_1.addSentryToFastlane)(projectPath, org, project);
|
|
360
|
+
// -- Assert --
|
|
361
|
+
expect(result).toBe(false);
|
|
362
|
+
expect(clack.log.warn).toHaveBeenCalledWith('No suitable lanes in your Fastfile.');
|
|
363
|
+
});
|
|
335
364
|
});
|
|
336
|
-
describe('single lane',
|
|
337
|
-
it('should return true',
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
365
|
+
describe('single lane', () => {
|
|
366
|
+
it('should return true', async () => {
|
|
367
|
+
// -- Arrange --
|
|
368
|
+
const { fastlaneDir, projectPath } = createFastlaneDir();
|
|
369
|
+
const fastfilePath = createFastfile(fastlaneDir, `
|
|
370
|
+
platform :ios do
|
|
371
|
+
lane :test do
|
|
372
|
+
puts 'Hello, world!'
|
|
373
|
+
end
|
|
374
|
+
end
|
|
375
|
+
`);
|
|
376
|
+
// -- Act --
|
|
377
|
+
const result = await (0, fastlane_1.addSentryToFastlane)(projectPath, org, project);
|
|
378
|
+
// -- Assert --
|
|
379
|
+
expect(result).toBe(true);
|
|
380
|
+
expect(fs.readFileSync(fastfilePath, 'utf8')).toBe(`
|
|
381
|
+
platform :ios do
|
|
382
|
+
lane :test do
|
|
383
|
+
puts 'Hello, world!'
|
|
384
|
+
|
|
385
|
+
sentry_cli(
|
|
386
|
+
org_slug: 'test-org',
|
|
387
|
+
project_slug: 'test-project',
|
|
388
|
+
include_sources: true
|
|
389
|
+
)
|
|
390
|
+
end
|
|
391
|
+
end
|
|
392
|
+
`);
|
|
393
|
+
});
|
|
354
394
|
});
|
|
355
|
-
describe('multiple lanes',
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
beforeEach(
|
|
360
|
-
|
|
395
|
+
describe('multiple lanes', () => {
|
|
396
|
+
let fastfilePath;
|
|
397
|
+
let projectPath;
|
|
398
|
+
let originalContent;
|
|
399
|
+
beforeEach(() => {
|
|
400
|
+
const createdFastlaneDir = createFastlaneDir();
|
|
361
401
|
projectPath = createdFastlaneDir.projectPath;
|
|
362
|
-
fastfilePath = createFastfile(createdFastlaneDir.fastlaneDir,
|
|
402
|
+
fastfilePath = createFastfile(createdFastlaneDir.fastlaneDir, `platform :ios do
|
|
403
|
+
lane :test do
|
|
404
|
+
puts 'Hello, world!'
|
|
405
|
+
end
|
|
406
|
+
|
|
407
|
+
lane :beta do
|
|
408
|
+
puts 'Beta lane'
|
|
409
|
+
end
|
|
410
|
+
end
|
|
411
|
+
`);
|
|
363
412
|
});
|
|
364
|
-
describe('no lane selected',
|
|
365
|
-
it('should not modify Fastfile',
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
result = _a.sent();
|
|
376
|
-
// -- Assert --
|
|
377
|
-
expect(result).toBe(false);
|
|
378
|
-
expect(fs.readFileSync(fastfilePath, 'utf8')).toBe(originalContent);
|
|
379
|
-
return [2 /*return*/];
|
|
380
|
-
}
|
|
381
|
-
});
|
|
382
|
-
}); });
|
|
413
|
+
describe('no lane selected', () => {
|
|
414
|
+
it('should not modify Fastfile', async () => {
|
|
415
|
+
// -- Arrange --
|
|
416
|
+
originalContent = fs.readFileSync(fastfilePath, 'utf8');
|
|
417
|
+
jest.spyOn(clack, 'select').mockResolvedValue(undefined);
|
|
418
|
+
// -- Act --
|
|
419
|
+
const result = await (0, fastlane_1.addSentryToFastlane)(projectPath, org, project);
|
|
420
|
+
// -- Assert --
|
|
421
|
+
expect(result).toBe(false);
|
|
422
|
+
expect(fs.readFileSync(fastfilePath, 'utf8')).toBe(originalContent);
|
|
423
|
+
});
|
|
383
424
|
});
|
|
384
|
-
describe('lane selected',
|
|
385
|
-
it('should modify only selected lane',
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
// -- Arrange --
|
|
391
|
-
jest.spyOn(clack, 'select').mockResolvedValue({
|
|
392
|
-
value: 'beta',
|
|
393
|
-
index: 1,
|
|
394
|
-
});
|
|
395
|
-
return [4 /*yield*/, (0, fastlane_1.addSentryToFastlane)(projectPath, org, project)];
|
|
396
|
-
case 1:
|
|
397
|
-
result = _a.sent();
|
|
398
|
-
// -- Assert --
|
|
399
|
-
expect(result).toBe(true);
|
|
400
|
-
expect(fs.readFileSync(fastfilePath, 'utf8')).toBe("platform :ios do\n lane :test do\n puts 'Hello, world!'\n end \n\n lane :beta do\n puts 'Beta lane'\n\n sentry_cli(\n org_slug: 'test-org',\n project_slug: 'test-project',\n include_sources: true\n )\n end\nend\n");
|
|
401
|
-
expect(clack.select).toHaveBeenCalledWith({
|
|
402
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
403
|
-
maxItems: expect.any(Number),
|
|
404
|
-
message: 'Select lane to add Sentry to:',
|
|
405
|
-
options: [
|
|
406
|
-
{ value: { value: 'test', index: 0 }, label: 'test' },
|
|
407
|
-
{ value: { value: 'beta', index: 1 }, label: 'beta' },
|
|
408
|
-
],
|
|
409
|
-
});
|
|
410
|
-
return [2 /*return*/];
|
|
411
|
-
}
|
|
425
|
+
describe('lane selected', () => {
|
|
426
|
+
it('should modify only selected lane', async () => {
|
|
427
|
+
// -- Arrange --
|
|
428
|
+
jest.spyOn(clack, 'select').mockResolvedValue({
|
|
429
|
+
value: 'beta',
|
|
430
|
+
index: 1,
|
|
412
431
|
});
|
|
413
|
-
|
|
432
|
+
// -- Act --
|
|
433
|
+
const result = await (0, fastlane_1.addSentryToFastlane)(projectPath, org, project);
|
|
434
|
+
// -- Assert --
|
|
435
|
+
expect(result).toBe(true);
|
|
436
|
+
expect(fs.readFileSync(fastfilePath, 'utf8')).toBe(`platform :ios do
|
|
437
|
+
lane :test do
|
|
438
|
+
puts 'Hello, world!'
|
|
439
|
+
end
|
|
440
|
+
|
|
441
|
+
lane :beta do
|
|
442
|
+
puts 'Beta lane'
|
|
443
|
+
|
|
444
|
+
sentry_cli(
|
|
445
|
+
org_slug: 'test-org',
|
|
446
|
+
project_slug: 'test-project',
|
|
447
|
+
include_sources: true
|
|
448
|
+
)
|
|
449
|
+
end
|
|
450
|
+
end
|
|
451
|
+
`);
|
|
452
|
+
expect(clack.select).toHaveBeenCalledWith({
|
|
453
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
454
|
+
maxItems: expect.any(Number),
|
|
455
|
+
message: 'Select lane to add Sentry to:',
|
|
456
|
+
options: [
|
|
457
|
+
{ value: { value: 'test', index: 0 }, label: 'test' },
|
|
458
|
+
{ value: { value: 'beta', index: 1 }, label: 'beta' },
|
|
459
|
+
],
|
|
460
|
+
});
|
|
461
|
+
});
|
|
414
462
|
});
|
|
415
463
|
});
|
|
416
464
|
});
|
|
417
465
|
});
|
|
418
466
|
function createFastlaneDir() {
|
|
419
|
-
|
|
420
|
-
|
|
467
|
+
const projectPath = fs.mkdtempSync(path.join(os.tmpdir(), 'test-project'));
|
|
468
|
+
const fastlaneDir = path.join(projectPath, 'fastlane');
|
|
421
469
|
fs.mkdirSync(fastlaneDir, {
|
|
422
470
|
recursive: true,
|
|
423
471
|
});
|
|
424
|
-
return { fastlaneDir
|
|
472
|
+
return { fastlaneDir, projectPath };
|
|
425
473
|
}
|
|
426
474
|
function createFastfile(fastlaneDir, content) {
|
|
427
|
-
|
|
475
|
+
const fastfile = path.join(fastlaneDir, 'Fastfile');
|
|
428
476
|
fs.writeFileSync(fastfile, content);
|
|
429
477
|
return fastfile;
|
|
430
478
|
}
|