Thanks to visit codestin.com
Credit goes to github.com

Skip to content

test: Improve TestSSH/ForwardGPG stability on macOS via pty.ReadRune #5739

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

Merged
merged 3 commits into from
Jan 17, 2023

Conversation

mafredri
Copy link
Member

Writing to stdin for coder ssh too early could result in the input
being discarded. To work around this we add a new ptytest method
called ReadRune that lets us read one character of output. This will
indicate the command is ready to accept input.

It could be one character of the prompt, or of the loading message
waiting for connection to be established.

Writing to stdin for `coder ssh` too early could result in the input
being discarded. To work around this we add a new `ptytest` method
called `ReadRune` that lets us read one character of output. This will
indicate the command is ready to accept input.

It could be one character of the prompt, or of the loading message
waiting for connection to be established.
@mafredri mafredri self-assigned this Jan 17, 2023
@mafredri mafredri requested a review from deansheather January 17, 2023 12:13
Copy link
Member

@deansheather deansheather left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The rest of the methods in ptytest should probably be updated to take a context too

@@ -475,6 +475,10 @@ Expire-Date: 0
// real error from being printed.
t.Cleanup(cancel)

// Wait for the prompt or any output really to indicate the command has
// started and accepting input on stdin.
_ = pty.ReadRune(ctx)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the goal is to wait for output why not make a method WaitForOutput instead or something, which has similar behavior but doesn't advance the reader (e.g. using Peek instead of Read)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's not a bad suggestion, I think both methods can be useful though. I'll add Peek and use that instead. 👍🏻

@mafredri
Copy link
Member Author

The rest of the methods in ptytest should probably be updated to take a context too

Agreed. I was in the process of rewriting this and ReadLine to use a common method. I'll put it on my TODO to do a more complete refactor later.

@mafredri mafredri merged commit 77e71f3 into main Jan 17, 2023
@mafredri mafredri deleted the mafredri/test-fix-gpg-test branch January 17, 2023 13:30
@github-actions github-actions bot locked and limited conversation to collaborators Jan 17, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants