aboutsummaryrefslogtreecommitdiff
path: root/test/unit/os
Commit message (Collapse)AuthorAge
* os_stat: return ENOENT on NULL filename argJames McCoy2017-08-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Closes #4370 Explication: In the backtrace in #4370, we see that `buf_write()` was called with non-NULL `fname` and `sfname` arguments, but they've since _become_ NULL. #7 0x00000000004de09d in buf_write (buf=0x1dee040, fname=0x0, fname@entry=0x1e985b0 "/home/sean/src/github.com/snczl/virta/pkg/meld/segment.go", sfname=0x0, sfname@entry=0x1ddfa60 "segment.go", start=1, end=72, eap=eap@entry=0x7ffc6b032e60, append=0, forceit=0, reset_changed=1, filtering=0) at /home/travis/build/neovim/bot-ci/build/neovim/src/nvim/fileio.c:2576 This is most likely due to the code that restores those values from `buf`, which happens just before the fatal call to `os_fileinfo` ```c /* * The autocommands may have changed the name of the buffer, which may * be kept in fname, ffname and sfname. */ if (buf_ffname) ffname = buf->b_ffname; if (buf_sfname) sfname = buf->b_sfname; if (buf_fname_f) fname = buf->b_ffname; if (buf_fname_s) fname = buf->b_sfname; ``` It's worth noting that at this point `ffname` is still non-NULL, so it _could_ be used. However, our current code is purely more strict than Vim in this area, which has caused us problems before (e.g., `getdigits()`). The commentary for `struct file_buffer` clearly indicate that all of `b_ffname`, `b_sfname`, and `b_fname` may be NULL: ```c /* * b_ffname has the full path of the file (NULL for no name). * b_sfname is the name as the user typed it (or NULL). * b_fname is the same as b_sfname, unless ":cd" has been done, * then it is the same as b_ffname (NULL for no name). */ char_u *b_ffname; /* full path file name */ char_u *b_sfname; /* short file name */ char_u *b_fname; /* current file name */ ``` Vim directly calls `stat(2)` which, although it is annotated to tell the compiler that the path argument is non-NULL, does handle a NULL pointer by returning a `-1` value and setting `errno` to `EFAULT`. This satisfies Vim's check, since it treats any `-1` return from `stat(2)` to mean the file doesn't exist (at least in this code path). Note that Vim's mch_stat() implementations on win32 and solaris clearly cannot accept NULL `name`. But the codepaths that call mch_stat will NULL `name` tend to be unix-only (eg: u_read_undo)!
* os/fileio: Add ability to use os/fileio.c for file descriptorsZyX2017-07-04
| | | | Code imported from #6299
* os/fileio: Add msgpack_file_write functionZyX2017-07-04
|
* test: expand_env_esc: Pass correct buffer size for outlen and assertionJames McCoy2017-07-02
| | | | | | | | Running this test with a mocked passwd file whose $HOME was set to /home/jamessan/src/debian.org/pkg-vim/deb-packages/neovim/neovim-0.2.0/debian/fakehome caused the test to fail, since the expanded result was >= 99 bytes. The test should be reflecting the actual size of the buffer, instead of some arbitrary other number, anwyay.
* test: fix bashisms (#6791)Jonathan de Boyne Pollard2017-06-01
|
* startup: v:progpath fallback: path_guess_exepathJustin M. Keyes2017-05-15
| | | | | | | If procfs is missing then libuv cannot find the exe path. Fallback to path_guess_exepath(), adapted from Vim findYourself(). Closes #6734
* test/fs: sanity check for literal "~" directory (#6579)Justin M. Keyes2017-04-24
| | | | If the CWD contains a directory with the literal name "~" then the tests will have bogus failures.
* win: os_shell_is_cmdexe() + testsJustin M. Keyes2017-04-12
|
* tests: Fix testlint errorsZyX2017-04-03
|
* eval: Make writefile() able to disable fsync()ZyX2017-04-02
|
* eval,fileio: Omit additional fsync() callZyX2017-04-01
| | | | Fixes #6420
* build: Rename NEOVIM_* to NVIM_*Justin M. Keyes2017-03-27
|
* unittests: Fix linter errorsZyX2017-03-11
|
* unittests: Do not import libnvim or headers in main processZyX2017-03-11
| | | Slows down unit tests much, but gets rid of as much preserved state as possible.
* unittests: Check core dumps in after_each, like in functestsZyX2017-03-11
|
* unittests: Run all unit tests in their own processesZyX2017-03-11
| | | | | | | | | | | | | | | Used sed -r -i -e '/ helpers =/ s/$/\nlocal itp = helpers.gen_itp(it)/; s/^(\s*)it\(/\1itp(/' test/unit/**/*_spec.lua to alter all tests. Locally they all run fine now. Reasoning: 1. General: state from one test should not affect other tests. 2. Local: travis build is failing with something which may be an output of garbage collector. This should prevent state of the garbage collector from interferring as well.
* build: Do not force busted into front of $PATHJustin M. Keyes2017-02-04
| | | | | | | | | This was a workaround from long ago, but it doesn't seem to be needed anymore. And it breaks the $PATH on the Windows build (AppVeyor CI). After this change python3 (and 2) is correctly detected on AppVeyor CI. References #5946
* win: Append process dir to $PATHJustin M. Keyes2017-02-04
| | | | | | | | This allows executables to be found by :!, system(), and executable() if they live next to ("sibling" to) nvim.exe. This is what gvim on Windows does, and also matches the behavior of Win32 SearchPath(). https://github.com/vim/vim/blob/c4a249a736d40ec54794827ef95804c225d0e38f/src/os_win32.c#L354-L370
* test: expand_env_esc()Justin M. Keyes2017-01-21
| | | | | | Test expand_env_esc() using the same parameters reported in #3725. Closes #3725
* build: Target luacheck HEAD.Justin M. Keyes2016-11-17
| | | | | | | | | | | | https://github.com/mpeterv/luacheck/pull/81#issuecomment-261099606 > If you really want to use bleeding-edge version you should get the > rockspec from master branch, not a fixed commit ... > The correct way to install from a specific commit is cloning that > commit and running "luarocks make" from project directory. The reason > is that running "install" or "build" on an scm rockspec fetches > sources from master but uses build description from the rockspec > itself, which may be outdated.
* shell_escape: rename; refactorJustin M. Keyes2016-09-11
| | | | | | | | - rename to shell_xescape_xquote - move to os/shell.c - disallow NULL argument - eliminate casts, nesting - test: empty shellxquote/shellxescape
* system(): Respect 'sxe' and 'sxq' #2789Zhaosheng Pan2016-09-10
| | | | Fixes #2773
* os/fs: Rename os_file_exists to os_path_exists (#4973)Daniel Xu2016-07-06
| | | | Because the old name did not indicate that the function would return true on directories as well.
* unittests: Fix testlint errorsZyX2016-06-24
|
* unittests: Fix kFileNoSymlink test on FreeBSDZyX2016-06-24
| | | | | | | | | | | Actual value on FreeBSD is -31, UV_EMLINK was obtained from /usr/include/asm-generic/errno-base.h (there EMLINK is defined as 31 there). This may actually be something else, but I do not think so as “Too many links” description also fits in. [Man page][1] agrees with me, search for `[EMLINK]` ([linux man page][2] also specifies ELOOP explicitly in a similar section). [1]: https://www.freebsd.org/cgi/man.cgi?query=open&sektion=2 [2]: http://man7.org/linux/man-pages/man3/open.3p.html
* unittests: Fix bug somewhere that makes file_read tests SEGVZyX2016-06-24
|
* file: Move src/nvim/file.* to src/nvim/os/fileio.*ZyX2016-06-24
|
* unittests: Add tests for file.cZyX2016-06-24
| | | | Also fixes some errors found.
* unittests: Add os_write testZyX2016-06-23
| | | New os/fs.c functions are now all tested.
* unittests: Add os_close, os_read and os_readv testsZyX2016-06-23
|
* unittests: Also remove event_teardownZyX2016-05-31
| | | | | | | | | `event_teardown` is there from 974752c, by aktau. It was introduced with `init_homedir` and `event_init`. Then both were removed by justinmk in 99a9161bace8200aa611f6feefcc2ac3eda93251 (`init_homedir`) and 49c5689f45b9f222ed58e18e55678df7fb971ee8 (`event_init`), but `event_teardown` was not removed. Now this may cause a crash. More details in #4852. Closes #4852
* os_nodetype: Return NODE_NORMAL if os_stat fails.Justin M. Keyes2016-05-22
| | | | | | | | Conforms to Vim's mch_nodetype. Regression by 7db4a15. buf_write() expects NODE_WRITABLE for character devices such as /dev/stderr. Closes #4772
* vim-patch:7.4.672KillTheMule2016-05-02
| | | | | | | | | | | Problem: When completing a shell command, directories in the current directory are not listed. Solution: When "." is not in $PATH also look in the current directory for directories. https://github.com/vim/vim/commit/b5971141dff0c69355fd64196fcc0d0d071d4c82 Most of it applied manually.
* test/unit: ensure event_init()Justin M. Keyes2016-04-25
| | | | | | Closes #4635 References #4630 References https://github.com/neovim/neovim/pull/4070#discussion_r50626558
* test: shell_spec: rename variableJustin M. Keyes2016-04-24
|
* misc: UNIX => Unix #4022Seth Jackson2016-01-16
| | | | | | | | | | Although UNIX is a registered trademark of The Open Group, it doesn't really matter whether we refer to these systems as UNIX, Unix, or Unix-like. So, for consistency, refer to them collectively as Unix. Related: http://www.greens.org/about/unix.html http://www.unixica.com/html/unixunix.html
* test: sys/fcntl.h -> fcntl.hMichael Reed2016-01-14
| | | | | | | | | POSIX.1-2008[1] says that the latter should be used, and all of our supported platforms would seem to support this scheme, apparently even Windows[2]. [1]: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/fcntl.h.html [2]: https://msdn.microsoft.com/en-us/library/z0kc8e3z.aspx
* shell: Unquote &shell* options before using themZyX2016-01-11
|
* Use libuv errors instead of errno in unit testsRui Abreu Ferreira2015-11-25
| | | | | | | | Replaced old unit tests for errno with libuv error codes UV_ENOENT and UV_EEXIST (for os_open and os_getperms). Added libuv include path to test/includes compiler calls - needed to get hold of libuv headers.
* test/unit: clean up according to luacheckMarco Hinz2015-11-23
|
* os/fs: Allow os_mkdir_recurse directory name to end with ///ZyX2015-10-23
|
* test: os_system: spec for non-zero exit. #3419Russ Adams2015-10-04
|
* os/fs.c: remove os_file_is_readonly()Justin M. Keyes2015-08-17
| | | | | | | | | | | | | | | | | | | os_file_is_readonly() in its current form is equivalent to !os_file_is_writable(). This does not appear to be a bug, because Vim's use of check_file_readonly() (which we changed to os_file_is_readonly()) is equivalent to !os_file_is_writable() in every case. os_file_is_readonly() also fails this test: returns false if the file is non-read, non-write A more useful form would define behavior under these cases: - path is executable (but not writable) - path is non-existent - path is directory But there is no reason for os_file_is_readonly() to exist, so remove it.
* test: more cases for os_file_is_readonly()Justin M. Keyes2015-08-17
|
* test: cover os_file_is_readable()Justin M. Keyes2015-08-17
|
* test: fix pending() invocationsJustin M. Keyes2015-08-09
| | | | | AFAICT busted does not report pending() invocations without the 2nd argument.
* os/fs: Move mkdir_recurse from eval.c to os/fs.cZyX2015-07-26
|
* event loop: New abstraction layer with refactored time/signal APIThiago de Arruda2015-07-17
| | | | | | | | | | - Add event loop abstraction module under src/nvim/event. The src/nvim/event/loop module replaces src/nvim/os/event - Remove direct dependency on libuv signal/timer API and use the new abstraction instead. - Replace all references to uv_default_loop() by &loop.uv, a new global variable that wraps libuv main event loop but allows the event loop functions to be reused in other contexts.
* test: Ensure proper initialization in unit/helpers.luaThiago de Arruda2015-07-01
| | | | | Remove helpers.vim_init and simply perform the required initialization in helpers.lua.
* tests: Use pending() instead of silently skipping test. #2737Florian Walch2015-05-29
|