@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.
|
|
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.
|
|
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",
|
package/dist/src/main.d.ts
CHANGED
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.
|
|
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 (
|
|
189
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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",
|