Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

switch everything to node and dont use O_NONBLOCK #25

Merged
merged 44 commits into from
Jun 8, 2024
Merged
Changes from 1 commit
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
7f35457
switch everything to node
jackyzha0 Jun 5, 2024
cb1ef5f
oops forgot packagelock
jackyzha0 Jun 5, 2024
0904a82
3.0.0
jackyzha0 Jun 5, 2024
605b315
test fixes
jackyzha0 Jun 5, 2024
e5413e7
only
jackyzha0 Jun 5, 2024
fb3e5da
use nix instead of rustix, convert to blocking mode
jackyzha0 Jun 6, 2024
cf94ce8
try to fix ci?
jackyzha0 Jun 6, 2024
1e5762c
strip w -x
jackyzha0 Jun 6, 2024
0f9c8c6
language agnostic build
jackyzha0 Jun 6, 2024
d49fdb0
change recommended start strat
jackyzha0 Jun 6, 2024
998c8c3
update package json, try not stripping
jackyzha0 Jun 6, 2024
b4286f2
remove concurrent sad
jackyzha0 Jun 6, 2024
28270d1
bad assert
jackyzha0 Jun 6, 2024
fa4d05d
try specifying target again
jackyzha0 Jun 6, 2024
3391137
dont ci
jackyzha0 Jun 6, 2024
c47260a
fix linux tests
jackyzha0 Jun 6, 2024
ced5a0e
try not using docker??
jackyzha0 Jun 6, 2024
a3df0bb
combine build and test
jackyzha0 Jun 6, 2024
9cd45d2
simplify even more
jackyzha0 Jun 6, 2024
7adb3cd
fix upload path
jackyzha0 Jun 6, 2024
9243065
try not repeating?
jackyzha0 Jun 6, 2024
859f26c
dont repeat, abstract rejectOnNonEIO
jackyzha0 Jun 6, 2024
add0b3c
?????
jackyzha0 Jun 6, 2024
8edfc51
only run publish on main
jackyzha0 Jun 6, 2024
728fb16
try 50 again?
jackyzha0 Jun 6, 2024
82d0861
lower repeat?? idk
jackyzha0 Jun 6, 2024
26e702e
add before/aftereach
jackyzha0 Jun 6, 2024
6720477
try without cloning
jackyzha0 Jun 6, 2024
e91e2c8
cleanup/teardown improvement
jackyzha0 Jun 6, 2024
ff9016b
now try bumping retry
jackyzha0 Jun 6, 2024
6c16e58
50???? john pls
jackyzha0 Jun 6, 2024
42f3552
drop controller fd
jackyzha0 Jun 6, 2024
23b6009
use unsafe close
jackyzha0 Jun 6, 2024
627c699
wait for the right things...
jackyzha0 Jun 6, 2024
38e7a0b
bump retries
jackyzha0 Jun 6, 2024
b1d19d2
add poll
jackyzha0 Jun 7, 2024
f2255b0
use end instead of close
jackyzha0 Jun 7, 2024
546eae7
wrapper time
jackyzha0 Jun 7, 2024
3d82fdf
update docs, remove extra ports from .replit
jackyzha0 Jun 7, 2024
2365f06
run 1000??
jackyzha0 Jun 7, 2024
25b6d59
stty is bad
jackyzha0 Jun 7, 2024
4f0fd09
add ordering test
jackyzha0 Jun 7, 2024
9895696
some test cleanup
jackyzha0 Jun 8, 2024
99fdc02
remove only modifier
jackyzha0 Jun 8, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
dont repeat, abstract rejectOnNonEIO
jackyzha0 committed Jun 6, 2024
commit 859f26c3908b1bceb11b82b96a7352bc02fd21aa
67 changes: 15 additions & 52 deletions tests/index.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { Pty } from '../index';
import assert from 'assert';
import fs from 'fs';
import { describe, test, expect, onTestFinished, vi } from 'vitest';

@@ -15,6 +14,14 @@ function createWriteStreamToPty(pty: Pty) {
return fs.createWriteStream('', { fd, autoClose: false });
}

const rejectOnNonEIO = (reject: (reason?: Error) => void) => (err: NodeJS.ErrnoException) => {
if (err.code && err.code.indexOf('EIO') !== -1) {
return;
}

reject(err);
}

describe('PTY', () => {
test('spawns and exits', () => new Promise<void>((done, reject) => {
const message = 'hello from a pty';
@@ -37,13 +44,7 @@ describe('PTY', () => {
readStream.on('data', (chunk) => {
buffer = chunk.toString();
});
readStream.on('error', (err: any) => {
if (err.code && err.code.indexOf('EIO') !== -1) {
return;
}

reject(err);
});
readStream.on('error', rejectOnNonEIO(reject));
}));

test('captures an exit code', () => new Promise<void>((done) => {
@@ -87,23 +88,10 @@ describe('PTY', () => {
readStream.on('data', (data) => {
buffer += data.toString();
});
readStream.on('error', (err: any) => {
if (err.code && err.code.indexOf('EIO') !== -1) {
return;
}

reject(err);
});

readStream.on('error', rejectOnNonEIO(reject));
writeStream.write(message);
writeStream.end(EOT);
writeStream.on('error', (err: any) => {
if (err.code && err.code.indexOf('EIO') !== -1) {
return;
}

reject(err);
});
writeStream.on('error', rejectOnNonEIO(reject));
}));

test('can be resized', () => new Promise<void>((done, reject) => {
@@ -139,22 +127,9 @@ describe('PTY', () => {
return;
}
});
readStream.on('error', (err: any) => {
if (err.code && err.code.indexOf('EIO') !== -1) {
return;
}

reject(err);
});

readStream.on('error', rejectOnNonEIO(reject));
writeStream.write("stty size; echo 'done1'\n");
writeStream.on('error', (err: NodeJS.ErrnoException) => {
if (err.code && err.code.indexOf('EIO') !== -1) {
return;
}

reject(err);
});
writeStream.on('error', rejectOnNonEIO(reject));
}));

test('respects working directory', () => new Promise<void>((done, reject) => {
@@ -178,13 +153,7 @@ describe('PTY', () => {
readStream.on('data', (data) => {
buffer += data.toString();
});
readStream.on('error', (err: any) => {
if (err.code && err.code.indexOf('EIO') !== -1) {
return;
}

reject(err);
});
readStream.on('error', rejectOnNonEIO(reject));
}));

test('respects env', () => new Promise<void>((done, reject) => {
@@ -211,13 +180,7 @@ describe('PTY', () => {
readStream.on('data', (data) => {
buffer += data.toString();
});
readStream.on('error', (err: any) => {
if (err.code && err.code.indexOf('EIO') !== -1) {
return;
}

reject(err);
});
readStream.on('error', rejectOnNonEIO(reject));
}));

test("doesn't break when executing non-existing binary", () => new Promise<void>((done) => {