mc/tests
Andrew Borodin 44d8213f4e Ticket #4533: External editor does not work with arguments in $EDITOR
When using an external editor (i.e. "Use internal edit" in the Configure
Options is unchecked) the environment variable EDITOR is used. However,
if $EDITOR contains a command line argument after the executable name,
these arguments are not processed properly, and the editor might not be
started at all.

How to reproduce: (Precondition: vi is available on the system)
  1) On the command line, execute: export EDITOR="vi +" && mc
(the + argument should let vi start at the document's end instead of the
beginning).
  2) Go to the Options menu -> Configuration -> uncheck "Use internal
edit".
  3) Move the cursor to a file that is larger than a single screen (e.g.
ABOUT-NLS in mc's source directory).
  4) Press F4 to start the external editor.

Result: Nothing visible happens

Expected result: vi is opened showing the end of the file ABOUT-NLS

The bug: my_system_make_arg_array() doesn't perform full-feature
parsing of the comman line.

  * (str_tokenize): mew function based on history_tokenize_internal()
from GNU readline-8.2.
  * (str_tokenize_word): mew function based on history_tokenize_word()
from GNU readline-8.2.
  * (my_system_make_arg_array): reimplement using str_tokenize().
  * (my_systemv_flags): use modified my_system_make_arg_array().
  * (fork_child_tokens): new test for string tokenization.
  * (fork_child_tokens2): likewise.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-03-31 19:04:26 +03:00
..
lib Ticket #4533: External editor does not work with arguments in $EDITOR 2024-03-31 19:04:26 +03:00
src Update copyright years. 2024-01-01 09:46:17 +03:00
.gitignore tests: add .gitignore 2019-09-01 20:13:52 +03:00
Makefile.am
mctest.h tests/mctest.h: indentation. 2023-01-28 21:38:04 +03:00
README

Overview
--------

This tree contains unit tests.

To compile and run the tests, do 'make check' (either in the top folder,
or just in the folder containing the tests you're interested in).

IMPORTANT: To compile the tests, you need to have the "Check" unit
testing framework[1] installed.[2] If you have it installed, you will see
"Unit tests: yes" in configure's summary message; if you don't see this
message, you won't be able to compile the tests.[3]

Tips and tricks
---------------

* To be able to step with the debugger into test code, see [4]. E.g., do:

    $ export CK_FORK=no

[1]: http://libcheck.github.io/check/
[2]: Your package manager likely has it.
[3]: Actually, some tests (like src/vfs/extfs/helpers-list) don't use
     this framework and will compile just fine. But that's the exception.
[4]: http://stackoverflow.com/questions/1649814/debugging-unit-test-in-c-using-check