Skip to content

Commit

Permalink
Use fs/promises in the Node.js unit-tests (PR 17714 follow-up)
Browse files Browse the repository at this point in the history
This is available in all Node.js versions that we currently support, and using it allows us to remove callback-functions; please see https://nodejs.org/docs/latest-v18.x/api/fs.html#promises-api
  • Loading branch information
Snuffleupagus committed Sep 22, 2024
1 parent ea2172e commit 0a621ba
Showing 1 changed file with 27 additions and 33 deletions.
60 changes: 27 additions & 33 deletions test/unit/test_utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,15 +45,8 @@ class DOMFileReaderFactory {

class NodeFileReaderFactory {
static async fetch(params) {
return new Promise((resolve, reject) => {
fs.readFile(params.path, (error, data) => {
if (error || !data) {
reject(error || new Error(`Empty file for: ${params.path}`));
return;
}
resolve(new Uint8Array(data));
});
});
const data = await fs.promises.readFile(params.path);
return new Uint8Array(data);
}
}

Expand Down Expand Up @@ -152,33 +145,34 @@ function createTemporaryNodeServer() {
const server = http
.createServer((request, response) => {
const filePath = process.cwd() + "/test/pdfs" + request.url;
fs.lstat(filePath, (error, stat) => {
if (error) {
fs.promises.lstat(filePath).then(
stat => {
if (!request.headers.range) {
const contentLength = stat.size;
const stream = fs.createReadStream(filePath);
response.writeHead(200, {
"Content-Type": "application/pdf",
"Content-Length": contentLength,
"Accept-Ranges": "bytes",
});
stream.pipe(response);
} else {
const [start, end] = request.headers.range
.split("=")[1]
.split("-")
.map(x => Number(x));
const stream = fs.createReadStream(filePath, { start, end });
response.writeHead(206, {
"Content-Type": "application/pdf",
});
stream.pipe(response);
}
},
error => {
response.writeHead(404);
response.end(`File ${request.url} not found!`);
return;
}
if (!request.headers.range) {
const contentLength = stat.size;
const stream = fs.createReadStream(filePath);
response.writeHead(200, {
"Content-Type": "application/pdf",
"Content-Length": contentLength,
"Accept-Ranges": "bytes",
});
stream.pipe(response);
} else {
const [start, end] = request.headers.range
.split("=")[1]
.split("-")
.map(x => Number(x));
const stream = fs.createReadStream(filePath, { start, end });
response.writeHead(206, {
"Content-Type": "application/pdf",
});
stream.pipe(response);
}
});
);
})
.listen(0); /* Listen on a random free port */

Expand Down

0 comments on commit 0a621ba

Please sign in to comment.