vona-cli-set-api 1.1.128 → 1.1.129

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/index.js CHANGED
@@ -991,15 +991,12 @@ class CliBinTest extends BeanCliBase {
991
991
  }
992
992
  args = args.concat([getImportEsm(), testFile, projectPath, (!!argv.coverage).toString(), patterns.join(',')]);
993
993
  // args = args.concat(['--experimental-transform-types', getImportEsm(), testFile, projectPath, (!!argv.coverage).toString(), patterns.join(',')]);
994
- // ignore error special in windows
995
- await catchError(() => {
996
- return this.helper.spawnExe({
997
- cmd: 'node',
998
- args,
999
- options: {
1000
- cwd: projectPath
1001
- }
1002
- });
994
+ await this.helper.spawnExe({
995
+ cmd: 'node',
996
+ args,
997
+ options: {
998
+ cwd: projectPath
999
+ }
1003
1000
  });
1004
1001
  }
1005
1002
  async _outputCoverageReportViewer(projectPath) {
@@ -59,9 +59,27 @@ async function testRun(projectPath, coverage, patterns) {
59
59
  ];
60
60
  // app
61
61
  const app = await createGeneralApp(projectPath);
62
- // concurrency
63
- const concurrency = await prepareConcurrency(app);
64
- return new Promise(resolve => {
62
+ let testError;
63
+ let closeError;
64
+ let closePromise;
65
+ const closeApplication = async () => {
66
+ const [_, error] = await catchError(() => app.close());
67
+ closeError = error;
68
+ // handles
69
+ if (process.env.TEST_WHYISNODERUNNING === 'true') {
70
+ await sleep(2000);
71
+ const handles = process._getActiveHandles();
72
+ if (handles.length > 3) {
73
+ whyIsNodeRunning();
74
+ }
75
+ }
76
+ };
77
+ const closeApplicationOnce = () => {
78
+ return (closePromise ??= closeApplication());
79
+ };
80
+ try {
81
+ // concurrency
82
+ const concurrency = await prepareConcurrency(app);
65
83
  const testStream = run({
66
84
  isolation: 'none',
67
85
  concurrency,
@@ -76,27 +94,12 @@ async function testRun(projectPath, coverage, patterns) {
76
94
  .on('test:coverage', data => {
77
95
  outputCoverageReport(data.summary.totals);
78
96
  })
79
- .on('test:summary', async () => {
80
- resolve(undefined);
81
- })
82
- .on('test:pass', async (t) => {
97
+ .on('test:pass', t => {
83
98
  if (t.name === '---done---') {
84
- const [_, err] = await catchError(() => {
85
- return app.close();
86
- });
87
- if (err) {
88
- console.error(err);
89
- }
90
- // handles
91
- if (process.env.TEST_WHYISNODERUNNING === 'true') {
92
- await sleep(2000);
93
- const handles = process._getActiveHandles();
94
- if (handles.length > 3) {
95
- whyIsNodeRunning();
96
- }
97
- }
99
+ void closeApplicationOnce();
98
100
  }
99
101
  });
102
+ const summaryPromise = waitForTestSummary(testStream);
100
103
  if (coverage) {
101
104
  const reporterDir = path.join(projectPath, 'coverage');
102
105
  fse.ensureDirSync(reporterDir);
@@ -106,6 +109,32 @@ async function testRun(projectPath, coverage, patterns) {
106
109
  else {
107
110
  testStream.compose(spec).pipe(process.stdout);
108
111
  }
112
+ const summarySuccess = await summaryPromise;
113
+ if (!summarySuccess) {
114
+ throw new Error('node:test reported failed tests');
115
+ }
116
+ }
117
+ catch (error) {
118
+ testError = error;
119
+ }
120
+ finally {
121
+ await closeApplicationOnce();
122
+ }
123
+ if (testError) {
124
+ if (closeError)
125
+ console.error(closeError);
126
+ throw toError(testError);
127
+ }
128
+ if (closeError) {
129
+ throw toError(closeError);
130
+ }
131
+ }
132
+ function toError(error) {
133
+ return error instanceof Error ? error : new Error(String(error));
134
+ }
135
+ function waitForTestSummary(testStream) {
136
+ return new Promise((resolve, reject) => {
137
+ testStream.once('test:summary', summary => resolve(summary.success)).once('error', reject);
109
138
  });
110
139
  }
111
140
  async function prepareConcurrency(app) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "vona-cli-set-api",
3
- "version": "1.1.128",
4
- "gitHead": "93d6ccaace7d8eca543adb7b2dd0b295603eeec0",
3
+ "version": "1.1.129",
4
+ "gitHead": "cd41414765dfc186953f59e31d654ecb8ab2ed41",
5
5
  "description": "vona cli-set-api",
6
6
  "keywords": [
7
7
  "framework",