2019-07-14 15:32:38 +02:00
# Vimwiki Tests
This directory contains a test framework used to automatically test/verify
Vimwiki functionality. It is based on the following tools:
2019-12-21 04:40:43 +01:00
- [vim-testbed GitHub ](https://github.com/tweekmonster/vim-testbed ) or on [testbed/vim dockerhub ](https://hub.docker.com/r/testbed/vim )
2019-07-14 15:32:38 +02:00
- [Vader ](https://github.com/junegunn/vader.vim )
2019-07-25 05:57:01 +02:00
- [Vint ](https://github.com/Kuniwak/vint )
2019-07-14 15:32:38 +02:00
2020-07-25 08:05:59 +02:00
2019-07-14 15:32:38 +02:00
## Resources
- [Vim patches ](http://ftp.vim.org/pub/vim/patches/ )
- Example test cases:
- [vim-easy-align ](https://github.com/junegunn/vim-easy-align/tree/master/test )
- [vim-plug ](https://github.com/junegunn/vim-plug/tree/master/test )
- [ale ](https://github.com/w0rp/ale/tree/master/test )
- [Other projects ](https://github.com/junegunn/vader.vim/wiki/Projects-using-Vader )
2020-07-25 08:05:59 +02:00
2019-07-25 05:57:01 +02:00
## Building Docker Image
2019-07-14 15:32:38 +02:00
2019-08-01 13:19:39 +02:00
To build the Docker image run `docker build -t vimwiki .` from the Vimwiki
2019-07-14 15:32:38 +02:00
repository root (same location as the Dockerfile).
2020-07-25 08:05:59 +02:00
2019-07-25 05:57:01 +02:00
## Running Tests
2019-07-14 15:32:38 +02:00
2019-07-25 05:57:01 +02:00
### Manual Steps
Starting in the test directory run this command:
```sh
docker run -it --rm -v $PWD/../:/testplugin -v $PWD/../test:/home vimwiki vim_7.4.1099 -u test/vimrc -i NONE
```
This will open a vim instance in the docker container and then all tests
can be run with `:Vader test/*` or individual tests can be run.
**Note:** Substitute `vim_7.4.1099` for any of the vim versions in the Dockerfile.
### Automated Tests
The script in the `test/` directory named `run_test.sh` can be used to
automatically run all tests for all installed vim versions. The vim/nvim
versions are parsed from the Dockerfile. This script will also run `Vint` for all
plugin source files. For more information run `./run_tests.sh -h` .
2020-07-25 08:05:59 +02:00
## Writing Tests
You are advice to write tests at the top of the file where you want to include it because some `Execute` can have some side effect making it hard to debug
### Inside the container
2019-12-15 05:37:28 +01:00
2019-12-21 04:40:43 +01:00
- `$USER` -> `vimtest` : unprivileged => very hard to mess up things
- `$HOME` -> `/home/vimtest` : but it is readonly !
- `$PWD` -> `/testplugin` : mapped to vimwiki plugin root directory
2019-12-15 05:37:28 +01:00
For more information, read the [base docker image ](https://github.com/tweekmonster/vim-testbed )
2020-07-25 08:05:59 +02:00
2019-07-25 05:57:01 +02:00
## Known Issues
1. neovim v0.2.x does not work correctly with Vader output from the docker
container. No test results are printed and an error message saying
`Vim: Error reading input, exiting...`
- Probably need to look into this more and determine if the issue is Vader,
Neovim, or Docker.
2019-12-14 03:58:08 +01:00
2. Vader does not play nice with the location list. Tests that use the location
list should be placed in `independent_runs/` .
- [Vader Issue #199 ](https://github.com/junegunn/vader.vim/issues/199 )
2019-12-13 20:55:58 +01:00
2020-07-25 08:05:59 +02:00
2019-12-13 20:55:58 +01:00
## Notable Vim patches
- `v7.3.831` `getbufvar` added a default value
- `v7.4.236` add ability to check patch with has("patch-7.4.123")
2019-12-21 04:40:43 +01:00
- `v7.4.279` added the option to for `globpath()` to return a list
2019-12-13 20:55:58 +01:00
- `v7.4.1546` sticky type checking removed (allow a variables type to change)
- `v7.4.1989` `filter()` accepts a Funcref
- `v7.4.2044` lambda support added - see `:h expr-lambda`
- `v7.4.2120` Added function "closure" argument
- `v7.4.2137` add `funcref()`
- `v8.0` async jobs and timers