mirror of
https://github.com/mawww/kakoune.git
synced 2024-11-25 21:16:38 +03:00
e1fd2351e0
Commit 53d9b9b67
(Escaping tweak in git.kak, 2024-02-06) broke
blame-jump when the commit subject contains a single quote.
(Also on unbalanced "{" which is a rare edge case but we already have
it in our Git history.)
git.kak assumes that filenames don't contain ' or unbalanced {,
but we can't really make that assumption about people's names or
commit subjects.
Unfortunately the escaping here is very messy. We need to pass
arbitrary text to callbacks; maybe we should have closures that can
capture private temporary registers.
96 lines
3.0 KiB
Plaintext
96 lines
3.0 KiB
Plaintext
Regression test
|
||
===============
|
||
|
||
:unified-context-diff: https://en.wikipedia.org/wiki/Diff#Unified_format
|
||
|
||
Source structure
|
||
----------------
|
||
|
||
----------------------------------------------
|
||
.
|
||
├── unit
|
||
│ └── …
|
||
└── compose
|
||
└── …
|
||
├── [enabled] → applicability
|
||
├── [env] → environment setup
|
||
├── [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 test’s 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.
|
||
|
||
+env+ is optional.
|
||
If it exists, it will be sourced before starting Kakoune.
|
||
|
||
+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.
|