Skip to content

Commit 8a12366

Browse files
committed
fix: prevent TypeError: Body is unusable during unit test dep generation
1 parent 287ebed commit 8a12366

File tree

2 files changed

+25
-21
lines changed

2 files changed

+25
-21
lines changed

Gruntfile.js

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ const childProcess = require("child_process");
22
const EOL = require("os").EOL;
33
const path = require("path");
44
const now = new Date().toISOString();
5-
const latestVersion = require('latest-version').default;
5+
const manifest = require('pacote').manifest;
66

77

88
const ENVIRONMENTS = {
@@ -260,28 +260,26 @@ function registerTestingDependenciesTasks(grunt) {
260260
return done(false);
261261
}
262262

263-
264-
// Kick off all version resolutions in parallel
265-
const versionPromises = testDependencies.map(dep => {
266-
if (dep.version) {
267-
dependenciesVersions[dep.name] = dep.version;
268-
return Promise.resolve();
269-
}
270-
return latestVersion(dep.name).then(v => {
271-
dependenciesVersions[dep.name] = v;
272-
});
273-
});
274-
275-
Promise.all(versionPromises)
276-
.then(() => {
277-
grunt.file.write(generatedVersionFilePath, JSON.stringify(dependenciesVersions, null, 2));
263+
(async () => {
264+
try {
265+
for (const dep of testDependencies) {
266+
if (dep.version) {
267+
dependenciesVersions[dep.name] = dep.version;
268+
} else {
269+
dependenciesVersions[dep.name] = await latestVersion(dep.name);
270+
}
271+
}
272+
grunt.file.write(
273+
generatedVersionFilePath,
274+
JSON.stringify(dependenciesVersions, null, 2)
275+
);
278276
grunt.log.writeln("Wrote", generatedVersionFilePath);
279277
done();
280-
})
281-
.catch(err => {
278+
} catch (err) {
282279
grunt.log.error(err);
283280
done(false);
284-
});
281+
}
282+
})();
285283
});
286284

287285
grunt.registerTask("verify_unit_testing_dependencies", function () {
@@ -291,3 +289,9 @@ function registerTestingDependenciesTasks(grunt) {
291289
});
292290
}
293291

292+
async function latestVersion(name) {
293+
// only fetches the package.json for the latest dist-tag
294+
const { version } = await manifest(name.toLowerCase(), { fullMetadata: false });
295+
return version;
296+
}
297+

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)