@teamscale/coverage-collector 0.0.1-beta.22 → 0.0.1-beta.27

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/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teamscale/coverage-collector",
3
- "version": "0.0.1-beta.21",
3
+ "version": "0.0.1-beta.27",
4
4
  "description": "Collector for JavaScript code coverage information",
5
5
  "main": "dist/src/main.js",
6
6
  "bin": "dist/src/main.js",
@@ -12,16 +12,18 @@
12
12
  "url": "https://github.com/cqse/teamscale-javascript-profiler.git"
13
13
  },
14
14
  "scripts": {
15
+ "prepublishOnly": "yarn clean && yarn build",
15
16
  "clean": "rimraf dist tsconfig.tsbuildinfo",
16
17
  "build": "tsc",
17
18
  "collector": "node dist/src/main.js",
18
19
  "test": "yarn build && NODE_OPTIONS='--experimental-vm-modules' jest --forceExit --coverage --silent=true --detectOpenHandles"
19
20
  },
20
21
  "files": [
21
- "dist/**/*"
22
+ "dist/**/*",
23
+ "lib/**/*"
22
24
  ],
23
25
  "dependencies": {
24
- "@cqse/commons": "^0.0.1-beta.1",
26
+ "@cqse/commons": "^0.0.1-beta.26",
25
27
  "argparse": "^2.0.1",
26
28
  "async": "^3.2.0",
27
29
  "axios": "^0.24.0",
@@ -30,4 +30,5 @@ export declare class Main {
30
30
  */
31
31
  private static maybeStartDumpTimer;
32
32
  private static dumpCoverage;
33
+ private static uploadToTeamscale;
33
34
  }
package/dist/src/main.js CHANGED
@@ -2,7 +2,11 @@
2
2
  "use strict";
3
3
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
4
  if (k2 === undefined) k2 = k;
5
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
6
10
  }) : (function(o, m, k, k2) {
7
11
  if (k2 === undefined) k2 = k;
8
12
  o[k2] = m[k];
@@ -34,6 +38,7 @@ const fs = __importStar(require("fs"));
34
38
  const axios_1 = __importDefault(require("axios"));
35
39
  const form_data_1 = __importDefault(require("form-data"));
36
40
  const QueryParameters_1 = __importDefault(require("./utils/QueryParameters"));
41
+ const util_1 = require("util");
37
42
  const tmp_1 = __importDefault(require("tmp"));
38
43
  /**
39
44
  * The main class of the Teamscale JavaScript Collector.
@@ -185,42 +190,8 @@ class Main {
185
190
  const lines = storage.dumpToSimpleCoverageFile(coverageFile);
186
191
  logger.info(`Dumped ${lines} lines of coverage to ${coverageFile}.`);
187
192
  // 2. Upload to Teamscale if configured
188
- if (!config.teamscale_server_url) {
189
- logger.info('Upload to Teamscale not configured.');
190
- }
191
- else if (lines === 0) {
192
- // Nothing to upload
193
- }
194
- else if (config.teamscale_access_token && config.teamscale_user) {
195
- logger.info('Preparing upload to Teamscale');
196
- const form = new form_data_1.default();
197
- form.append('report', fs.createReadStream(coverageFile), 'coverage.simple');
198
- const parameters = new QueryParameters_1.default();
199
- parameters.addIfDefined('format', 'SIMPLE');
200
- parameters.addIfDefined('message', config.teamscale_message);
201
- parameters.addIfDefined('repository', config.teamscale_repository);
202
- parameters.addIfDefined('t', config.teamscale_commit);
203
- parameters.addIfDefined('revision', config.teamscale_revision);
204
- parameters.addIfDefined('partition', config.teamscale_partition);
205
- const response = await axios_1.default.post(`${config.teamscale_server_url.replace(/\/$/, '')}/api/projects/${config.teamscale_project}/external-analysis/session/auto-create/report?${parameters.toString()}`, form, {
206
- auth: {
207
- username: config.teamscale_user,
208
- password: config.teamscale_access_token
209
- },
210
- headers: {
211
- Accept: '*/*',
212
- 'Content-Type': `multipart/form-data; boundary=${form.getBoundary()}`
213
- }
214
- });
215
- if (response.status >= 400) {
216
- logger.error(`Upload failed with code ${response.status}: ${response.statusText}`);
217
- }
218
- else {
219
- logger.info(`Upload with status code ${response.status} finished.`);
220
- }
221
- }
222
- else {
223
- logger.error('Cannot upload to Teamscale: API key and user name must be configured!');
193
+ if (config.teamscale_server_url) {
194
+ await this.uploadToTeamscale(config, logger, coverageFile, lines);
224
195
  }
225
196
  }
226
197
  finally {
@@ -233,6 +204,58 @@ class Main {
233
204
  logger.error('Coverage dump failed.', e);
234
205
  }
235
206
  }
207
+ static async uploadToTeamscale(config, logger, coverageFile, lines) {
208
+ if (!(config.teamscale_access_token && config.teamscale_user && config.teamscale_server_url)) {
209
+ logger.error('Cannot upload to Teamscale: API key and user name must be configured!');
210
+ return;
211
+ }
212
+ if (lines === 0) {
213
+ return;
214
+ }
215
+ logger.info('Preparing upload to Teamscale');
216
+ const form = new form_data_1.default();
217
+ form.append('report', fs.createReadStream(coverageFile), 'coverage.simple');
218
+ const parameters = new QueryParameters_1.default();
219
+ parameters.addIfDefined('format', 'SIMPLE');
220
+ parameters.addIfDefined('message', config.teamscale_message);
221
+ parameters.addIfDefined('repository', config.teamscale_repository);
222
+ parameters.addIfDefined('t', config.teamscale_commit);
223
+ parameters.addIfDefined('revision', config.teamscale_revision);
224
+ parameters.addIfDefined('partition', config.teamscale_partition);
225
+ await axios_1.default
226
+ .post(`${config.teamscale_server_url.replace(/\/$/, '')}/api/projects/${config.teamscale_project}/external-analysis/session/auto-create/report?${parameters.toString()}`, form, {
227
+ auth: {
228
+ username: config.teamscale_user,
229
+ password: config.teamscale_access_token
230
+ },
231
+ headers: {
232
+ Accept: '*/*',
233
+ 'Content-Type': `multipart/form-data; boundary=${form.getBoundary()}`
234
+ }
235
+ })
236
+ .catch(function (error) {
237
+ if (error.response) {
238
+ const response = error.response;
239
+ if (response.status >= 400) {
240
+ logger.error(`Upload failed with code ${response.status}: ${response.statusText}`);
241
+ logger.error(`Request failed with following response: ${response.data}`);
242
+ }
243
+ else {
244
+ logger.info(`Upload with status code ${response.status} finished.`);
245
+ }
246
+ }
247
+ else if (error.request) {
248
+ logger.error(`Upload request did not receive a response.`);
249
+ }
250
+ if (error.message) {
251
+ logger.error(`Something went wrong when uploading data: ${error.message}`);
252
+ logger.debug(`Details of the error: ${(0, util_1.inspect)(error)}`);
253
+ }
254
+ else {
255
+ logger.error(`Something went wrong when uploading data: ${(0, util_1.inspect)(error)}`);
256
+ }
257
+ });
258
+ }
236
259
  }
237
260
  exports.Main = Main;
238
261
  Main.run();
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[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);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[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);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[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);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teamscale/coverage-collector",
3
- "version": "0.0.1-beta.22",
3
+ "version": "0.0.1-beta.27",
4
4
  "description": "Collector for JavaScript code coverage information",
5
5
  "main": "dist/src/main.js",
6
6
  "bin": "dist/src/main.js",
@@ -12,16 +12,18 @@
12
12
  "url": "https://github.com/cqse/teamscale-javascript-profiler.git"
13
13
  },
14
14
  "scripts": {
15
+ "prepublishOnly": "yarn clean && yarn build",
15
16
  "clean": "rimraf dist tsconfig.tsbuildinfo",
16
17
  "build": "tsc",
17
18
  "collector": "node dist/src/main.js",
18
19
  "test": "yarn build && NODE_OPTIONS='--experimental-vm-modules' jest --forceExit --coverage --silent=true --detectOpenHandles"
19
20
  },
20
21
  "files": [
21
- "dist/**/*"
22
+ "dist/**/*",
23
+ "lib/**/*"
22
24
  ],
23
25
  "dependencies": {
24
- "@cqse/commons": "^0.0.1-beta.1",
26
+ "@cqse/commons": "^0.0.1-beta.26",
25
27
  "argparse": "^2.0.1",
26
28
  "async": "^3.2.0",
27
29
  "axios": "^0.24.0",