@datadog/datadog-ci 2.40.1 → 2.40.3

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 (255) hide show
  1. package/dist/__tests__/cli.test.d.ts +1 -0
  2. package/dist/__tests__/cli.test.js +41 -0
  3. package/dist/__tests__/cli.test.js.map +1 -0
  4. package/dist/commands/cloud-run/__tests__/fixtures.d.ts +2 -0
  5. package/dist/commands/cloud-run/__tests__/fixtures.js +12 -0
  6. package/dist/commands/cloud-run/__tests__/fixtures.js.map +1 -0
  7. package/dist/commands/cloud-run/__tests__/flare.test.d.ts +1 -0
  8. package/dist/commands/cloud-run/__tests__/flare.test.js +557 -0
  9. package/dist/commands/cloud-run/__tests__/flare.test.js.map +1 -0
  10. package/dist/commands/deployment/__tests__/mark.test.d.ts +1 -0
  11. package/dist/commands/deployment/__tests__/mark.test.js +47 -0
  12. package/dist/commands/deployment/__tests__/mark.test.js.map +1 -0
  13. package/dist/commands/dora/__tests__/deployment.test.d.ts +1 -0
  14. package/dist/commands/dora/__tests__/deployment.test.js +201 -0
  15. package/dist/commands/dora/__tests__/deployment.test.js.map +1 -0
  16. package/dist/commands/dsyms/__tests__/upload.test.d.ts +1 -0
  17. package/dist/commands/dsyms/__tests__/upload.test.js +346 -0
  18. package/dist/commands/dsyms/__tests__/upload.test.js.map +1 -0
  19. package/dist/commands/dsyms/__tests__/utils.test.d.ts +1 -0
  20. package/dist/commands/dsyms/__tests__/utils.test.js +103 -0
  21. package/dist/commands/dsyms/__tests__/utils.test.js.map +1 -0
  22. package/dist/commands/dsyms/utils.js +4 -2
  23. package/dist/commands/dsyms/utils.js.map +1 -1
  24. package/dist/commands/elf-symbols/__tests__/elf.test.d.ts +1 -0
  25. package/dist/commands/elf-symbols/__tests__/elf.test.js +813 -0
  26. package/dist/commands/elf-symbols/__tests__/elf.test.js.map +1 -0
  27. package/dist/commands/elf-symbols/__tests__/upload.test.d.ts +1 -0
  28. package/dist/commands/elf-symbols/__tests__/upload.test.js +249 -0
  29. package/dist/commands/elf-symbols/__tests__/upload.test.js.map +1 -0
  30. package/dist/commands/flutter-symbols/__tests__/upload.test.d.ts +1 -0
  31. package/dist/commands/flutter-symbols/__tests__/upload.test.js +617 -0
  32. package/dist/commands/flutter-symbols/__tests__/upload.test.js.map +1 -0
  33. package/dist/commands/gate/__tests__/evaluate.test.d.ts +1 -0
  34. package/dist/commands/gate/__tests__/evaluate.test.js +398 -0
  35. package/dist/commands/gate/__tests__/evaluate.test.js.map +1 -0
  36. package/dist/commands/gate/__tests__/scope.test.d.ts +1 -0
  37. package/dist/commands/gate/__tests__/scope.test.js +29 -0
  38. package/dist/commands/gate/__tests__/scope.test.js.map +1 -0
  39. package/dist/commands/git-metadata/__tests__/git.test.d.ts +1 -0
  40. package/dist/commands/git-metadata/__tests__/git.test.js +132 -0
  41. package/dist/commands/git-metadata/__tests__/git.test.js.map +1 -0
  42. package/dist/commands/git-metadata/__tests__/gitdb.test.d.ts +1 -0
  43. package/dist/commands/git-metadata/__tests__/gitdb.test.js +1386 -0
  44. package/dist/commands/git-metadata/__tests__/gitdb.test.js.map +1 -0
  45. package/dist/commands/git-metadata/__tests__/library.test.d.ts +1 -0
  46. package/dist/commands/git-metadata/__tests__/library.test.js +118 -0
  47. package/dist/commands/git-metadata/__tests__/library.test.js.map +1 -0
  48. package/dist/commands/git-metadata/__tests__/upload.test.d.ts +1 -0
  49. package/dist/commands/git-metadata/__tests__/upload.test.js +52 -0
  50. package/dist/commands/git-metadata/__tests__/upload.test.js.map +1 -0
  51. package/dist/commands/junit/__tests__/id.test.d.ts +1 -0
  52. package/dist/commands/junit/__tests__/id.test.js +24 -0
  53. package/dist/commands/junit/__tests__/id.test.js.map +1 -0
  54. package/dist/commands/junit/__tests__/upload.test.d.ts +1 -0
  55. package/dist/commands/junit/__tests__/upload.test.js +495 -0
  56. package/dist/commands/junit/__tests__/upload.test.js.map +1 -0
  57. package/dist/commands/lambda/__tests__/fixtures.d.ts +51 -0
  58. package/dist/commands/lambda/__tests__/fixtures.js +146 -0
  59. package/dist/commands/lambda/__tests__/fixtures.js.map +1 -0
  60. package/dist/commands/lambda/__tests__/flare.test.d.ts +1 -0
  61. package/dist/commands/lambda/__tests__/flare.test.js +730 -0
  62. package/dist/commands/lambda/__tests__/flare.test.js.map +1 -0
  63. package/dist/commands/lambda/__tests__/functions/commons.test.d.ts +1 -0
  64. package/dist/commands/lambda/__tests__/functions/commons.test.js +791 -0
  65. package/dist/commands/lambda/__tests__/functions/commons.test.js.map +1 -0
  66. package/dist/commands/lambda/__tests__/functions/instrument.part1.test.d.ts +1 -0
  67. package/dist/commands/lambda/__tests__/functions/instrument.part1.test.js +386 -0
  68. package/dist/commands/lambda/__tests__/functions/instrument.part1.test.js.map +1 -0
  69. package/dist/commands/lambda/__tests__/functions/instrument.part2.test.d.ts +1 -0
  70. package/dist/commands/lambda/__tests__/functions/instrument.part2.test.js +721 -0
  71. package/dist/commands/lambda/__tests__/functions/instrument.part2.test.js.map +1 -0
  72. package/dist/commands/lambda/__tests__/functions/uninstrument.test.d.ts +1 -0
  73. package/dist/commands/lambda/__tests__/functions/uninstrument.test.js +513 -0
  74. package/dist/commands/lambda/__tests__/functions/uninstrument.test.js.map +1 -0
  75. package/dist/commands/lambda/__tests__/functions/versionChecker.test.d.ts +1 -0
  76. package/dist/commands/lambda/__tests__/functions/versionChecker.test.js +33 -0
  77. package/dist/commands/lambda/__tests__/functions/versionChecker.test.js.map +1 -0
  78. package/dist/commands/lambda/__tests__/instrument.test.d.ts +1 -0
  79. package/dist/commands/lambda/__tests__/instrument.test.js +1511 -0
  80. package/dist/commands/lambda/__tests__/instrument.test.js.map +1 -0
  81. package/dist/commands/lambda/__tests__/loggroup.test.d.ts +1 -0
  82. package/dist/commands/lambda/__tests__/loggroup.test.js +340 -0
  83. package/dist/commands/lambda/__tests__/loggroup.test.js.map +1 -0
  84. package/dist/commands/lambda/__tests__/prompt.test.d.ts +1 -0
  85. package/dist/commands/lambda/__tests__/prompt.test.js +206 -0
  86. package/dist/commands/lambda/__tests__/prompt.test.js.map +1 -0
  87. package/dist/commands/lambda/__tests__/tags.test.d.ts +1 -0
  88. package/dist/commands/lambda/__tests__/tags.test.js +305 -0
  89. package/dist/commands/lambda/__tests__/tags.test.js.map +1 -0
  90. package/dist/commands/lambda/__tests__/uninstrument.test.d.ts +1 -0
  91. package/dist/commands/lambda/__tests__/uninstrument.test.js +722 -0
  92. package/dist/commands/lambda/__tests__/uninstrument.test.js.map +1 -0
  93. package/dist/commands/measure/__tests__/measure.test.d.ts +1 -0
  94. package/dist/commands/measure/__tests__/measure.test.js +110 -0
  95. package/dist/commands/measure/__tests__/measure.test.js.map +1 -0
  96. package/dist/commands/react-native/__tests__/codepush.test.d.ts +1 -0
  97. package/dist/commands/react-native/__tests__/codepush.test.js +161 -0
  98. package/dist/commands/react-native/__tests__/codepush.test.js.map +1 -0
  99. package/dist/commands/react-native/__tests__/interfaces.test.d.ts +1 -0
  100. package/dist/commands/react-native/__tests__/interfaces.test.js +33 -0
  101. package/dist/commands/react-native/__tests__/interfaces.test.js.map +1 -0
  102. package/dist/commands/react-native/__tests__/upload.test.d.ts +1 -0
  103. package/dist/commands/react-native/__tests__/upload.test.js +238 -0
  104. package/dist/commands/react-native/__tests__/upload.test.js.map +1 -0
  105. package/dist/commands/react-native/__tests__/utils.test.d.ts +1 -0
  106. package/dist/commands/react-native/__tests__/utils.test.js +27 -0
  107. package/dist/commands/react-native/__tests__/utils.test.js.map +1 -0
  108. package/dist/commands/react-native/__tests__/xcode.test.d.ts +1 -0
  109. package/dist/commands/react-native/__tests__/xcode.test.js +465 -0
  110. package/dist/commands/react-native/__tests__/xcode.test.js.map +1 -0
  111. package/dist/commands/sarif/__tests__/upload.test.d.ts +1 -0
  112. package/dist/commands/sarif/__tests__/upload.test.js +228 -0
  113. package/dist/commands/sarif/__tests__/upload.test.js.map +1 -0
  114. package/dist/commands/sbom/__tests__/payload.test.d.ts +1 -0
  115. package/dist/commands/sbom/__tests__/payload.test.js +262 -0
  116. package/dist/commands/sbom/__tests__/payload.test.js.map +1 -0
  117. package/dist/commands/sbom/__tests__/validation.test.d.ts +1 -0
  118. package/dist/commands/sbom/__tests__/validation.test.js +41 -0
  119. package/dist/commands/sbom/__tests__/validation.test.js.map +1 -0
  120. package/dist/commands/sourcemaps/__tests__/upload.test.d.ts +1 -0
  121. package/dist/commands/sourcemaps/__tests__/upload.test.js +270 -0
  122. package/dist/commands/sourcemaps/__tests__/upload.test.js.map +1 -0
  123. package/dist/commands/sourcemaps/__tests__/utils.test.d.ts +1 -0
  124. package/dist/commands/sourcemaps/__tests__/utils.test.js +31 -0
  125. package/dist/commands/sourcemaps/__tests__/utils.test.js.map +1 -0
  126. package/dist/commands/stepfunctions/__tests__/awsCommands.test.d.ts +1 -0
  127. package/dist/commands/stepfunctions/__tests__/awsCommands.test.js +192 -0
  128. package/dist/commands/stepfunctions/__tests__/awsCommands.test.js.map +1 -0
  129. package/dist/commands/stepfunctions/__tests__/fixtures/aws-resources.d.ts +6 -0
  130. package/dist/commands/stepfunctions/__tests__/fixtures/aws-resources.js +45 -0
  131. package/dist/commands/stepfunctions/__tests__/fixtures/aws-resources.js.map +1 -0
  132. package/dist/commands/stepfunctions/__tests__/fixtures/cli.d.ts +5 -0
  133. package/dist/commands/stepfunctions/__tests__/fixtures/cli.js +19 -0
  134. package/dist/commands/stepfunctions/__tests__/fixtures/cli.js.map +1 -0
  135. package/dist/commands/stepfunctions/__tests__/helpers.test.d.ts +1 -0
  136. package/dist/commands/stepfunctions/__tests__/helpers.test.js +205 -0
  137. package/dist/commands/stepfunctions/__tests__/helpers.test.js.map +1 -0
  138. package/dist/commands/stepfunctions/__tests__/instrument.test.d.ts +1 -0
  139. package/dist/commands/stepfunctions/__tests__/instrument.test.js +431 -0
  140. package/dist/commands/stepfunctions/__tests__/instrument.test.js.map +1 -0
  141. package/dist/commands/stepfunctions/__tests__/uninstrument.test.d.ts +1 -0
  142. package/dist/commands/stepfunctions/__tests__/uninstrument.test.js +166 -0
  143. package/dist/commands/stepfunctions/__tests__/uninstrument.test.js.map +1 -0
  144. package/dist/commands/synthetics/__tests__/api.test.d.ts +1 -0
  145. package/dist/commands/synthetics/__tests__/api.test.js +422 -0
  146. package/dist/commands/synthetics/__tests__/api.test.js.map +1 -0
  147. package/dist/commands/synthetics/__tests__/cli.test.d.ts +1 -0
  148. package/dist/commands/synthetics/__tests__/cli.test.js +1325 -0
  149. package/dist/commands/synthetics/__tests__/cli.test.js.map +1 -0
  150. package/dist/commands/synthetics/__tests__/fixtures.d.ts +149 -0
  151. package/dist/commands/synthetics/__tests__/fixtures.js +507 -0
  152. package/dist/commands/synthetics/__tests__/fixtures.js.map +1 -0
  153. package/dist/commands/synthetics/__tests__/mobile.test.d.ts +1 -0
  154. package/dist/commands/synthetics/__tests__/mobile.test.js +376 -0
  155. package/dist/commands/synthetics/__tests__/mobile.test.js.map +1 -0
  156. package/dist/commands/synthetics/__tests__/reporters/default.test.d.ts +1 -0
  157. package/dist/commands/synthetics/__tests__/reporters/default.test.js +354 -0
  158. package/dist/commands/synthetics/__tests__/reporters/default.test.js.map +1 -0
  159. package/dist/commands/synthetics/__tests__/reporters/junit.test.d.ts +1 -0
  160. package/dist/commands/synthetics/__tests__/reporters/junit.test.js +353 -0
  161. package/dist/commands/synthetics/__tests__/reporters/junit.test.js.map +1 -0
  162. package/dist/commands/synthetics/__tests__/reporters/mobile/app-upload.test.d.ts +1 -0
  163. package/dist/commands/synthetics/__tests__/reporters/mobile/app-upload.test.js +232 -0
  164. package/dist/commands/synthetics/__tests__/reporters/mobile/app-upload.test.js.map +1 -0
  165. package/dist/commands/synthetics/__tests__/run-tests-lib.test.d.ts +1 -0
  166. package/dist/commands/synthetics/__tests__/run-tests-lib.test.js +735 -0
  167. package/dist/commands/synthetics/__tests__/run-tests-lib.test.js.map +1 -0
  168. package/dist/commands/synthetics/__tests__/test.test.d.ts +1 -0
  169. package/dist/commands/synthetics/__tests__/test.test.js +33 -0
  170. package/dist/commands/synthetics/__tests__/test.test.js.map +1 -0
  171. package/dist/commands/synthetics/__tests__/tunnel/crypto.test.d.ts +1 -0
  172. package/dist/commands/synthetics/__tests__/tunnel/crypto.test.js +21 -0
  173. package/dist/commands/synthetics/__tests__/tunnel/crypto.test.js.map +1 -0
  174. package/dist/commands/synthetics/__tests__/tunnel/tunnel.test.d.ts +1 -0
  175. package/dist/commands/synthetics/__tests__/tunnel/tunnel.test.js +80 -0
  176. package/dist/commands/synthetics/__tests__/tunnel/tunnel.test.js.map +1 -0
  177. package/dist/commands/synthetics/__tests__/tunnel/websocket.test.d.ts +1 -0
  178. package/dist/commands/synthetics/__tests__/tunnel/websocket.test.js +109 -0
  179. package/dist/commands/synthetics/__tests__/tunnel/websocket.test.js.map +1 -0
  180. package/dist/commands/synthetics/__tests__/utils/internal.test.d.ts +1 -0
  181. package/dist/commands/synthetics/__tests__/utils/internal.test.js +186 -0
  182. package/dist/commands/synthetics/__tests__/utils/internal.test.js.map +1 -0
  183. package/dist/commands/synthetics/__tests__/utils/public.test.d.ts +1 -0
  184. package/dist/commands/synthetics/__tests__/utils/public.test.js +1526 -0
  185. package/dist/commands/synthetics/__tests__/utils/public.test.js.map +1 -0
  186. package/dist/commands/synthetics/api.d.ts +1 -1
  187. package/dist/commands/synthetics/api.js +10 -5
  188. package/dist/commands/synthetics/api.js.map +1 -1
  189. package/dist/commands/synthetics/run-tests-command.d.ts +1 -0
  190. package/dist/commands/synthetics/run-tests-command.js +3 -2
  191. package/dist/commands/synthetics/run-tests-command.js.map +1 -1
  192. package/dist/commands/synthetics/run-tests-lib.js +0 -4
  193. package/dist/commands/synthetics/run-tests-lib.js.map +1 -1
  194. package/dist/commands/synthetics/test.js +9 -1
  195. package/dist/commands/synthetics/test.js.map +1 -1
  196. package/dist/commands/synthetics/utils/public.js +1 -1
  197. package/dist/commands/synthetics/utils/public.js.map +1 -1
  198. package/dist/commands/tag/__tests__/tag.test.d.ts +1 -0
  199. package/dist/commands/tag/__tests__/tag.test.js +75 -0
  200. package/dist/commands/tag/__tests__/tag.test.js.map +1 -0
  201. package/dist/commands/trace/__tests__/trace.test.d.ts +1 -0
  202. package/dist/commands/trace/__tests__/trace.test.js +145 -0
  203. package/dist/commands/trace/__tests__/trace.test.js.map +1 -0
  204. package/dist/commands/unity-symbols/__tests__/upload.test.d.ts +1 -0
  205. package/dist/commands/unity-symbols/__tests__/upload.test.js +369 -0
  206. package/dist/commands/unity-symbols/__tests__/upload.test.js.map +1 -0
  207. package/dist/helpers/__tests__/app.test.d.ts +1 -0
  208. package/dist/helpers/__tests__/app.test.js +31 -0
  209. package/dist/helpers/__tests__/app.test.js.map +1 -0
  210. package/dist/helpers/__tests__/ci.test.d.ts +1 -0
  211. package/dist/helpers/__tests__/ci.test.js +252 -0
  212. package/dist/helpers/__tests__/ci.test.js.map +1 -0
  213. package/dist/helpers/__tests__/fixtures.d.ts +33 -0
  214. package/dist/helpers/__tests__/fixtures.js +71 -0
  215. package/dist/helpers/__tests__/fixtures.js.map +1 -0
  216. package/dist/helpers/__tests__/flare.test.d.ts +1 -0
  217. package/dist/helpers/__tests__/flare.test.js +226 -0
  218. package/dist/helpers/__tests__/flare.test.js.map +1 -0
  219. package/dist/helpers/__tests__/fs.test.d.ts +1 -0
  220. package/dist/helpers/__tests__/fs.test.js +189 -0
  221. package/dist/helpers/__tests__/fs.test.js.map +1 -0
  222. package/dist/helpers/__tests__/plist.test.d.ts +1 -0
  223. package/dist/helpers/__tests__/plist.test.js +43 -0
  224. package/dist/helpers/__tests__/plist.test.js.map +1 -0
  225. package/dist/helpers/__tests__/prompt.test.d.ts +1 -0
  226. package/dist/helpers/__tests__/prompt.test.js +71 -0
  227. package/dist/helpers/__tests__/prompt.test.js.map +1 -0
  228. package/dist/helpers/__tests__/retry.test.d.ts +1 -0
  229. package/dist/helpers/__tests__/retry.test.js +99 -0
  230. package/dist/helpers/__tests__/retry.test.js.map +1 -0
  231. package/dist/helpers/__tests__/tags.test.d.ts +1 -0
  232. package/dist/helpers/__tests__/tags.test.js +71 -0
  233. package/dist/helpers/__tests__/tags.test.js.map +1 -0
  234. package/dist/helpers/__tests__/upload.test.d.ts +1 -0
  235. package/dist/helpers/__tests__/upload.test.js +231 -0
  236. package/dist/helpers/__tests__/upload.test.js.map +1 -0
  237. package/dist/helpers/__tests__/user-provided-git.test.d.ts +1 -0
  238. package/dist/helpers/__tests__/user-provided-git.test.js +119 -0
  239. package/dist/helpers/__tests__/user-provided-git.test.js.map +1 -0
  240. package/dist/helpers/__tests__/utils.test.d.ts +1 -0
  241. package/dist/helpers/__tests__/utils.test.js +429 -0
  242. package/dist/helpers/__tests__/utils.test.js.map +1 -0
  243. package/dist/helpers/__tests__/validation.test.d.ts +1 -0
  244. package/dist/helpers/__tests__/validation.test.js +25 -0
  245. package/dist/helpers/__tests__/validation.test.js.map +1 -0
  246. package/dist/helpers/git/__tests__/format-git-sourcemaps-data.test.d.ts +1 -0
  247. package/dist/helpers/git/__tests__/format-git-sourcemaps-data.test.js +103 -0
  248. package/dist/helpers/git/__tests__/format-git-sourcemaps-data.test.js.map +1 -0
  249. package/dist/helpers/git/__tests__/format-git-span-data.test.d.ts +1 -0
  250. package/dist/helpers/git/__tests__/format-git-span-data.test.js +121 -0
  251. package/dist/helpers/git/__tests__/format-git-span-data.test.js.map +1 -0
  252. package/dist/helpers/git/__tests__/get-git-data.test.d.ts +1 -0
  253. package/dist/helpers/git/__tests__/get-git-data.test.js +72 -0
  254. package/dist/helpers/git/__tests__/get-git-data.test.js.map +1 -0
  255. package/package.json +5 -7
@@ -0,0 +1,617 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
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 __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ const os_1 = __importDefault(require("os"));
39
+ const fixtures_1 = require("../../../helpers/__tests__/fixtures");
40
+ const format_git_sourcemaps_data_1 = require("../../../helpers/git/format-git-sourcemaps-data");
41
+ const utils_1 = require("../../../helpers/utils");
42
+ const version_1 = require("../../../helpers/version");
43
+ const dsyms = __importStar(require("../../dsyms/upload"));
44
+ const sourcemaps = __importStar(require("../../sourcemaps/upload"));
45
+ const helpers_1 = require("../helpers");
46
+ const renderer_1 = require("../renderer");
47
+ const upload_1 = require("../upload");
48
+ jest.mock('../../../helpers/utils', () => (Object.assign(Object.assign({}, jest.requireActual('../../../helpers/utils')), { performSubCommand: jest.fn() })));
49
+ jest.mock('../helpers', () => (Object.assign(Object.assign({}, jest.requireActual('../helpers')), { uploadMultipartHelper: jest.fn() })));
50
+ jest.mock('../../../helpers/git/format-git-sourcemaps-data', () => (Object.assign(Object.assign({}, jest.requireActual('../../../helpers/git/format-git-sourcemaps-data')), { getRepositoryData: jest.fn() })));
51
+ const cliVersion = version_1.version;
52
+ const fixtureDir = './src/commands/flutter-symbols/__tests__/fixtures';
53
+ describe('flutter-symbol upload', () => {
54
+ const runCommand = (prepFunction) => __awaiter(void 0, void 0, void 0, function* () {
55
+ const command = (0, fixtures_1.createCommand)(upload_1.UploadCommand);
56
+ prepFunction(command);
57
+ const exitCode = yield command.execute();
58
+ return { exitCode, context: command.context };
59
+ });
60
+ describe('parameter validation', () => {
61
+ test('fails if no service name given', () => __awaiter(void 0, void 0, void 0, function* () {
62
+ const { exitCode, context } = yield runCommand((_) => { });
63
+ const errorOutput = context.stderr.toString();
64
+ expect(exitCode).not.toBe(0);
65
+ expect(errorOutput).toContain('Error');
66
+ expect(errorOutput).toContain('"service-name" is required');
67
+ }));
68
+ test('requires valid pubspec', () => __awaiter(void 0, void 0, void 0, function* () {
69
+ const { exitCode, context } = yield runCommand((cmd) => {
70
+ cmd['serviceName'] = 'fake.service';
71
+ });
72
+ const errorOutput = context.stderr.toString();
73
+ expect(exitCode).not.toBe(0);
74
+ expect(errorOutput).toBe((0, renderer_1.renderMissingPubspecError)('./pubspec.yaml'));
75
+ }));
76
+ test('uses API Key from env over config from JSON file', () => __awaiter(void 0, void 0, void 0, function* () {
77
+ const { exitCode, context } = yield runCommand((cmd) => {
78
+ cmd['configPath'] = 'src/commands/flutter-symbols/__tests__/fixtures/config/datadog-ci.json';
79
+ cmd['serviceName'] = 'fake.service';
80
+ cmd['version'] = '1.0.0+114';
81
+ process.env.DATADOG_API_KEY = 'fake_api_key';
82
+ });
83
+ const output = context.stdout.toString().split(os_1.default.EOL);
84
+ expect(exitCode).toBe(0);
85
+ expect(output).toContain('API keys were specified both in a configuration file and in the environment.');
86
+ expect(output).toContain('The environment API key ending in _key will be used.');
87
+ }));
88
+ test('version bypasses pubspec check', () => __awaiter(void 0, void 0, void 0, function* () {
89
+ const { exitCode, context } = yield runCommand((cmd) => {
90
+ cmd['serviceName'] = 'fake.service';
91
+ cmd['version'] = '1.0.0+114';
92
+ });
93
+ const errorOutput = context.stderr.toString();
94
+ expect(exitCode).toBe(0);
95
+ expect(errorOutput).toBe('');
96
+ }));
97
+ test('minified-path-prefix required if web-sourcemaps is specified', () => __awaiter(void 0, void 0, void 0, function* () {
98
+ const { exitCode, context } = yield runCommand((cmd) => {
99
+ cmd['serviceName'] = 'fake.service';
100
+ cmd['version'] = '1.0.0+114';
101
+ cmd['webSourceMaps'] = true;
102
+ });
103
+ const errorOutput = context.stderr.toString();
104
+ expect(exitCode).toBe(1);
105
+ expect(errorOutput).toBe((0, renderer_1.renderMinifiedPathPrefixRequired)());
106
+ }));
107
+ test('minified-path-prefix required if web-sourcemaps-location is specified', () => __awaiter(void 0, void 0, void 0, function* () {
108
+ const { exitCode, context } = yield runCommand((cmd) => {
109
+ cmd['serviceName'] = 'fake.service';
110
+ cmd['version'] = '1.0.0+114';
111
+ cmd['webSourceMapsLocation'] = './fake/location';
112
+ });
113
+ const errorOutput = context.stderr.toString();
114
+ expect(exitCode).toBe(1);
115
+ expect(errorOutput).toBe((0, renderer_1.renderMinifiedPathPrefixRequired)());
116
+ }));
117
+ });
118
+ describe('getFlutterSymbolFiles', () => {
119
+ test('should read all symbol files', () => __awaiter(void 0, void 0, void 0, function* () {
120
+ const command = new upload_1.UploadCommand();
121
+ const searchDir = `${fixtureDir}/dart-symbols`;
122
+ const files = command['getFlutterSymbolFiles'](searchDir);
123
+ expect(files).toEqual([
124
+ `${searchDir}/app.android-arm.symbols`,
125
+ `${searchDir}/app.android-arm64.symbols`,
126
+ `${searchDir}/app.android-x64.symbols`,
127
+ `${searchDir}/app.ios-arm64.symbols`,
128
+ ]);
129
+ }));
130
+ });
131
+ describe('parsePubspec', () => {
132
+ test('writes error on missing pubspec', () => __awaiter(void 0, void 0, void 0, function* () {
133
+ const command = (0, fixtures_1.createCommand)(upload_1.UploadCommand);
134
+ const context = command.context;
135
+ const exitCode = yield command['parsePubspecVersion']('./pubspec.yaml');
136
+ const errorOutput = context.stderr.toString();
137
+ expect(exitCode).toBe(1);
138
+ expect(errorOutput).toBe((0, renderer_1.renderMissingPubspecError)('./pubspec.yaml'));
139
+ }));
140
+ test('writes error on invalid pubspec', () => __awaiter(void 0, void 0, void 0, function* () {
141
+ const command = (0, fixtures_1.createCommand)(upload_1.UploadCommand);
142
+ const context = command.context;
143
+ const exitCode = yield command['parsePubspecVersion'](`${fixtureDir}/pubspecs/invalidPubspec.yaml`);
144
+ const errorOutput = context.stderr.toString();
145
+ expect(exitCode).toBe(1);
146
+ expect(errorOutput).toBe((0, renderer_1.renderInvalidPubspecError)(`${fixtureDir}/pubspecs/invalidPubspec.yaml`));
147
+ }));
148
+ test('writes error on missing version in pubspec', () => __awaiter(void 0, void 0, void 0, function* () {
149
+ const command = (0, fixtures_1.createCommand)(upload_1.UploadCommand);
150
+ const context = command.context;
151
+ const exitCode = yield command['parsePubspecVersion'](`${fixtureDir}/pubspecs/missingVersionPubspec.yaml`);
152
+ const errorOutput = context.stderr.toString();
153
+ expect(exitCode).toBe(1);
154
+ expect(errorOutput).toBe((0, renderer_1.renderPubspecMissingVersionError)(`${fixtureDir}/pubspecs/missingVersionPubspec.yaml`));
155
+ }));
156
+ test('populates version from valid pubspec', () => __awaiter(void 0, void 0, void 0, function* () {
157
+ const command = (0, fixtures_1.createCommand)(upload_1.UploadCommand);
158
+ const context = command.context;
159
+ const exitCode = yield command['parsePubspecVersion'](`${fixtureDir}/pubspecs/validPubspec.yaml`);
160
+ const errorOutput = context.stderr.toString();
161
+ expect(exitCode).toBe(0);
162
+ expect(errorOutput).toBe('');
163
+ expect(command['version']).toBe('1.2.3');
164
+ }));
165
+ test('strips pre-release from pre-release pubspec and shows warning', () => __awaiter(void 0, void 0, void 0, function* () {
166
+ const command = (0, fixtures_1.createCommand)(upload_1.UploadCommand);
167
+ const context = command.context;
168
+ const exitCode = yield command['parsePubspecVersion'](`${fixtureDir}/pubspecs/prereleasePubspec.yaml`);
169
+ const errorOutput = context.stderr.toString();
170
+ expect(exitCode).toBe(0);
171
+ expect(errorOutput).toBe((0, renderer_1.renderVersionBuildNumberWarning)(`${fixtureDir}/pubspecs/prereleasePubspec.yaml`));
172
+ expect(command['version']).toBe('1.2.3');
173
+ }));
174
+ test('strips build from build pubspec and shows warning', () => __awaiter(void 0, void 0, void 0, function* () {
175
+ const command = (0, fixtures_1.createCommand)(upload_1.UploadCommand);
176
+ const context = command.context;
177
+ const exitCode = yield command['parsePubspecVersion'](`${fixtureDir}/pubspecs/buildPubspec.yaml`);
178
+ const errorOutput = context.stderr.toString();
179
+ expect(exitCode).toBe(0);
180
+ expect(errorOutput).toBe((0, renderer_1.renderVersionBuildNumberWarning)(`${fixtureDir}/pubspecs/buildPubspec.yaml`));
181
+ expect(command['version']).toBe('1.2.3');
182
+ }));
183
+ });
184
+ describe('dsyms upload', () => {
185
+ test('calls dsyms sub-command with proper default parameters', () => __awaiter(void 0, void 0, void 0, function* () {
186
+ const { exitCode } = yield runCommand((cmd) => {
187
+ cmd['serviceName'] = 'fake.service';
188
+ cmd['version'] = '1.0.0';
189
+ cmd['iosDsyms'] = true;
190
+ });
191
+ expect(exitCode).toBe(0);
192
+ expect(utils_1.performSubCommand).toHaveBeenCalledWith(dsyms.UploadCommand, ['dsyms', 'upload', './build/ios/archive/Runner.xcarchive/dSYMs'], expect.anything());
193
+ }));
194
+ test('calls dsyms sub-command with dry-run on dry-run', () => __awaiter(void 0, void 0, void 0, function* () {
195
+ const { exitCode } = yield runCommand((cmd) => {
196
+ cmd['serviceName'] = 'fake.service';
197
+ cmd['version'] = '1.0.0';
198
+ cmd['iosDsyms'] = true;
199
+ cmd['dryRun'] = true;
200
+ });
201
+ expect(exitCode).toBe(0);
202
+ expect(utils_1.performSubCommand).toHaveBeenCalledWith(dsyms.UploadCommand, ['dsyms', 'upload', './build/ios/archive/Runner.xcarchive/dSYMs', '--dry-run'], expect.anything());
203
+ }));
204
+ test('calls dsyms sub-command passing through dsymLocation', () => __awaiter(void 0, void 0, void 0, function* () {
205
+ const { exitCode, context } = yield runCommand((cmd) => {
206
+ cmd['serviceName'] = 'fake.service';
207
+ cmd['version'] = '1.0.0';
208
+ cmd['iosDsymsLocation'] = './dsym-location';
209
+ });
210
+ const errorOutput = context.stderr.toString();
211
+ expect(exitCode).toBe(0);
212
+ expect(utils_1.performSubCommand).toHaveBeenCalledWith(dsyms.UploadCommand, ['dsyms', 'upload', './dsym-location'], expect.anything());
213
+ expect(errorOutput).toBe('');
214
+ }));
215
+ });
216
+ describe('android mapping upload', () => {
217
+ const addDefaultCommandParameters = (command) => {
218
+ command['serviceName'] = 'fake.service';
219
+ command['version'] = '1.0.0';
220
+ };
221
+ const mockGitRepoParameters = (command) => {
222
+ command['gitData'] = {
223
+ hash: 'fake-git-hash',
224
+ remote: 'fake-git-remote',
225
+ trackedFilesMatcher: new format_git_sourcemaps_data_1.TrackedFilesMatcher([
226
+ './lib/main.dart',
227
+ './android/app/src/main/kotlin/com/datadoghq/example/flutter/MainActivity.kt',
228
+ './ios/Runner/AppDelegate.swift',
229
+ ]),
230
+ };
231
+ };
232
+ test('errors if mapping file does not exist', () => __awaiter(void 0, void 0, void 0, function* () {
233
+ const { exitCode, context } = yield runCommand((cmd) => {
234
+ addDefaultCommandParameters(cmd);
235
+ cmd['androidMappingLocation'] = `${fixtureDir}/android/missing.txt`;
236
+ });
237
+ const errorOutput = context.stderr.toString();
238
+ expect(exitCode).not.toBe(0);
239
+ expect(errorOutput).toBe((0, renderer_1.renderMissingAndroidMappingFile)(`${fixtureDir}/android/missing.txt`));
240
+ }));
241
+ test('errors if default mapping file does not exist', () => __awaiter(void 0, void 0, void 0, function* () {
242
+ const { exitCode, context } = yield runCommand((cmd) => {
243
+ addDefaultCommandParameters(cmd);
244
+ cmd['androidMapping'] = true;
245
+ });
246
+ const errorOutput = context.stderr.toString();
247
+ expect(exitCode).not.toBe(0);
248
+ expect(errorOutput).toBe((0, renderer_1.renderMissingAndroidMappingFile)('./build/app/outputs/mapping/release/mapping.txt'));
249
+ }));
250
+ test('creates correct metadata payload', () => {
251
+ const command = (0, fixtures_1.createCommand)(upload_1.UploadCommand);
252
+ addDefaultCommandParameters(command);
253
+ mockGitRepoParameters(command);
254
+ const metadata = command['getAndroidMetadata']();
255
+ expect(metadata).toEqual({
256
+ cli_version: cliVersion,
257
+ git_commit_sha: 'fake-git-hash',
258
+ git_repository_url: 'fake-git-remote',
259
+ service: 'fake.service',
260
+ type: 'jvm_mapping_file',
261
+ variant: 'release',
262
+ version: '1.0.0',
263
+ });
264
+ });
265
+ test('build in version is sanitized in metadata payload', () => {
266
+ const command = (0, fixtures_1.createCommand)(upload_1.UploadCommand);
267
+ addDefaultCommandParameters(command);
268
+ mockGitRepoParameters(command);
269
+ command['version'] = '1.2.4+987';
270
+ const metadata = command['getAndroidMetadata']();
271
+ expect(metadata).toEqual({
272
+ cli_version: cliVersion,
273
+ git_commit_sha: 'fake-git-hash',
274
+ git_repository_url: 'fake-git-remote',
275
+ service: 'fake.service',
276
+ type: 'jvm_mapping_file',
277
+ variant: 'release',
278
+ version: '1.2.4-987',
279
+ });
280
+ });
281
+ test('uploads correct multipart payload without repository', () => __awaiter(void 0, void 0, void 0, function* () {
282
+ ;
283
+ helpers_1.uploadMultipartHelper.mockResolvedValueOnce('');
284
+ const { exitCode } = yield runCommand((cmd) => {
285
+ addDefaultCommandParameters(cmd);
286
+ cmd['androidMappingLocation'] = `${fixtureDir}/android/fake-mapping.txt`;
287
+ });
288
+ const expectedMetadata = {
289
+ cli_version: cliVersion,
290
+ service: 'fake.service',
291
+ type: 'jvm_mapping_file',
292
+ variant: 'release',
293
+ version: '1.0.0',
294
+ };
295
+ expect(helpers_1.uploadMultipartHelper).toHaveBeenCalled();
296
+ const payload = helpers_1.uploadMultipartHelper.mock.calls[0][1];
297
+ expect(JSON.parse(payload.content.get('event').value)).toStrictEqual(expectedMetadata);
298
+ const mappingFileItem = payload.content.get('jvm_mapping_file');
299
+ expect(mappingFileItem).toBeTruthy();
300
+ expect(mappingFileItem.options.filename).toBe('jvm_mapping');
301
+ expect(mappingFileItem.path).toBe(`${fixtureDir}/android/fake-mapping.txt`);
302
+ expect(exitCode).toBe(0);
303
+ }));
304
+ test('uploads correct multipart payload with repository', () => __awaiter(void 0, void 0, void 0, function* () {
305
+ ;
306
+ helpers_1.uploadMultipartHelper.mockResolvedValueOnce('');
307
+ format_git_sourcemaps_data_1.getRepositoryData.mockResolvedValueOnce({
308
+ hash: 'fake-git-hash',
309
+ remote: 'fake-git-remote',
310
+ trackedFilesMatcher: new format_git_sourcemaps_data_1.TrackedFilesMatcher([
311
+ './lib/main.dart',
312
+ './android/app/src/main/kotlin/com/datadoghq/example/flutter/MainActivity.kt',
313
+ './ios/Runner/AppDelegate.swift',
314
+ ]),
315
+ });
316
+ const { exitCode } = yield runCommand((cmd) => {
317
+ addDefaultCommandParameters(cmd);
318
+ cmd['androidMappingLocation'] = `${fixtureDir}/android/fake-mapping.txt`;
319
+ });
320
+ const expectedMetadata = {
321
+ cli_version: cliVersion,
322
+ git_commit_sha: 'fake-git-hash',
323
+ git_repository_url: 'fake-git-remote',
324
+ service: 'fake.service',
325
+ type: 'jvm_mapping_file',
326
+ variant: 'release',
327
+ version: '1.0.0',
328
+ };
329
+ const expectedRepository = {
330
+ data: [
331
+ {
332
+ files: [
333
+ './lib/main.dart',
334
+ './android/app/src/main/kotlin/com/datadoghq/example/flutter/MainActivity.kt',
335
+ './ios/Runner/AppDelegate.swift',
336
+ ],
337
+ hash: 'fake-git-hash',
338
+ repository_url: 'fake-git-remote',
339
+ },
340
+ ],
341
+ version: 1,
342
+ };
343
+ expect(helpers_1.uploadMultipartHelper).toHaveBeenCalled();
344
+ const payload = helpers_1.uploadMultipartHelper.mock.calls[0][1];
345
+ expect(JSON.parse(payload.content.get('event').value)).toStrictEqual(expectedMetadata);
346
+ const repoValue = payload.content.get('repository');
347
+ expect(JSON.parse(repoValue.value)).toStrictEqual(expectedRepository);
348
+ expect((repoValue === null || repoValue === void 0 ? void 0 : repoValue.options).filename).toBe('repository');
349
+ expect((repoValue === null || repoValue === void 0 ? void 0 : repoValue.options).contentType).toBe('application/json');
350
+ expect(exitCode).toBe(0);
351
+ }));
352
+ test('skips upload on dry run', () => __awaiter(void 0, void 0, void 0, function* () {
353
+ ;
354
+ helpers_1.uploadMultipartHelper.mockResolvedValueOnce('');
355
+ const { exitCode } = yield runCommand((cmd) => {
356
+ addDefaultCommandParameters(cmd);
357
+ cmd['androidMappingLocation'] = `${fixtureDir}/android/fake-mapping.txt`;
358
+ cmd['dryRun'] = true;
359
+ });
360
+ expect(helpers_1.uploadMultipartHelper).not.toHaveBeenCalled();
361
+ expect(exitCode).toBe(0);
362
+ }));
363
+ });
364
+ describe('web symbols upload', () => {
365
+ test('calls sourcemap sub-command with proper default parameters', () => __awaiter(void 0, void 0, void 0, function* () {
366
+ const { exitCode } = yield runCommand((cmd) => {
367
+ cmd['serviceName'] = 'fake.service';
368
+ cmd['version'] = '1.2.3';
369
+ cmd['webSourceMaps'] = true;
370
+ cmd['minifiedPathPrefix'] = 'https://localhost';
371
+ });
372
+ expect(exitCode).toBe(0);
373
+ expect(utils_1.performSubCommand).toHaveBeenCalledWith(sourcemaps.UploadCommand, [
374
+ 'sourcemaps',
375
+ 'upload',
376
+ './build/web',
377
+ '--service=fake.service',
378
+ '--release-version=1.2.3',
379
+ '--minified-path-prefix=https://localhost',
380
+ ], expect.anything());
381
+ }));
382
+ test('calls sourcemap sub-command with overridden location', () => __awaiter(void 0, void 0, void 0, function* () {
383
+ const { exitCode } = yield runCommand((cmd) => {
384
+ cmd['serviceName'] = 'fake.service';
385
+ cmd['version'] = '1.2.3';
386
+ cmd['webSourceMaps'] = true;
387
+ cmd['webSourceMapsLocation'] = './other/location';
388
+ cmd['minifiedPathPrefix'] = 'https://localhost';
389
+ });
390
+ expect(exitCode).toBe(0);
391
+ expect(utils_1.performSubCommand).toHaveBeenCalledWith(sourcemaps.UploadCommand, [
392
+ 'sourcemaps',
393
+ 'upload',
394
+ './other/location',
395
+ '--service=fake.service',
396
+ '--release-version=1.2.3',
397
+ '--minified-path-prefix=https://localhost',
398
+ ], expect.anything());
399
+ }));
400
+ test('calls sourcemap sub-command with location only', () => __awaiter(void 0, void 0, void 0, function* () {
401
+ const { exitCode } = yield runCommand((cmd) => {
402
+ cmd['serviceName'] = 'fake.service';
403
+ cmd['version'] = '1.2.3';
404
+ cmd['webSourceMapsLocation'] = './other/location';
405
+ cmd['minifiedPathPrefix'] = 'https://localhost';
406
+ });
407
+ expect(exitCode).toBe(0);
408
+ expect(utils_1.performSubCommand).toHaveBeenCalledWith(sourcemaps.UploadCommand, [
409
+ 'sourcemaps',
410
+ 'upload',
411
+ './other/location',
412
+ '--service=fake.service',
413
+ '--release-version=1.2.3',
414
+ '--minified-path-prefix=https://localhost',
415
+ ], expect.anything());
416
+ }));
417
+ test('calls sourcemap sub-command with dry-run', () => __awaiter(void 0, void 0, void 0, function* () {
418
+ const { exitCode } = yield runCommand((cmd) => {
419
+ cmd['serviceName'] = 'fake.service';
420
+ cmd['version'] = '1.2.3';
421
+ cmd['webSourceMaps'] = true;
422
+ cmd['minifiedPathPrefix'] = 'https://localhost';
423
+ cmd['dryRun'] = true;
424
+ });
425
+ expect(exitCode).toBe(0);
426
+ expect(utils_1.performSubCommand).toHaveBeenCalledWith(sourcemaps.UploadCommand, [
427
+ 'sourcemaps',
428
+ 'upload',
429
+ './build/web',
430
+ '--service=fake.service',
431
+ '--release-version=1.2.3',
432
+ '--minified-path-prefix=https://localhost',
433
+ '--dry-run',
434
+ ], expect.anything());
435
+ }));
436
+ });
437
+ describe('flutter symbol upload', () => {
438
+ const addDefaultCommandParameters = (command) => {
439
+ command['serviceName'] = 'fake.service';
440
+ command['version'] = '1.0.0';
441
+ };
442
+ const mockGitRepoParameters = (command) => {
443
+ command['gitData'] = {
444
+ hash: 'fake-git-hash',
445
+ remote: 'fake-git-remote',
446
+ trackedFilesMatcher: new format_git_sourcemaps_data_1.TrackedFilesMatcher([
447
+ './lib/main.dart',
448
+ './android/app/src/main/kotlin/com/datadoghq/example/flutter/MainActivity.kt',
449
+ './ios/Runner/AppDelegate.swift',
450
+ ]),
451
+ };
452
+ };
453
+ test('errors if symbol directory is missing', () => __awaiter(void 0, void 0, void 0, function* () {
454
+ const { exitCode, context } = yield runCommand((cmd) => {
455
+ addDefaultCommandParameters(cmd);
456
+ cmd['dartSymbolsLocation'] = `${fixtureDir}/missing-dir`;
457
+ });
458
+ const errorOutput = context.stderr.toString();
459
+ expect(exitCode).not.toBe(0);
460
+ expect(errorOutput).toBe((0, renderer_1.renderMissingDartSymbolsDir)(`${fixtureDir}/missing-dir`));
461
+ }));
462
+ test('errors if symbol directory is a file', () => __awaiter(void 0, void 0, void 0, function* () {
463
+ const { exitCode, context } = yield runCommand((cmd) => {
464
+ addDefaultCommandParameters(cmd);
465
+ cmd['dartSymbolsLocation'] = `${fixtureDir}/dart-symbols/app.android-arm.symbols`;
466
+ });
467
+ const errorOutput = context.stderr.toString();
468
+ expect(exitCode).not.toBe(0);
469
+ expect(errorOutput).toBe((0, renderer_1.renderInvalidSymbolsDir)(`${fixtureDir}/dart-symbols/app.android-arm.symbols`));
470
+ }));
471
+ test('creates correct metadata payloads', () => {
472
+ const command = (0, fixtures_1.createCommand)(upload_1.UploadCommand);
473
+ addDefaultCommandParameters(command);
474
+ mockGitRepoParameters(command);
475
+ const metadata = command['getFlutterMetadata']('ios', 'arm64');
476
+ expect(metadata).toEqual({
477
+ arch: 'arm64',
478
+ cli_version: cliVersion,
479
+ git_commit_sha: 'fake-git-hash',
480
+ git_repository_url: 'fake-git-remote',
481
+ platform: 'ios',
482
+ service: 'fake.service',
483
+ type: 'flutter_symbol_file',
484
+ variant: 'release',
485
+ version: '1.0.0',
486
+ });
487
+ });
488
+ test('sanitizes build in version number payload', () => {
489
+ const command = (0, fixtures_1.createCommand)(upload_1.UploadCommand);
490
+ addDefaultCommandParameters(command);
491
+ mockGitRepoParameters(command);
492
+ command['version'] = '1.2.4+567';
493
+ const metadata = command['getFlutterMetadata']('ios', 'arm64');
494
+ expect(metadata).toEqual({
495
+ arch: 'arm64',
496
+ cli_version: cliVersion,
497
+ git_commit_sha: 'fake-git-hash',
498
+ git_repository_url: 'fake-git-remote',
499
+ platform: 'ios',
500
+ service: 'fake.service',
501
+ type: 'flutter_symbol_file',
502
+ variant: 'release',
503
+ version: '1.2.4-567',
504
+ });
505
+ });
506
+ test('parses symbol filenames into platform / arch', () => {
507
+ const info1 = (0, helpers_1.getArchInfoFromFilename)('app.android-arm.symbols');
508
+ const info2 = (0, helpers_1.getArchInfoFromFilename)('./a/directory/app.android-x64.symbols');
509
+ const info3 = (0, helpers_1.getArchInfoFromFilename)('./a/directory/app.confusing-.ios-arm64.symbols');
510
+ const info4 = (0, helpers_1.getArchInfoFromFilename)('app.bad.symbols');
511
+ expect(info1).toEqual({ platform: 'android', arch: 'arm' });
512
+ expect(info2).toEqual({ platform: 'android', arch: 'x64' });
513
+ expect(info3).toEqual({ platform: 'ios', arch: 'arm64' });
514
+ expect(info4).toBeUndefined();
515
+ });
516
+ 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' }));
517
+ test('uploads correct multipart payloads without repository', () => __awaiter(void 0, void 0, void 0, function* () {
518
+ ;
519
+ helpers_1.uploadMultipartHelper.mockResolvedValue('');
520
+ const { exitCode } = yield runCommand((cmd) => {
521
+ addDefaultCommandParameters(cmd);
522
+ cmd['dartSymbolsLocation'] = `${fixtureDir}/dart-symbols`;
523
+ });
524
+ const expectedMetadatas = [
525
+ getExpectedMetadata('android', 'arm'),
526
+ getExpectedMetadata('android', 'arm64'),
527
+ getExpectedMetadata('android', 'x64'),
528
+ getExpectedMetadata('ios', 'arm64'),
529
+ ];
530
+ expect(helpers_1.uploadMultipartHelper).toHaveBeenCalledTimes(4);
531
+ expectedMetadatas.forEach((expectedMetadata) => {
532
+ const mockCalls = helpers_1.uploadMultipartHelper.mock.calls;
533
+ const index = mockCalls.findIndex((call) => {
534
+ const checkPayload = call[1];
535
+ const eventPayload = checkPayload.content.get('event').value;
536
+ return eventPayload === JSON.stringify(expectedMetadata);
537
+ });
538
+ // Ensure the metadata matches at least one call
539
+ expect(index).not.toBe(-1);
540
+ const payload = mockCalls[index][1];
541
+ const mappingFileItem = payload.content.get('flutter_symbol_file');
542
+ expect(mappingFileItem).toBeTruthy();
543
+ expect(mappingFileItem.options.filename).toBe('flutter_symbol_file');
544
+ const expectedPath = `${fixtureDir}/dart-symbols/app.${expectedMetadata.platform}-${expectedMetadata.arch}.symbols`;
545
+ expect(mappingFileItem.path).toBe(expectedPath);
546
+ });
547
+ expect(exitCode).toBe(0);
548
+ }));
549
+ test('uploads correct multipart payloads with repository', () => __awaiter(void 0, void 0, void 0, function* () {
550
+ ;
551
+ helpers_1.uploadMultipartHelper.mockResolvedValue('');
552
+ format_git_sourcemaps_data_1.getRepositoryData.mockResolvedValueOnce({
553
+ hash: 'fake-git-hash',
554
+ remote: 'fake-git-remote',
555
+ trackedFilesMatcher: new format_git_sourcemaps_data_1.TrackedFilesMatcher([
556
+ './lib/main.dart',
557
+ './android/app/src/main/kotlin/com/datadoghq/example/flutter/MainActivity.kt',
558
+ './ios/Runner/AppDelegate.swift',
559
+ ]),
560
+ });
561
+ const { exitCode } = yield runCommand((cmd) => {
562
+ addDefaultCommandParameters(cmd);
563
+ cmd['dartSymbolsLocation'] = `${fixtureDir}/dart-symbols`;
564
+ });
565
+ const expectedMetadatas = [
566
+ getExpectedMetadata('android', 'arm', 'fake-git-hash', 'fake-git-remote'),
567
+ getExpectedMetadata('android', 'arm64', 'fake-git-hash', 'fake-git-remote'),
568
+ getExpectedMetadata('android', 'x64', 'fake-git-hash', 'fake-git-remote'),
569
+ getExpectedMetadata('ios', 'arm64', 'fake-git-hash', 'fake-git-remote'),
570
+ ];
571
+ const expectedRepository = {
572
+ data: [
573
+ {
574
+ files: [
575
+ './lib/main.dart',
576
+ './android/app/src/main/kotlin/com/datadoghq/example/flutter/MainActivity.kt',
577
+ './ios/Runner/AppDelegate.swift',
578
+ ],
579
+ hash: 'fake-git-hash',
580
+ repository_url: 'fake-git-remote',
581
+ },
582
+ ],
583
+ version: 1,
584
+ };
585
+ expect(helpers_1.uploadMultipartHelper).toHaveBeenCalledTimes(4);
586
+ expectedMetadatas.forEach((expectedMetadata) => {
587
+ const mockCalls = helpers_1.uploadMultipartHelper.mock.calls;
588
+ const index = mockCalls.findIndex((call) => {
589
+ const checkPayload = call[1];
590
+ const eventPayload = checkPayload.content.get('event').value;
591
+ return eventPayload === JSON.stringify(expectedMetadata);
592
+ });
593
+ // Ensure the metadata matches at least one call
594
+ expect(index).not.toBe(-1);
595
+ const payload = mockCalls[index][1];
596
+ const repoValue = payload.content.get('repository');
597
+ expect(JSON.parse(repoValue.value)).toStrictEqual(expectedRepository);
598
+ expect(repoValue.options.filename).toBe('repository');
599
+ expect(repoValue.options.contentType).toBe('application/json');
600
+ expect(exitCode).toBe(0);
601
+ });
602
+ expect(exitCode).toBe(0);
603
+ }));
604
+ test('skips upload on dry run', () => __awaiter(void 0, void 0, void 0, function* () {
605
+ ;
606
+ helpers_1.uploadMultipartHelper.mockResolvedValueOnce('');
607
+ const { exitCode } = yield runCommand((cmd) => {
608
+ addDefaultCommandParameters(cmd);
609
+ cmd['dartSymbolsLocation'] = `${fixtureDir}/dart-symbols`;
610
+ cmd['dryRun'] = true;
611
+ });
612
+ expect(helpers_1.uploadMultipartHelper).not.toHaveBeenCalled();
613
+ expect(exitCode).toBe(0);
614
+ }));
615
+ });
616
+ });
617
+ //# sourceMappingURL=upload.test.js.map