** Description changed:
+ [Impact]
+ Invoking ssh-import-id gh:$missing_user in a non-interactive context produces
no output.
+
+ [Test case]
+ "ssh-import-id gh:mwhudso 2>&1 | cat" should output "no such user" or some
similar helpful messsage, not nothing at all.
+
+ [Regression potential]
+ The upload to bionic unapproved is an untested combination of patches so
needs careful testing. Fortunately each patch is small and mostly independent
so testing each affected area of code should not be too onerous.
+
+ [Original Description]
mwhudson@ringil:~/src/ssh-import-id$ ssh-import-id gh:mwhudso
Username "mwhudso" not found at GitHub API
mwhudson@ringil:~/src/ssh-import-id$ ssh-import-id gh:mwhudso | cat
- mwhudson@ringil:~/src/ssh-import-id$
+ mwhudson@ringil:~/src/ssh-import-id$
What happened? The offending code looks like
- if resp.status_code == 404:
- print('Username "%s" not found at GitHub API' % ghid)
- os._exit(1)
+ if resp.status_code == 404:
+ print('Username "%s" not found at GitHub API' % ghid)
+ os._exit(1)
print does not flush by default. When stdout is a terminal you get an
implicit flush on newline but when it's a pipe you do not and calling
_exit(1) exits the process without flushing the buffers either. Two
fixes suggest themselves: 1) add flush=True to the print() calls 2)
exiting more conventionally by e.g. calling sys.exit()
** Description changed:
[Impact]
Invoking ssh-import-id gh:$missing_user in a non-interactive context produces
no output.
+
+ I want to change subiquity to invoke ssh-import-id directly and helpful
+ error messages are important in giving useful feedback to the user.
[Test case]
"ssh-import-id gh:mwhudso 2>&1 | cat" should output "no such user" or some
similar helpful messsage, not nothing at all.
[Regression potential]
The upload to bionic unapproved is an untested combination of patches so
needs careful testing. Fortunately each patch is small and mostly independent
so testing each affected area of code should not be too onerous.
[Original Description]
mwhudson@ringil:~/src/ssh-import-id$ ssh-import-id gh:mwhudso
Username "mwhudso" not found at GitHub API
mwhudson@ringil:~/src/ssh-import-id$ ssh-import-id gh:mwhudso | cat
mwhudson@ringil:~/src/ssh-import-id$
What happened? The offending code looks like
if resp.status_code == 404:
print('Username "%s" not found at GitHub API' % ghid)
os._exit(1)
print does not flush by default. When stdout is a terminal you get an
implicit flush on newline but when it's a pipe you do not and calling
_exit(1) exits the process without flushing the buffers either. Two
fixes suggest themselves: 1) add flush=True to the print() calls 2)
exiting more conventionally by e.g. calling sys.exit()
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1770302
Title:
ssh-import-id gh:$missing-user does not flush stdout properly
To manage notifications about this bug go to:
https://bugs.launchpad.net/ssh-import-id/+bug/1770302/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs