mirror of
https://github.com/abhigyanpatwari/GitNexus.git
synced 2026-08-28 05:25:25 +00:00
42 lines
1.6 KiB
TypeScript
42 lines
1.6 KiB
TypeScript
import { describe, it, expect } from 'vitest';
|
|
|
|
/**
|
|
* Inline copy of the production regex predicate. The production
|
|
* function lives inside `cli-e2e.test.ts` as a test-internal helper;
|
|
* if it later moves to a shared util this test should import that
|
|
* util directly. For now we duplicate the regex so a precedence
|
|
* regression in cli-e2e.test.ts fails this unit test as well as the
|
|
* integration tests.
|
|
*/
|
|
function isEvalServerBindRestriction(stderr: string): boolean {
|
|
return /(?:listen|bind) (?:EPERM|EACCES|EADDRNOTAVAIL|operation not permitted|permission denied)/i.test(
|
|
stderr,
|
|
);
|
|
}
|
|
|
|
describe('isEvalServerBindRestriction', () => {
|
|
describe('matches genuine libuv bind-restriction errors', () => {
|
|
it.each([
|
|
['Error: listen EACCES: permission denied 127.0.0.1:80'],
|
|
['Error: listen EPERM: operation not permitted 0.0.0.0:80'],
|
|
['Error: listen EADDRNOTAVAIL: address not available 192.168.1.99:0'],
|
|
['something then bind EACCES: permission denied'],
|
|
['LISTEN EACCES: permission denied'],
|
|
])('matches %p', (stderr) => {
|
|
expect(isEvalServerBindRestriction(stderr)).toBe(true);
|
|
});
|
|
});
|
|
|
|
describe('does not match unrelated stderr', () => {
|
|
it.each([
|
|
["Error: EACCES: permission denied, open '/etc/shadow'"],
|
|
['Error: ENOENT: no such file or directory'],
|
|
['sandbox blocked: operation not permitted'],
|
|
['GITNEXUS_EVAL_SERVER_READY:127.0.0.1:5173'],
|
|
[''],
|
|
['unknown option --host'],
|
|
])('does not match %p', (stderr) => {
|
|
expect(isEvalServerBindRestriction(stderr)).toBe(false);
|
|
});
|
|
});
|
|
});
|