kakoune/test
Johannes Altmanninger 8427379a5d Tweak selection-undo interaction with WinDisplay hooks
Each selection undo operation is surrounded by pair of
begin_edition()/end_edition() calls.
The original reason for adding these was that in one of my preliminary
versions, a WinDisplay hook could break an undo chain, even if the
hook did not affect selections at all. This has since been fixed.

By surrounding the undo with begin_edition()/end_edition(), try to
ensure that any selection modification that happens in a WinDisplay
hook would not break the undo chain. Essentially this means that,
after using <c-h> to undo a buffer change, this was meant to
make sure that <c-k> could redo that buffer change.

However, it turns out this actually doesn't work.  The attached test
case triggers an assertion.  As described in the first paragraph,
the only real-world motivation for this is gone, so let's simplify
the behavior.
The assertion fix means that we can test the next commit better.
2022-12-27 18:24:55 +01:00
..
compose Move user mappings to <space> and keep/remove selection to , 2022-07-05 08:43:40 +10:00
display Add support for curly underline and separate underline color 2021-09-07 08:21:26 +10:00
highlight Re-work line trimming to fix issues with column highighters 2022-07-13 12:24:14 +10:00
hooks Run InsertCompletionHide hook before insertions that close completion menu 2022-05-29 15:24:38 +02:00
indent Move user mappings to <space> and keep/remove selection to , 2022-07-05 08:43:40 +10:00
normal Tweak selection-undo interaction with WinDisplay hooks 2022-12-27 18:24:55 +01:00
prompt Add tests for prompt history behaviour 2022-06-07 14:01:23 +10:00
regression Fix pasting after when selections are overlapping 2022-11-28 20:27:44 +11:00
shell Expand env vars as list of strings 2020-03-02 20:53:28 +11:00
README.asciidoc test: Update the README to describe the current test API. 2020-11-21 16:57:08 +11:00
run Bug: The enabled test checks, though they exist are never actually run 2021-12-14 16:53:41 +05:30

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Regression test
===============

:unified-context-diff: https://en.wikipedia.org/wiki/Diff#Unified_format

Source structure
----------------

----------------------------------------------
.
├── unit
│   └── …
└── compose
    └── …
        ├── [enabled]    → applicability
        ├── [rc]         → configuration
        ├── [in]         → start file
        ├── cmd          → command
        ├── [script]     → UI automation
        ├── [out]        → expected end file
        ├── [kak_*]      → expected expansion values
        └── [error]      → expected error
----------------------------------------------

Usage
-----

To test, just type +run [test]+ in the +test+ directory.
It will print each passing test.  If a test fails, a {unified-context-diff}[unified context diff]
is printed showing the tests expected output and the actual output.

Details
-------

+enabled+ is optional.
If it exists and is executable,
it is invoked with no parameters.
If it exits with a non-zero exit code,
the test is assumed to be not applicable to the current environment
(for example, a test for OS-specific integration
isn't useful on a different OS)
and will be silently skipped.

+rc+ is optional
and should contain a sequence of commands,
_e.g._, +set-option+, +define-command+, +declare-option+.
+rc+ is sourced and evaluated before the +cmd+ key sequence is executed.

+in+ is optional
and should contain the initial text loaded into the input buffer
for editing by the +cmd+ key sequence.

+cmd+ is required
and should contain a key sequence that will edit the input buffer.
+cmd+ is executed after the +rc+ command sequence is sourced.

+script+ is optional
and is a shell-script that will be sourced after +cmd+ is executed.
The special +ui_in+ function sends a string
(expected to be a JSON UI message,
see `doc/json_ui.asciidoc` in the Kakoune source)
to the running Kakoune instance,
while the special +ui_out+ function
checks the next JSON UI messages from Kakoune
against its arguments,
and fails the test if any of them are different.

You can also say `ui_out -ignore N` to ignore the next _N_ JSON UI messages,
where _N_ is a positive integer. 

+out+ is optional
and should contain the expected text generated by the +cmd+ key sequence.

If the actual +out+ text
does not match the expected content in the corresponding file,
the unit test will fail.

If there is no +out+
then the unit test will always succeed.

Any +kak_*+ files should match the corresponding expansion
after +cmd+ is complete.
For example, a file named +kak_selection_desc+
should match the +%val{selection_desc}+ expansion.
See `:doc expansions` for a list of available expansions.

If there is an +error+ file,
the test is expected to produce an error.
If Kakoune exits successfully,
or if it fails with the wrong error,
the test is marked as a failure.