@datadog/datadog-ci 1.13.2 → 1.14.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.
Files changed (72) hide show
  1. package/LICENSE-3rdparty.csv +3 -0
  2. package/README.md +12 -11
  3. package/dist/commands/dsyms/upload.js +1 -2
  4. package/dist/commands/dsyms/upload.js.map +1 -1
  5. package/dist/commands/flutter-symbols/__tests__/upload.test.d.ts +1 -0
  6. package/dist/commands/flutter-symbols/__tests__/upload.test.js +542 -0
  7. package/dist/commands/flutter-symbols/__tests__/upload.test.js.map +1 -0
  8. package/dist/commands/flutter-symbols/cli.d.ts +1 -0
  9. package/dist/commands/flutter-symbols/cli.js +5 -0
  10. package/dist/commands/flutter-symbols/cli.js.map +1 -0
  11. package/dist/commands/flutter-symbols/helpers.d.ts +8 -0
  12. package/dist/commands/flutter-symbols/helpers.js +67 -0
  13. package/dist/commands/flutter-symbols/helpers.js.map +1 -0
  14. package/dist/commands/flutter-symbols/interfaces.d.ts +17 -0
  15. package/dist/commands/flutter-symbols/interfaces.js +10 -0
  16. package/dist/commands/flutter-symbols/interfaces.js.map +1 -0
  17. package/dist/commands/flutter-symbols/renderer.d.ts +22 -0
  18. package/dist/commands/flutter-symbols/renderer.js +102 -0
  19. package/dist/commands/flutter-symbols/renderer.js.map +1 -0
  20. package/dist/commands/flutter-symbols/upload.d.ts +37 -0
  21. package/dist/commands/flutter-symbols/upload.js +417 -0
  22. package/dist/commands/flutter-symbols/upload.js.map +1 -0
  23. package/dist/commands/lambda/functions/commons.d.ts +2 -2
  24. package/dist/commands/react-native/__tests__/codepush.test.d.ts +1 -0
  25. package/dist/commands/react-native/__tests__/codepush.test.js +154 -0
  26. package/dist/commands/react-native/__tests__/codepush.test.js.map +1 -0
  27. package/dist/commands/react-native/cli.js +2 -1
  28. package/dist/commands/react-native/cli.js.map +1 -1
  29. package/dist/commands/react-native/codepush.d.ts +24 -0
  30. package/dist/commands/react-native/codepush.js +160 -0
  31. package/dist/commands/react-native/codepush.js.map +1 -0
  32. package/dist/commands/react-native/errors.d.ts +9 -0
  33. package/dist/commands/react-native/errors.js +34 -0
  34. package/dist/commands/react-native/errors.js.map +1 -0
  35. package/dist/commands/react-native/upload.js +1 -2
  36. package/dist/commands/react-native/upload.js.map +1 -1
  37. package/dist/commands/react-native/xcode.js +8 -1
  38. package/dist/commands/react-native/xcode.js.map +1 -1
  39. package/dist/commands/sourcemaps/upload.js +1 -1
  40. package/dist/commands/sourcemaps/upload.js.map +1 -1
  41. package/dist/commands/synthetics/__tests__/api.test.js +45 -5
  42. package/dist/commands/synthetics/__tests__/api.test.js.map +1 -1
  43. package/dist/commands/synthetics/__tests__/cli.test.js +7 -7
  44. package/dist/commands/synthetics/__tests__/cli.test.js.map +1 -1
  45. package/dist/commands/synthetics/__tests__/mobile.test.d.ts +1 -0
  46. package/dist/commands/synthetics/__tests__/mobile.test.js +37 -0
  47. package/dist/commands/synthetics/__tests__/mobile.test.js.map +1 -0
  48. package/dist/commands/synthetics/__tests__/run-test.test.js +20 -50
  49. package/dist/commands/synthetics/__tests__/run-test.test.js.map +1 -1
  50. package/dist/commands/synthetics/__tests__/utils.test.js +41 -21
  51. package/dist/commands/synthetics/__tests__/utils.test.js.map +1 -1
  52. package/dist/commands/synthetics/__tests__/websocket.test.js +3 -3
  53. package/dist/commands/synthetics/__tests__/websocket.test.js.map +1 -1
  54. package/dist/commands/synthetics/api.d.ts +10 -3
  55. package/dist/commands/synthetics/api.js +40 -3
  56. package/dist/commands/synthetics/api.js.map +1 -1
  57. package/dist/commands/synthetics/mobile.d.ts +2 -0
  58. package/dist/commands/synthetics/mobile.js +38 -0
  59. package/dist/commands/synthetics/mobile.js.map +1 -0
  60. package/dist/commands/synthetics/run-test.d.ts +2 -63
  61. package/dist/commands/synthetics/run-test.js +18 -40
  62. package/dist/commands/synthetics/run-test.js.map +1 -1
  63. package/dist/commands/synthetics/utils.d.ts +2 -1
  64. package/dist/commands/synthetics/utils.js +134 -97
  65. package/dist/commands/synthetics/utils.js.map +1 -1
  66. package/dist/helpers/git/format-git-sourcemaps-data.d.ts +1 -0
  67. package/dist/helpers/git/format-git-sourcemaps-data.js +8 -0
  68. package/dist/helpers/git/format-git-sourcemaps-data.js.map +1 -1
  69. package/dist/helpers/utils.d.ts +3 -0
  70. package/dist/helpers/utils.js +9 -1
  71. package/dist/helpers/utils.js.map +1 -1
  72. package/package.json +5 -2
@@ -0,0 +1,542 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
22
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23
+ return new (P || (P = Promise))(function (resolve, reject) {
24
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
25
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
26
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
27
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
28
+ });
29
+ };
30
+ Object.defineProperty(exports, "__esModule", { value: true });
31
+ // tslint:disable: no-string-literal
32
+ const fs_1 = require("fs");
33
+ const format_git_sourcemaps_data_1 = require("../../../helpers/git/format-git-sourcemaps-data");
34
+ const format_git_sourcemaps_data_2 = require("../../../helpers/git/format-git-sourcemaps-data");
35
+ const utils_1 = require("../../../helpers/utils");
36
+ const dsyms = __importStar(require("../..//dsyms/upload"));
37
+ const helpers_1 = require("../helpers");
38
+ const renderer_1 = require("../renderer");
39
+ const upload_1 = require("../upload");
40
+ jest.mock('../../../helpers/utils', () => (Object.assign(Object.assign({}, jest.requireActual('../../../helpers/utils')), { performSubCommand: jest.fn() })));
41
+ jest.mock('../helpers', () => (Object.assign(Object.assign({}, jest.requireActual('../helpers')), { uploadMultipartHelper: jest.fn() })));
42
+ jest.mock('../../../helpers/git/format-git-sourcemaps-data', () => (Object.assign(Object.assign({}, jest.requireActual('../../../helpers/git/format-git-sourcemaps-data')), { getRepositoryData: jest.fn() })));
43
+ // tslint:disable-next-line:no-var-requires
44
+ const cliVersion = require('../../../../package.json').version;
45
+ const fixtureDir = './src/commands/flutter-symbols/__tests__/fixtures';
46
+ describe('flutter-symbol upload', () => {
47
+ beforeAll(() => {
48
+ jest.clearAllMocks();
49
+ });
50
+ const createMockContext = () => {
51
+ let outString = '';
52
+ let errString = '';
53
+ return {
54
+ stderr: {
55
+ toString: () => errString,
56
+ write: (input) => {
57
+ errString += input;
58
+ },
59
+ },
60
+ stdin: {},
61
+ stdout: {
62
+ toString: () => outString,
63
+ write: (input) => {
64
+ outString += input;
65
+ },
66
+ },
67
+ };
68
+ };
69
+ const runCommand = (prepFunction) => __awaiter(void 0, void 0, void 0, function* () {
70
+ const command = new upload_1.UploadCommand();
71
+ const context = createMockContext();
72
+ command.context = context;
73
+ prepFunction(command);
74
+ const exitCode = yield command.execute();
75
+ return { exitCode, context };
76
+ });
77
+ describe('parameter validation', () => {
78
+ test('fails if no service name given', () => __awaiter(void 0, void 0, void 0, function* () {
79
+ // tslint:disable-next-line:no-empty
80
+ const { exitCode, context } = yield runCommand((_) => { });
81
+ const errorOutput = context.stderr.toString();
82
+ expect(exitCode).not.toBe(0);
83
+ expect(errorOutput).toContain('Error');
84
+ expect(errorOutput).toContain('"service-name" is required');
85
+ }));
86
+ test('requires valid pubspec', () => __awaiter(void 0, void 0, void 0, function* () {
87
+ const { exitCode, context } = yield runCommand((cmd) => {
88
+ cmd['serviceName'] = 'fake.service';
89
+ });
90
+ const errorOutput = context.stderr.toString();
91
+ expect(exitCode).not.toBe(0);
92
+ expect(errorOutput).toBe(renderer_1.renderMissingPubspecError('./pubspec.yaml'));
93
+ }));
94
+ test('version bypasses pubspec check', () => __awaiter(void 0, void 0, void 0, function* () {
95
+ const { exitCode, context } = yield runCommand((cmd) => {
96
+ cmd['serviceName'] = 'fake.service';
97
+ cmd['version'] = '1.0.0+114';
98
+ });
99
+ const errorOutput = context.stderr.toString();
100
+ expect(exitCode).toBe(0);
101
+ expect(errorOutput).toBe('');
102
+ }));
103
+ });
104
+ describe('getFlutterSymbolFiles', () => {
105
+ test('should read all symbol files', () => __awaiter(void 0, void 0, void 0, function* () {
106
+ const command = new upload_1.UploadCommand();
107
+ const searchDir = `${fixtureDir}/dart-symbols`;
108
+ const files = command['getFlutterSymbolFiles'](searchDir);
109
+ expect(files).toEqual([
110
+ `${searchDir}/app.android-arm.symbols`,
111
+ `${searchDir}/app.android-arm64.symbols`,
112
+ `${searchDir}/app.android-x64.symbols`,
113
+ `${searchDir}/app.ios-arm64.symbols`,
114
+ ]);
115
+ }));
116
+ });
117
+ describe('parsePubspec', () => {
118
+ test('writes error on missing pubspec', () => __awaiter(void 0, void 0, void 0, function* () {
119
+ const context = createMockContext();
120
+ const command = new upload_1.UploadCommand();
121
+ command.context = context;
122
+ const exitCode = yield command['parsePubspecVersion']('./pubspec.yaml');
123
+ const errorOutput = context.stderr.toString();
124
+ expect(exitCode).toBe(1);
125
+ expect(errorOutput).toBe(renderer_1.renderMissingPubspecError('./pubspec.yaml'));
126
+ }));
127
+ test('writes error on invalid pubspec', () => __awaiter(void 0, void 0, void 0, function* () {
128
+ const context = createMockContext();
129
+ const command = new upload_1.UploadCommand();
130
+ command.context = context;
131
+ const exitCode = yield command['parsePubspecVersion'](`${fixtureDir}/pubspecs/invalidPubspec.yaml`);
132
+ const errorOutput = context.stderr.toString();
133
+ expect(exitCode).toBe(1);
134
+ expect(errorOutput).toBe(renderer_1.renderInvalidPubspecError(`${fixtureDir}/pubspecs/invalidPubspec.yaml`));
135
+ }));
136
+ test('writes error on missing version in pubspec', () => __awaiter(void 0, void 0, void 0, function* () {
137
+ const context = createMockContext();
138
+ const command = new upload_1.UploadCommand();
139
+ command.context = context;
140
+ const exitCode = yield command['parsePubspecVersion'](`${fixtureDir}/pubspecs/missingVersionPubspec.yaml`);
141
+ const errorOutput = context.stderr.toString();
142
+ expect(exitCode).toBe(1);
143
+ expect(errorOutput).toBe(renderer_1.renderPubspecMissingVersionError(`${fixtureDir}/pubspecs/missingVersionPubspec.yaml`));
144
+ }));
145
+ test('populates version from valid pubspec', () => __awaiter(void 0, void 0, void 0, function* () {
146
+ const context = createMockContext();
147
+ const command = new upload_1.UploadCommand();
148
+ command.context = context;
149
+ const exitCode = yield command['parsePubspecVersion'](`${fixtureDir}/pubspecs/validPubspec.yaml`);
150
+ const errorOutput = context.stderr.toString();
151
+ expect(exitCode).toBe(0);
152
+ expect(errorOutput).toBe('');
153
+ expect(command['version']).toBe('1.2.3');
154
+ }));
155
+ test('strips pre-release from pre-release pubspec and shows warning', () => __awaiter(void 0, void 0, void 0, function* () {
156
+ const context = createMockContext();
157
+ const command = new upload_1.UploadCommand();
158
+ command.context = context;
159
+ const exitCode = yield command['parsePubspecVersion'](`${fixtureDir}/pubspecs/prereleasePubspec.yaml`);
160
+ const errorOutput = context.stderr.toString();
161
+ expect(exitCode).toBe(0);
162
+ expect(errorOutput).toBe(renderer_1.renderVersionBuildNumberWarning(`${fixtureDir}/pubspecs/prereleasePubspec.yaml`));
163
+ expect(command['version']).toBe('1.2.3');
164
+ }));
165
+ test('strips build from build pubspec and shows warning', () => __awaiter(void 0, void 0, void 0, function* () {
166
+ const context = createMockContext();
167
+ const command = new upload_1.UploadCommand();
168
+ command.context = context;
169
+ const exitCode = yield command['parsePubspecVersion'](`${fixtureDir}/pubspecs/buildPubspec.yaml`);
170
+ const errorOutput = context.stderr.toString();
171
+ expect(exitCode).toBe(0);
172
+ expect(errorOutput).toBe(renderer_1.renderVersionBuildNumberWarning(`${fixtureDir}/pubspecs/buildPubspec.yaml`));
173
+ expect(command['version']).toBe('1.2.3');
174
+ }));
175
+ });
176
+ describe('dsyms upload', () => {
177
+ test('calls dsyms sub-command with proper default parameters', () => __awaiter(void 0, void 0, void 0, function* () {
178
+ const { exitCode } = yield runCommand((cmd) => {
179
+ cmd['serviceName'] = 'fake.service';
180
+ cmd['version'] = '1.0.0';
181
+ cmd['iosDsyms'] = true;
182
+ });
183
+ expect(exitCode).toBe(0);
184
+ expect(utils_1.performSubCommand).toHaveBeenCalledWith(dsyms.UploadCommand, ['dsyms', 'upload', './build/ios/archive/Runner.xcarchive/dSYMs'], expect.anything());
185
+ }));
186
+ test('calls dsyms sub-command with dry-run on dry-run', () => __awaiter(void 0, void 0, void 0, function* () {
187
+ const { exitCode } = yield runCommand((cmd) => {
188
+ cmd['serviceName'] = 'fake.service';
189
+ cmd['version'] = '1.0.0';
190
+ cmd['iosDsyms'] = true;
191
+ cmd['dryRun'] = true;
192
+ });
193
+ expect(exitCode).toBe(0);
194
+ expect(utils_1.performSubCommand).toHaveBeenCalledWith(dsyms.UploadCommand, ['dsyms', 'upload', './build/ios/archive/Runner.xcarchive/dSYMs', '--dry-run'], expect.anything());
195
+ }));
196
+ test('calls dsyms sub-command passing through dsymLocation', () => __awaiter(void 0, void 0, void 0, function* () {
197
+ const { exitCode, context } = yield runCommand((cmd) => {
198
+ cmd['serviceName'] = 'fake.service';
199
+ cmd['version'] = '1.0.0';
200
+ cmd['iosDsymsLocation'] = './dsym-location';
201
+ });
202
+ const errorOutput = context.stderr.toString();
203
+ expect(exitCode).toBe(0);
204
+ expect(utils_1.performSubCommand).toHaveBeenCalledWith(dsyms.UploadCommand, ['dsyms', 'upload', './dsym-location'], expect.anything());
205
+ expect(errorOutput).toBe('');
206
+ }));
207
+ });
208
+ describe('android mapping upload', () => {
209
+ const addDefaultCommandParameters = (command) => {
210
+ command['serviceName'] = 'fake.service';
211
+ command['version'] = '1.0.0';
212
+ };
213
+ const mockGitRepoParameters = (command) => {
214
+ command['gitData'] = {
215
+ hash: 'fake-git-hash',
216
+ remote: 'fake-git-remote',
217
+ trackedFilesMatcher: new format_git_sourcemaps_data_1.TrackedFilesMatcher([
218
+ './lib/main.dart',
219
+ './android/app/src/main/kotlin/com/datadoghq/example/flutter/MainActivity.kt',
220
+ './ios/Runner/AppDelegate.swift',
221
+ ]),
222
+ };
223
+ };
224
+ test('errors if mapping file does not exist', () => __awaiter(void 0, void 0, void 0, function* () {
225
+ const { exitCode, context } = yield runCommand((cmd) => {
226
+ addDefaultCommandParameters(cmd);
227
+ cmd['androidMappingLocation'] = `${fixtureDir}/android/missing.txt`;
228
+ });
229
+ const errorOutput = context.stderr.toString();
230
+ expect(exitCode).not.toBe(0);
231
+ expect(errorOutput).toBe(renderer_1.renderMissingAndroidMappingFile(`${fixtureDir}/android/missing.txt`));
232
+ }));
233
+ test('errors if default mapping file does not exist', () => __awaiter(void 0, void 0, void 0, function* () {
234
+ const { exitCode, context } = yield runCommand((cmd) => {
235
+ addDefaultCommandParameters(cmd);
236
+ cmd['androidMapping'] = true;
237
+ });
238
+ const errorOutput = context.stderr.toString();
239
+ expect(exitCode).not.toBe(0);
240
+ expect(errorOutput).toBe(renderer_1.renderMissingAndroidMappingFile('./build/app/outputs/mapping/release/mapping.txt'));
241
+ }));
242
+ test('creates correct metadata payload', () => {
243
+ const command = new upload_1.UploadCommand();
244
+ addDefaultCommandParameters(command);
245
+ mockGitRepoParameters(command);
246
+ const metadata = command['getAndroidMetadata']();
247
+ expect(metadata).toEqual({
248
+ cli_version: cliVersion,
249
+ git_commit_sha: 'fake-git-hash',
250
+ git_repository_url: 'fake-git-remote',
251
+ service: 'fake.service',
252
+ type: 'jvm_mapping_file',
253
+ variant: 'release',
254
+ version: '1.0.0',
255
+ });
256
+ });
257
+ test('build in version is sanitized in metadata payload', () => {
258
+ const command = new upload_1.UploadCommand();
259
+ addDefaultCommandParameters(command);
260
+ mockGitRepoParameters(command);
261
+ command['version'] = '1.2.4+987';
262
+ const metadata = command['getAndroidMetadata']();
263
+ expect(metadata).toEqual({
264
+ cli_version: cliVersion,
265
+ git_commit_sha: 'fake-git-hash',
266
+ git_repository_url: 'fake-git-remote',
267
+ service: 'fake.service',
268
+ type: 'jvm_mapping_file',
269
+ variant: 'release',
270
+ version: '1.2.4-987',
271
+ });
272
+ });
273
+ test('uploads correct multipart payload without repository', () => __awaiter(void 0, void 0, void 0, function* () {
274
+ var _a;
275
+ ;
276
+ helpers_1.uploadMultipartHelper.mockResolvedValueOnce('');
277
+ const { exitCode } = yield runCommand((cmd) => {
278
+ addDefaultCommandParameters(cmd);
279
+ cmd['androidMappingLocation'] = `${fixtureDir}/android/fake-mapping.txt`;
280
+ });
281
+ const expectedMetadata = {
282
+ cli_version: cliVersion,
283
+ service: 'fake.service',
284
+ type: 'jvm_mapping_file',
285
+ variant: 'release',
286
+ version: '1.0.0',
287
+ };
288
+ expect(helpers_1.uploadMultipartHelper).toHaveBeenCalled();
289
+ const payload = helpers_1.uploadMultipartHelper.mock.calls[0][1];
290
+ expect(JSON.parse((_a = payload.content.get('event')) === null || _a === void 0 ? void 0 : _a.value)).toStrictEqual(expectedMetadata);
291
+ const mappingFileItem = payload.content.get('jvm_mapping_file');
292
+ expect(mappingFileItem).toBeTruthy();
293
+ expect((mappingFileItem === null || mappingFileItem === void 0 ? void 0 : mappingFileItem.options).filename).toBe('jvm_mapping');
294
+ expect(mappingFileItem === null || mappingFileItem === void 0 ? void 0 : mappingFileItem.value).toBeInstanceOf(fs_1.ReadStream);
295
+ expect((mappingFileItem === null || mappingFileItem === void 0 ? void 0 : mappingFileItem.value).path).toBe(`${fixtureDir}/android/fake-mapping.txt`);
296
+ expect(exitCode).toBe(0);
297
+ }));
298
+ test('uploads correct multipart payload with repository', () => __awaiter(void 0, void 0, void 0, function* () {
299
+ var _b;
300
+ ;
301
+ helpers_1.uploadMultipartHelper.mockResolvedValueOnce('');
302
+ format_git_sourcemaps_data_2.getRepositoryData.mockResolvedValueOnce({
303
+ hash: 'fake-git-hash',
304
+ remote: 'fake-git-remote',
305
+ trackedFilesMatcher: new format_git_sourcemaps_data_1.TrackedFilesMatcher([
306
+ './lib/main.dart',
307
+ './android/app/src/main/kotlin/com/datadoghq/example/flutter/MainActivity.kt',
308
+ './ios/Runner/AppDelegate.swift',
309
+ ]),
310
+ });
311
+ const { exitCode } = yield runCommand((cmd) => {
312
+ addDefaultCommandParameters(cmd);
313
+ cmd['androidMappingLocation'] = `${fixtureDir}/android/fake-mapping.txt`;
314
+ });
315
+ const expectedMetadata = {
316
+ cli_version: cliVersion,
317
+ git_commit_sha: 'fake-git-hash',
318
+ git_repository_url: 'fake-git-remote',
319
+ service: 'fake.service',
320
+ type: 'jvm_mapping_file',
321
+ variant: 'release',
322
+ version: '1.0.0',
323
+ };
324
+ const expectedRepository = {
325
+ data: [
326
+ {
327
+ files: [
328
+ './lib/main.dart',
329
+ './android/app/src/main/kotlin/com/datadoghq/example/flutter/MainActivity.kt',
330
+ './ios/Runner/AppDelegate.swift',
331
+ ],
332
+ hash: 'fake-git-hash',
333
+ repository_url: 'fake-git-remote',
334
+ },
335
+ ],
336
+ version: 1,
337
+ };
338
+ expect(helpers_1.uploadMultipartHelper).toHaveBeenCalled();
339
+ const payload = helpers_1.uploadMultipartHelper.mock.calls[0][1];
340
+ expect(JSON.parse((_b = payload.content.get('event')) === null || _b === void 0 ? void 0 : _b.value)).toStrictEqual(expectedMetadata);
341
+ const repoValue = payload.content.get('repository');
342
+ expect(JSON.parse(repoValue === null || repoValue === void 0 ? void 0 : repoValue.value)).toStrictEqual(expectedRepository);
343
+ expect((repoValue === null || repoValue === void 0 ? void 0 : repoValue.options).filename).toBe('repository');
344
+ expect((repoValue === null || repoValue === void 0 ? void 0 : repoValue.options).contentType).toBe('application/json');
345
+ expect(exitCode).toBe(0);
346
+ }));
347
+ test('skips upload on dry run', () => __awaiter(void 0, void 0, void 0, function* () {
348
+ ;
349
+ helpers_1.uploadMultipartHelper.mockResolvedValueOnce('');
350
+ const { exitCode } = yield runCommand((cmd) => {
351
+ addDefaultCommandParameters(cmd);
352
+ cmd['androidMappingLocation'] = `${fixtureDir}/android/fake-mapping.txt`;
353
+ cmd['dryRun'] = true;
354
+ });
355
+ expect(helpers_1.uploadMultipartHelper).not.toHaveBeenCalled();
356
+ expect(exitCode).toBe(0);
357
+ }));
358
+ });
359
+ describe('flutter symbol upload', () => {
360
+ const addDefaultCommandParameters = (command) => {
361
+ command['serviceName'] = 'fake.service';
362
+ command['version'] = '1.0.0';
363
+ };
364
+ const mockGitRepoParameters = (command) => {
365
+ command['gitData'] = {
366
+ hash: 'fake-git-hash',
367
+ remote: 'fake-git-remote',
368
+ trackedFilesMatcher: new format_git_sourcemaps_data_1.TrackedFilesMatcher([
369
+ './lib/main.dart',
370
+ './android/app/src/main/kotlin/com/datadoghq/example/flutter/MainActivity.kt',
371
+ './ios/Runner/AppDelegate.swift',
372
+ ]),
373
+ };
374
+ };
375
+ test('errors if symbol directory is missing', () => __awaiter(void 0, void 0, void 0, function* () {
376
+ const { exitCode, context } = yield runCommand((cmd) => {
377
+ addDefaultCommandParameters(cmd);
378
+ cmd['dartSymbolsLocation'] = `${fixtureDir}/missing-dir`;
379
+ });
380
+ const errorOutput = context.stderr.toString();
381
+ expect(exitCode).not.toBe(0);
382
+ expect(errorOutput).toBe(renderer_1.renderMissingDartSymbolsDir(`${fixtureDir}/missing-dir`));
383
+ }));
384
+ test('errors if symbol directory is a file', () => __awaiter(void 0, void 0, void 0, function* () {
385
+ const { exitCode, context } = yield runCommand((cmd) => {
386
+ addDefaultCommandParameters(cmd);
387
+ cmd['dartSymbolsLocation'] = `${fixtureDir}/dart-symbols/app.android-arm.symbols`;
388
+ });
389
+ const errorOutput = context.stderr.toString();
390
+ expect(exitCode).not.toBe(0);
391
+ expect(errorOutput).toBe(renderer_1.renderInvalidSymbolsDir(`${fixtureDir}/dart-symbols/app.android-arm.symbols`));
392
+ }));
393
+ test('creates correct metadata payloads', () => {
394
+ const command = new upload_1.UploadCommand();
395
+ addDefaultCommandParameters(command);
396
+ mockGitRepoParameters(command);
397
+ const metadata = command['getFlutterMetadata']('ios', 'arm64');
398
+ expect(metadata).toEqual({
399
+ arch: 'arm64',
400
+ cli_version: cliVersion,
401
+ git_commit_sha: 'fake-git-hash',
402
+ git_repository_url: 'fake-git-remote',
403
+ platform: 'ios',
404
+ service: 'fake.service',
405
+ type: 'flutter_symbol_file',
406
+ variant: 'release',
407
+ version: '1.0.0',
408
+ });
409
+ });
410
+ test('sanitizes build in version number payload', () => {
411
+ const command = new upload_1.UploadCommand();
412
+ addDefaultCommandParameters(command);
413
+ mockGitRepoParameters(command);
414
+ command['version'] = '1.2.4+567';
415
+ const metadata = command['getFlutterMetadata']('ios', 'arm64');
416
+ expect(metadata).toEqual({
417
+ arch: 'arm64',
418
+ cli_version: cliVersion,
419
+ git_commit_sha: 'fake-git-hash',
420
+ git_repository_url: 'fake-git-remote',
421
+ platform: 'ios',
422
+ service: 'fake.service',
423
+ type: 'flutter_symbol_file',
424
+ variant: 'release',
425
+ version: '1.2.4-567',
426
+ });
427
+ });
428
+ test('parses symbol filenames into platform / arch', () => {
429
+ const info1 = helpers_1.getArchInfoFromFilename('app.android-arm.symbols');
430
+ const info2 = helpers_1.getArchInfoFromFilename('./a/directory/app.android-x64.symbols');
431
+ const info3 = helpers_1.getArchInfoFromFilename('./a/directory/app.confusing-.ios-arm64.symbols');
432
+ const info4 = helpers_1.getArchInfoFromFilename('app.bad.symbols');
433
+ expect(info1).toEqual({ platform: 'android', arch: 'arm' });
434
+ expect(info2).toEqual({ platform: 'android', arch: 'x64' });
435
+ expect(info3).toEqual({ platform: 'ios', arch: 'arm64' });
436
+ expect(info4).toBeUndefined();
437
+ });
438
+ const getExpectedMetadata = (platform, arch, gitCommitSha, gitRespositoryUrl) => (Object.assign(Object.assign(Object.assign({ arch, cli_version: cliVersion }, (gitCommitSha && { git_commit_sha: gitCommitSha })), (gitRespositoryUrl && { git_repository_url: gitRespositoryUrl })), { platform, service: 'fake.service', type: 'flutter_symbol_file', variant: 'release', version: '1.0.0' }));
439
+ test('uploads correct multipart payloads without repository', () => __awaiter(void 0, void 0, void 0, function* () {
440
+ ;
441
+ helpers_1.uploadMultipartHelper.mockResolvedValue('');
442
+ const { exitCode } = yield runCommand((cmd) => {
443
+ addDefaultCommandParameters(cmd);
444
+ cmd['dartSymbolsLocation'] = `${fixtureDir}/dart-symbols`;
445
+ });
446
+ const expectedMetadatas = [
447
+ getExpectedMetadata('android', 'arm'),
448
+ getExpectedMetadata('android', 'arm64'),
449
+ getExpectedMetadata('android', 'x64'),
450
+ getExpectedMetadata('ios', 'arm64'),
451
+ ];
452
+ expect(helpers_1.uploadMultipartHelper).toBeCalledTimes(4);
453
+ expectedMetadatas.forEach((expectedMetadata) => {
454
+ const mockCalls = helpers_1.uploadMultipartHelper.mock.calls;
455
+ const index = mockCalls.findIndex((call) => {
456
+ var _a;
457
+ const checkPayload = call[1];
458
+ const eventPayload = (_a = checkPayload.content.get('event')) === null || _a === void 0 ? void 0 : _a.value;
459
+ return eventPayload === JSON.stringify(expectedMetadata);
460
+ });
461
+ // Ensure the metadata matches at least one call
462
+ expect(index).not.toBe(-1);
463
+ const payload = mockCalls[index][1];
464
+ const mappingFileItem = payload.content.get('flutter_symbol_file');
465
+ expect(mappingFileItem).toBeTruthy();
466
+ expect((mappingFileItem === null || mappingFileItem === void 0 ? void 0 : mappingFileItem.options).filename).toBe('flutter_symbol_file');
467
+ expect(mappingFileItem === null || mappingFileItem === void 0 ? void 0 : mappingFileItem.value).toBeInstanceOf(fs_1.ReadStream);
468
+ const expectedPath = `${fixtureDir}/dart-symbols/app.${expectedMetadata.platform}-${expectedMetadata.arch}.symbols`;
469
+ expect((mappingFileItem === null || mappingFileItem === void 0 ? void 0 : mappingFileItem.value).path).toBe(expectedPath);
470
+ });
471
+ expect(exitCode).toBe(0);
472
+ }));
473
+ test('uploads correct multipart payloads with repository', () => __awaiter(void 0, void 0, void 0, function* () {
474
+ ;
475
+ helpers_1.uploadMultipartHelper.mockResolvedValue('');
476
+ format_git_sourcemaps_data_2.getRepositoryData.mockResolvedValueOnce({
477
+ hash: 'fake-git-hash',
478
+ remote: 'fake-git-remote',
479
+ trackedFilesMatcher: new format_git_sourcemaps_data_1.TrackedFilesMatcher([
480
+ './lib/main.dart',
481
+ './android/app/src/main/kotlin/com/datadoghq/example/flutter/MainActivity.kt',
482
+ './ios/Runner/AppDelegate.swift',
483
+ ]),
484
+ });
485
+ const { exitCode } = yield runCommand((cmd) => {
486
+ addDefaultCommandParameters(cmd);
487
+ cmd['dartSymbolsLocation'] = `${fixtureDir}/dart-symbols`;
488
+ });
489
+ const expectedMetadatas = [
490
+ getExpectedMetadata('android', 'arm', 'fake-git-hash', 'fake-git-remote'),
491
+ getExpectedMetadata('android', 'arm64', 'fake-git-hash', 'fake-git-remote'),
492
+ getExpectedMetadata('android', 'x64', 'fake-git-hash', 'fake-git-remote'),
493
+ getExpectedMetadata('ios', 'arm64', 'fake-git-hash', 'fake-git-remote'),
494
+ ];
495
+ const expectedRepository = {
496
+ data: [
497
+ {
498
+ files: [
499
+ './lib/main.dart',
500
+ './android/app/src/main/kotlin/com/datadoghq/example/flutter/MainActivity.kt',
501
+ './ios/Runner/AppDelegate.swift',
502
+ ],
503
+ hash: 'fake-git-hash',
504
+ repository_url: 'fake-git-remote',
505
+ },
506
+ ],
507
+ version: 1,
508
+ };
509
+ expect(helpers_1.uploadMultipartHelper).toBeCalledTimes(4);
510
+ expectedMetadatas.forEach((expectedMetadata) => {
511
+ const mockCalls = helpers_1.uploadMultipartHelper.mock.calls;
512
+ const index = mockCalls.findIndex((call) => {
513
+ var _a;
514
+ const checkPayload = call[1];
515
+ const eventPayload = (_a = checkPayload.content.get('event')) === null || _a === void 0 ? void 0 : _a.value;
516
+ return eventPayload === JSON.stringify(expectedMetadata);
517
+ });
518
+ // Ensure the metadata matches at least one call
519
+ expect(index).not.toBe(-1);
520
+ const payload = mockCalls[index][1];
521
+ const repoValue = payload.content.get('repository');
522
+ expect(JSON.parse(repoValue === null || repoValue === void 0 ? void 0 : repoValue.value)).toStrictEqual(expectedRepository);
523
+ expect((repoValue === null || repoValue === void 0 ? void 0 : repoValue.options).filename).toBe('repository');
524
+ expect((repoValue === null || repoValue === void 0 ? void 0 : repoValue.options).contentType).toBe('application/json');
525
+ expect(exitCode).toBe(0);
526
+ });
527
+ expect(exitCode).toBe(0);
528
+ }));
529
+ test('skips upload on dry run', () => __awaiter(void 0, void 0, void 0, function* () {
530
+ ;
531
+ helpers_1.uploadMultipartHelper.mockResolvedValueOnce('');
532
+ const { exitCode } = yield runCommand((cmd) => {
533
+ addDefaultCommandParameters(cmd);
534
+ cmd['dartSymbolsLocation'] = `${fixtureDir}/dart-symbols`;
535
+ cmd['dryRun'] = true;
536
+ });
537
+ expect(helpers_1.uploadMultipartHelper).not.toHaveBeenCalled();
538
+ expect(exitCode).toBe(0);
539
+ }));
540
+ });
541
+ });
542
+ //# sourceMappingURL=upload.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload.test.js","sourceRoot":"","sources":["../../../../src/commands/flutter-symbols/__tests__/upload.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const upload_1 = require("./upload");
4
+ module.exports = [upload_1.UploadCommand];
5
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/commands/flutter-symbols/cli.ts"],"names":[],"mappings":";;AAAA,qCAAsC;AAEtC,MAAM,CAAC,OAAO,GAAG,CAAC,sBAAa,CAAC,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { RequestBuilder } from '../../helpers/interfaces';
2
+ import { MultipartPayload, UploadOptions } from '../../helpers/upload';
3
+ export declare const getFlutterRequestBuilder: (apiKey: string, cliVersion: string, site: string) => (args: import("axios").AxiosRequestConfig) => import("axios").AxiosPromise<any>;
4
+ export declare const uploadMultipartHelper: (requestBuilder: RequestBuilder, payload: MultipartPayload, opts: UploadOptions) => Promise<import("../../helpers/upload").UploadStatus>;
5
+ export declare const getArchInfoFromFilename: (filename: string) => {
6
+ arch: string;
7
+ platform: string;
8
+ } | undefined;