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)
Sat, Apr 20, 4:49 PM
Unknown Object (File)
Tue, Apr 16, 10:28 PM
Unknown Object (File)
Sat, Apr 13, 10:02 PM
Unknown Object (File)
Thu, Apr 11, 8:54 AM
Unknown Object (File)
Mar 17 2024, 5:09 PM
Unknown Object (File)
Mar 16 2024, 11:17 AM
Unknown Object (File)
Mar 10 2024, 12:33 PM
Unknown Object (File)
Mar 1 2024, 5:30 AM
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