@itwin/build-tools 4.0.0-dev.46 → 4.0.0-dev.48

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,96 +1,96 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- /*---------------------------------------------------------------------------------------------
4
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
5
- * See LICENSE.md in the project root for license terms and full copyright notice.
6
- *--------------------------------------------------------------------------------------------*/
7
- /* eslint-disable @typescript-eslint/naming-convention */
8
- /* eslint-disable @typescript-eslint/no-var-requires */
9
- /* eslint-disable no-console */
10
- const debugLeaks = process.env.DEBUG_LEAKS;
11
- if (debugLeaks)
12
- require("wtfnode");
13
- const path = require("path");
14
- const fs = require("fs-extra");
15
- const { logBuildWarning, logBuildError, failBuild } = require("../scripts/utils/utils");
16
- const Base = require("mocha/lib/reporters/base");
17
- const Spec = require("mocha/lib/reporters/spec");
18
- const MochaJUnitReporter = require("mocha-junit-reporter");
19
- function withStdErr(callback) {
20
- const originalConsoleLog = Base.consoleLog;
21
- Base.consoleLog = console.error;
22
- callback();
23
- Base.consoleLog = originalConsoleLog;
24
- }
25
- const isCI = process.env.CI || process.env.TF_BUILD;
26
- // Force rush test to fail CI builds if describe.only or it.only is used.
27
- // These should only be used for debugging and must not be committed, otherwise we may be accidentally skipping lots of tests.
28
- if (isCI) {
29
- if (typeof (mocha) !== "undefined")
30
- mocha.forbidOnly();
31
- else
32
- require.cache[require.resolve("mocha/lib/mocharc.json", { paths: require.main?.paths ?? module.paths })].exports.forbidOnly = true;
33
- }
34
- // This is necessary to enable colored output when running in rush test:
35
- Object.defineProperty(Base, "color", {
36
- get: () => process.env.FORCE_COLOR !== "false" && process.env.FORCE_COLOR !== "0",
37
- set: () => { },
38
- });
39
- class BentleyMochaReporter extends Spec {
40
- constructor(_runner, _options) {
41
- super(...arguments);
42
- this._junitReporter = new MochaJUnitReporter(...arguments);
43
- }
44
- epilogue(...args) {
45
- // Force test errors to be printed to stderr instead of stdout.
46
- // This will allow rush to correctly summarize test failure when running rush test.
47
- if (this.stats.failures) {
48
- withStdErr(() => super.epilogue(...args));
49
- }
50
- else {
51
- super.epilogue(...args);
52
- if (0 === this.stats.passes) {
53
- logBuildError("There were 0 passing tests. That doesn't seem right."
54
- + "\nIf there are really no passing tests and no failures, then what was even the point?"
55
- + "\nIt seems likely that tests were skipped by it.only, it.skip, or grep filters, so I'm going to fail now.");
56
- failBuild();
57
- }
58
- }
59
- // Detect hangs caused by tests that leave timers/other handles open - not possible in electron frontends.
60
- if (!("electron" in process.versions)) {
61
- // NB: By calling unref() on this timer, we stop it from keeping the process alive, so it will only fire if _something else_ is still keeping
62
- // the process alive after 5 seconds. This also has the benefit of preventing the timer from showing up in wtfnode's dump of open handles.
63
- setTimeout(() => {
64
- logBuildError(`Handle leak detected. Node was still running 5 seconds after tests completed.`);
65
- if (debugLeaks) {
66
- const wtf = require("wtfnode");
67
- wtf.setLogger("info", console.error);
68
- wtf.dump();
69
- }
70
- else {
71
- console.error("Try running with the DEBUG_LEAKS env var set to see open handles.");
72
- }
73
- // Not sure why, but process.exit(1) wasn't working here...
74
- process.kill(process.pid);
75
- }, 5000).unref();
76
- }
77
- if (!this.stats.pending)
78
- return;
79
- // Also log warnings in CI builds when tests have been skipped.
80
- const currentPkgJson = path.join(process.cwd(), "package.json");
81
- if (fs.existsSync(currentPkgJson)) {
82
- const currentPackage = require(currentPkgJson).name;
83
- if (this.stats.pending === 1)
84
- logBuildWarning(`1 test skipped in ${currentPackage}`);
85
- else
86
- logBuildWarning(`${this.stats.pending} tests skipped in ${currentPackage}`);
87
- }
88
- else {
89
- if (this.stats.pending === 1)
90
- logBuildWarning(`1 test skipped`);
91
- else
92
- logBuildWarning(`${this.stats.pending} tests skipped`);
93
- }
94
- }
95
- }
96
- module.exports = BentleyMochaReporter;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /*---------------------------------------------------------------------------------------------
4
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
5
+ * See LICENSE.md in the project root for license terms and full copyright notice.
6
+ *--------------------------------------------------------------------------------------------*/
7
+ /* eslint-disable @typescript-eslint/naming-convention */
8
+ /* eslint-disable @typescript-eslint/no-var-requires */
9
+ /* eslint-disable no-console */
10
+ const debugLeaks = process.env.DEBUG_LEAKS;
11
+ if (debugLeaks)
12
+ require("wtfnode");
13
+ const path = require("path");
14
+ const fs = require("fs-extra");
15
+ const { logBuildWarning, logBuildError, failBuild } = require("../scripts/utils/utils");
16
+ const Base = require("mocha/lib/reporters/base");
17
+ const Spec = require("mocha/lib/reporters/spec");
18
+ const MochaJUnitReporter = require("mocha-junit-reporter");
19
+ function withStdErr(callback) {
20
+ const originalConsoleLog = Base.consoleLog;
21
+ Base.consoleLog = console.error;
22
+ callback();
23
+ Base.consoleLog = originalConsoleLog;
24
+ }
25
+ const isCI = process.env.CI || process.env.TF_BUILD;
26
+ // Force rush test to fail CI builds if describe.only or it.only is used.
27
+ // These should only be used for debugging and must not be committed, otherwise we may be accidentally skipping lots of tests.
28
+ if (isCI) {
29
+ if (typeof (mocha) !== "undefined")
30
+ mocha.forbidOnly();
31
+ else
32
+ require.cache[require.resolve("mocha/lib/mocharc.json", { paths: require.main?.paths ?? module.paths })].exports.forbidOnly = true;
33
+ }
34
+ // This is necessary to enable colored output when running in rush test:
35
+ Object.defineProperty(Base, "color", {
36
+ get: () => process.env.FORCE_COLOR !== "false" && process.env.FORCE_COLOR !== "0",
37
+ set: () => { },
38
+ });
39
+ class BentleyMochaReporter extends Spec {
40
+ constructor(_runner, _options) {
41
+ super(...arguments);
42
+ this._junitReporter = new MochaJUnitReporter(...arguments);
43
+ }
44
+ epilogue(...args) {
45
+ // Force test errors to be printed to stderr instead of stdout.
46
+ // This will allow rush to correctly summarize test failure when running rush test.
47
+ if (this.stats.failures) {
48
+ withStdErr(() => super.epilogue(...args));
49
+ }
50
+ else {
51
+ super.epilogue(...args);
52
+ if (0 === this.stats.passes) {
53
+ logBuildError("There were 0 passing tests. That doesn't seem right."
54
+ + "\nIf there are really no passing tests and no failures, then what was even the point?"
55
+ + "\nIt seems likely that tests were skipped by it.only, it.skip, or grep filters, so I'm going to fail now.");
56
+ failBuild();
57
+ }
58
+ }
59
+ // Detect hangs caused by tests that leave timers/other handles open - not possible in electron frontends.
60
+ if (!("electron" in process.versions)) {
61
+ // NB: By calling unref() on this timer, we stop it from keeping the process alive, so it will only fire if _something else_ is still keeping
62
+ // the process alive after 5 seconds. This also has the benefit of preventing the timer from showing up in wtfnode's dump of open handles.
63
+ setTimeout(() => {
64
+ logBuildError(`Handle leak detected. Node was still running 5 seconds after tests completed.`);
65
+ if (debugLeaks) {
66
+ const wtf = require("wtfnode");
67
+ wtf.setLogger("info", console.error);
68
+ wtf.dump();
69
+ }
70
+ else {
71
+ console.error("Try running with the DEBUG_LEAKS env var set to see open handles.");
72
+ }
73
+ // Not sure why, but process.exit(1) wasn't working here...
74
+ process.kill(process.pid);
75
+ }, 5000).unref();
76
+ }
77
+ if (!this.stats.pending)
78
+ return;
79
+ // Also log warnings in CI builds when tests have been skipped.
80
+ const currentPkgJson = path.join(process.cwd(), "package.json");
81
+ if (fs.existsSync(currentPkgJson)) {
82
+ const currentPackage = require(currentPkgJson).name;
83
+ if (this.stats.pending === 1)
84
+ logBuildWarning(`1 test skipped in ${currentPackage}`);
85
+ else
86
+ logBuildWarning(`${this.stats.pending} tests skipped in ${currentPackage}`);
87
+ }
88
+ else {
89
+ if (this.stats.pending === 1)
90
+ logBuildWarning(`1 test skipped`);
91
+ else
92
+ logBuildWarning(`${this.stats.pending} tests skipped`);
93
+ }
94
+ }
95
+ }
96
+ module.exports = BentleyMochaReporter;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/build-tools",
3
- "version": "4.0.0-dev.46",
3
+ "version": "4.0.0-dev.48",
4
4
  "description": "Bentley build tools",
5
5
  "license": "MIT",
6
6
  "repository": {