Page MenuHomePhabricator

If "vi" or "vim" exit with an error code, test for error-on-interactive-mistake behavior
ClosedPublic

Authored by epriestley on May 24 2019, 8:34 PM.
Tags
None
Referenced Files
Unknown Object (File)
Tue, May 7, 7:37 AM
Unknown Object (File)
Fri, May 3, 7:00 PM
Unknown Object (File)
Fri, May 3, 7:02 AM
Unknown Object (File)
Fri, Apr 26, 11:14 PM
Unknown Object (File)
Fri, Apr 26, 8:04 PM
Unknown Object (File)
Thu, Apr 25, 1:24 AM
Unknown Object (File)
Sat, Apr 20, 4:49 PM
Unknown Object (File)
Tue, Apr 16, 10:28 PM
Subscribers
None
Tokens
"Baby Tequila" token, awarded by avivey.

Details

Summary

See T13297. Some versions of "vi" and "vim" exit with an error code if the user makes a command typo while performing an interactive edit. This can lead to discarding stuff they typed.

If we receive an error code:

  • test if the binary is "vi" or "vim";
  • if it is, test if "<binary> +q +Q" exits nonzero;
  • if it does, ignore the error code.

This appears to be a conclusive test for "error indicates interactive command mistake".

Test Plan
  • On my system, ran EDITOR=... arc diff --trace with vi and vim.
  • Made an intentional command typo, e.g. :Q<enter> in command mode.
  • Saved with :wq.
  • Before, vim: worked fine.
  • After, vim: worked fine.
  • Before, vi: failed after vi exited with an error.
  • After, vi: detected the error in vi, detected questionable vi binary behavior, workflow recovered and succeeded.

Diff Detail

Repository
rPHU libphutil
Branch
vivim1
Lint
Lint Passed
Unit
Tests Passed
Build Status
Buildable 22912
Build 31433: Run Core Tests
Build 31432: arc lint + arc unit