Skip to content

Commit

Permalink
refactor portoccupied function and tests
Browse files Browse the repository at this point in the history
  • Loading branch information
DevanceJ committed Apr 20, 2024
1 parent 4aff4c7 commit caae0a2
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 10 deletions.
16 changes: 7 additions & 9 deletions packages/utils/core-utils/src/port.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,18 @@ import http from 'http';
* Check if a port is occupied.
* @returns boolean promise that resolves to true if the port is available, false otherwise.
*/
export const portOccupied = async (port: number): Promise<void> => {
return new Promise<void>((resolve, reject) => {
export const portOccupied = async (port: number): Promise<boolean> => {
return new Promise<boolean>((resolve, reject) => {
const server = http.createServer().listen(port);
server.on('listening', () => {
server.close();
resolve();
server.on('close', () => {
resolve(true);
});
});

server.on('error', (error) => {
if ('code' in error && (error as NodeJS.ErrnoException).code === 'EADDRINUSE') {
reject(new Error(`port: ${port} is occupied`));
} else {
reject(error);
}
server.on('error', (_err) => {
reject(false);
});
});
};
Expand Down
2 changes: 1 addition & 1 deletion packages/utils/core-utils/test/port_spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ describe('Port tests', () => {
try {
await portOccupied(port);
} catch (error) {
expect((error as Error).message).to.equal(`port: ${port} is occupied`);
expect(error).to.equal(false);
} finally {
releasePort();
}
Expand Down

0 comments on commit caae0a2

Please sign in to comment.