Commit Graph

284 Commits

Author SHA1 Message Date
Abdelhakeem Osama
8b8ecf44f2 shada/context: fully remove jumplist duplicates #10898
- Always load files when cleaning up jumplist.
  - For Shada: avoids writing duplicate entries, which happens when you read
    from a shada file with duplicate entries (merging the jumplist while
    writing sometimes produces duplicate entries, bug?) and then write right
    away (i.e.: without any `:jumps`, `getjumplist()`, or any jump movement,
    that is: nothing that calls `cleanup_jumplist` with `loadfiles == true`).
  - For Context: avoids non-idempotent behavior for the same reason (i.e.:
    first call to `shada_encode_jumps` does not remove duplicate entries).

- Do not set pcmark when dumping jumplist for Context.
  - Retrieving current Context shouldn't add an entry to the jumplist
    (which will be removed by a subsequent `cleanup_jumplist` anyway, i.e.:
    tail entry matching current position), just act like `getjumplist` for
    instance.
2019-09-03 10:18:24 -07:00
Justin M. Keyes
c062149d5b test: "can have two timers": retry()
ref #10768
2019-09-01 22:49:33 -07:00
Björn Linse
fb19aeeb33 API: make nvim_win_set_option() set window-global, not buffer-local #9110
NB: the `!(flags & SOPT_GLOBAL)` exception is for 'statusline'.
Because `:set statusline=...` sets the global value for _all_ windows,
`:setlocal` is the best we can do there. This is a one-of-a-kind option
that doesn't work like any other option.
2019-09-01 19:38:50 -07:00
Abdelhakeem
b447bdb68c fixup! eval: add wait() test 2019-09-01 21:17:14 +02:00
Abdelhakeem
2d3f39c729 eval: add wait() test 2019-09-01 21:17:14 +02:00
Björn Linse
e04b9e7c78 test/ui: update tests for new msg_grid implementation 2019-09-01 15:55:10 +02:00
Daniel Hahler
7d56c90dff timer_spec: shorter timeout with "doesn't mess up the cmdline" (#10769)
It was increased in dd21cd2a4 to avoid flakiness, but takes 1s then always.

This specifies a shorter timeout again, uisng `load_adjust`.
2019-08-26 14:21:01 +02:00
Daniel Hahler
47e27a4f5b tests: support msg with global_helpers.ok (#10820)
Ref: https://github.com/neovim/neovim/pull/10768#discussion_r315904175

Co-Authored-By: Justin M. Keyes <justinkz@gmail.com>
2019-08-21 02:32:20 +02:00
Daniel Hahler
9e04e19574 tests: timer_spec: lower timeout, avoids flakiness
Inspired by quickbuild failure, where `g:val` was increased already:

    20:07:04,227 INFO  - not ok 1164 - timers works with repeat two
    20:07:04,227 INFO  - # test/functional/eval/timer_spec.lua @ 36
    20:07:04,227 INFO  - # Failure message: test/functional/eval/timer_spec.lua:38: Expected objects to be the same.
    20:07:04,227 INFO  - # Passed in:
    20:07:04,227 INFO  - # (number) 1
    20:07:04,227 INFO  - # Expected:
    20:07:04,227 INFO  - # (number) 0
    20:07:04,227 INFO  - # stack traceback:
    20:07:04,227 INFO  - #     test/functional/eval/timer_spec.lua:38: in function <test/functional/eval/timer_spec.lua:36>

Uses a pattern of `eq()`ing `timer_start` and `g:val` in the same `eval`
call, and decreases timeouts in general.

Improves runtime from ~5s to <2s.
2019-08-20 04:54:28 +02:00
Daniel Hahler
f2377e3575 tests: use larger timeout with "timers can be stopped from the handler" (#10760)
Seen on quickbuild:

    23:01:01,289 INFO  - not ok 1172 - timers can be stopped from the handler
    23:01:01,289 INFO  - # test/functional/eval/timer_spec.lua @ 154
    23:01:01,289 INFO  - # Failure message: test/functional/eval/timer_spec.lua:166: Expected objects to be the same.
    23:01:01,289 INFO  - # Passed in:
    23:01:01,289 INFO  - # (number) 3
    23:01:01,289 INFO  - # Expected:
    23:01:01,289 INFO  - # (number) 0
    23:01:01,289 INFO  - # stack traceback:
    23:01:01,289 INFO  - # 	test/functional/eval/timer_spec.lua:166: in function <test/functional/eval/timer_spec.lua:154>

Log: http://neovim-qb.szakmeister.net/build/24288
Ref: https://github.com/neovim/neovim/pull/10364
2019-08-14 00:44:32 +02:00
Justin M. Keyes
278c5d452c win/os_env_exists(): workaround libuv bug #10734
os_env_exists() fails on MSVC build:
    os_env_exists:104: uv_os_getenv(EMPTY_VAR) failed: -4094 UNKNOWN

- Revert 396a3945c4
- HACK: Windows: return TRUE if uv_os_getenv() returns UV_UNKNOWN, until
  libuv bug is fixed: https://github.com/libuv/libuv/issues/2413

ref 396a3945c4 (r34642361)
2019-08-10 11:48:36 +02:00
Justin M. Keyes
396a3945c4 test/environ_spec: Windows treats empty as undefined
ref #10657
2019-08-10 01:43:37 +02:00
Daniel Hahler
06d9cc734b exists(): return false for empty env var #10657
Fixes https://github.com/neovim/neovim/issues/3266
close #10657
2019-08-09 23:42:03 +02:00
Daniel Hahler
d55b12ea50 f_environ: cleanup/refactor
- use os_getenvname_at_index / os_getenv
- f_getenv: empty (*p == NUL) is not null (undefined)
2019-08-06 01:23:11 +02:00
Jan Edmund Lazo
01e3690ca8 vim-patch:8.1.1049: when user tries to exit with CTRL-C message is confusing
Problem:    When user tries to exit with CTRL-C message is confusing.
Solution:   Only mention ":qa!" when there is a changed buffer. (closes vim/vim#4163)
a84a3dd663

vim-patch:8.1.1052: test for CTRL-C message sometimes fails

Problem:    test for CTRL-C message sometimes fails
Solution:   Make sure there are no changed buffers.
553e5a5c56

vim-patch:8.1.1053: warning for missing return statement

Problem:    Warning for missing return statement. (Dominique Pelle)
Solution:   Add return statement.
d6c3f1fa2b
2019-07-28 22:19:11 -04:00
Abdelhakeem
b6278bbf12 API: Context: save/restore 2019-07-27 22:14:58 +02:00
Abdelhakeem
691deca2e8 eval: context: add ctx-family functions 2019-07-27 16:36:56 +02:00
Justin M. Keyes
b08dc3ec19 win: jobstart(), system(): $PATHEXT-resolve exe
Windows: In order for jobstart(['foo']), system(['foo']) to find
"foo.cmd", we must replace "foo" with "foo.cmd" before sending `argv` to
process_spawn().

Rationale: jobstart([…]), system([…]) "executable" semantics should be
consistent with the VimL executable() function.

fix #9569
related: #10554
2019-07-21 20:51:37 +02:00
Justin M. Keyes
f55c1e4233 reltimefloat(): allow negative result #10544
For "backwards" duration, reltimefloat() should return negative value
like its counterpart reltimestr().

ref bab24a88ab
ref 06af88cd72
ref #10521
fix #10452
2019-07-20 10:46:09 +02:00
Daniel Hahler
4fc91fe365 tests: fix "system() … prints verbose information" (#10532)
It would previously fail with `set shell=sh` (no slash).

For the test itself we can just use a non-existing (fake) shell, because
it is only about the verbose output.

Ref: https://github.com/neovim/neovim/issues/9330
2019-07-17 23:05:04 +02:00
Justin M. Keyes
bab24a88ab viml/profile: revert proftime_T to unsigned type #10521
- reltimestr(): Produce negative value by comparing the unsigned
  proftime_T value to INT64_MAX.

https://github.com/neovim/neovim/issues/10452#issuecomment-511155132
1. The interfaces of nearly all platforms return uint64_t. INT64_MAX is
   only half of that.
2. Low-level interfaces like this typically define that there is no
   fixed starting point. The only guarantees are that it's (a)
   monotonically increasing at a rate that (b) matches real time.

ref 06af88cd72
fix #10452
2019-07-16 20:10:08 +02:00
erw7
519382646b Fix is_executable_in_path() on Windows (#10468)
* Fix problem that 1byte extra memory was allocated in is_executable_in_path

* Revert "Revert "tests: executable_spec: enable pending test #10443" (#10454)"

This reverts commit 13fbeda0e5.
2019-07-15 17:39:34 +02:00
Justin M. Keyes
06af88cd72 viml/reltime(): allow negative result #10453
- define proftime_T as signed integer
- profile_sub(): allow negative result

closes #10452
2019-07-09 12:08:54 +02:00
Daniel Hahler
13fbeda0e5 Revert "tests: executable_spec: enable pending test #10443" (#10454)
This reverts commit b53c483a4a.
2019-07-09 11:46:23 +02:00
Daniel Hahler
28a86608a8 CI: improve gcov handling #10404
- Move __gcov_flush to process_spawn, for more reliable coverage
  tracking of subprocesses
- Travis: use GCOV_ERROR_FILE
- codecov: use "-X fix" to skip "fixing" uploaded coverage data; it
  should be handled by codecov's backend instead.
- AppVeyor: no $PATH mangling, which breaks with the improved coverage tracking
  due to missing .dll in PATH.
2019-07-07 21:09:37 +02:00
Daniel Hahler
b53c483a4a tests: executable_spec: enable pending test #10443
Should hopefully work now after efc6d9951b.
2019-07-07 13:05:52 +02:00
Daniel Hahler
0dc73b87f1 tests: executable_spec: keep assertion (#10408)
It was moved to become pending in 18127f64c, but the assertion should be
kept.
2019-07-03 12:56:03 +02:00
Daniel Hahler
e9f1bdabb8 tests: fix flaky "timers can be stopped from the handler" (#10364)
Seen on Travis (osx):

    [ RUN      ] timers can be stopped from the handler: FAIL
    .../build/neovim/neovim/test/functional/eval/timer_spec.lua:167: Expected objects to be the same.
    Passed in:
    (number) 2
    Expected:
    (number) 3
    stack traceback:
            .../build/neovim/neovim/test/functional/eval/timer_spec.lua:167: in function <.../build/neovim/neovim/test/functional/eval/timer_spec.lua:153>
2019-06-29 17:53:09 +02:00
Björn Linse
619a86cb1e eval/api: don't allow the API to be called in the sandbox.
Identifying and maintaining a "secure" subset of the API would be too
much busywork. So just disable the entire thing.
2019-06-26 08:19:57 +02:00
Daniel Hahler
dd21cd2a4d tests: increase timeout with "timers doesn't mess up the cmdline" (#10212)
This might be required on (slower) CI.

    [ RUN      ] timers doesn't mess up the cmdline: ERR
    test/functional/ui/screen.lua:562: expected intermediate screen state before final screen state
    stack traceback:
            test/functional/ui/screen.lua:562: in function '_wait'
            test/functional/ui/screen.lua:366: in function 'expect'
            .../build/neovim/neovim/test/functional/eval/timer_spec.lua:221: in function <.../build/neovim/neovim/test/functional/eval/timer_spec.lua:199>

Ref: https://travis-ci.org/neovim/neovim/jobs/544974506#L3861
2019-06-13 22:11:33 +02:00
Jan Edmund Lazo
f0078c26c2 functionaltests: fix new execute() tests 2019-06-03 00:12:01 -04:00
Sha Liu
5a4e7af77d update functional test for "places cursor correctly #6035" 2019-06-03 00:12:01 -04:00
Sha Liu
73a2922413 UI: Fix wrong msg_col after execute()
closes #6035
closes #9250
2019-06-03 00:12:01 -04:00
Björn Linse
8ed54bbec3 messages: use proper multiline error message for rpcrequest and API wrappers 2019-05-26 15:42:16 +02:00
Justin M. Keyes
fd04877eb0 test: remove use of require('test.helpers')
The test.functional.helpers and test.unit.helpers modules now include
all of the public functions from test.helpers, so there is no need to
separately require('test.helpers').
2019-05-18 15:48:13 +02:00
Justin M. Keyes
24f9dd73d5 test/channels_spec: cleanup
- Remove stray print()
- Use uname() instead of system('uname')
2019-05-12 00:43:28 +02:00
Justin M. Keyes
c7039fd0d3 test: "$PATHEXT=::" 2019-04-02 01:28:11 +02:00
erw7
ece8d88b10 test/win: Remove unnecessary set shell 2019-04-01 19:47:58 +09:00
erw7
3be5aa1a34 test/win: executable(), exepath() #9516 2019-04-01 03:13:11 +02:00
erw7
67535b5940 test/env: multibyte env var to child process
Note: the test fails on non-Windows CI (Travis linux, Quickbuild bsd):
even on master before the env.c changes in this patch-series.
Maybe the unix part of printenv-test.c needs to be revisited.

Signed-off-by: Justin M. Keyes <justinkz@gmail.com>
2019-02-28 22:40:11 +01:00
Justin M. Keyes
1d8e768360 os_getenv, os_setenv: revert "widechar" impl
It's reported that the Windows widechar variants do automatically
convert from the current codepage to UTF16, which is very helpful. So
the "widechar" impls are a good direction.  But libuv v1.12 does that
for us, so the next commit will use that instead.

ref #8398
ref #9267
2019-02-26 22:38:52 +01:00
Justin M. Keyes
9153062095 os_setenv: use _wputenv_s; remove vestigial code #7920
_putenv_s variant was left over from 810d31a430, should have been
removed in cd5b131575.
2019-02-25 23:47:54 +01:00
Justin M. Keyes
a494910aa1 test: adjust timer_spec 2019-01-31 22:26:32 +01:00
Marco Hinz
f2e996b991 tests: load-adjust timer tests (functionaltest) 2019-01-17 15:59:23 +01:00
Justin M. Keyes
0f00f31cbd VimL/confirm(): Show dialog even if :silent
closes #8788
related #9034
2018-12-01 16:06:01 +01:00
Justin M. Keyes
f8639dc99c test: adjust time-sensitive tests (#9220)
- window_split_tab_spec.lua: Put cursor at bottom of :terminal buffer so
  that it follows output.
- inccommand_spec.lua: Increase timeout to allow 2nd retry.
- Timer tests are less reliable on Travis CI macOS 10.12/10.13.
  ref #6829
  ref e39dade80b
  ref de13113dc1
  ref https://github.com/neovim/neovim/pull/9095#issuecomment-429603452
  > We don't guarantee that a X ms timer is triggered during Y ms sleep
  > for any X<Y, though I would expect the load to be really bad for this
  > to happen with X=10ms, Y=40ms.
2018-11-10 11:12:04 +01:00
Justin M. Keyes
de13113dc1 test/timer_spec: relax lower-bound
Test is unreliable on macOS 10.13.  The lower-bound isn't central to the
purpose of the test, so just relax it.

ref https://github.com/neovim/neovim/pull/9095#issuecomment-429603452

> We don't guarantee that a X ms timer is triggered during Y ms sleep
> for any X<Y, though I would expect the load to be really bad for this
> to happen with X=10ms, Y=40ms.

related: #6829
2018-11-05 00:35:54 +01:00
Björn Linse
e598811e76 ui: disable clearing almost everywhere
Avoid clearing the screen in most situations. NOT_VALID should be
equivalent to CLEAR unless some external force messed up the terminal,
for these situations <c-l> and :mode will still clear the screen.

Also eliminate some obsolete code in screen.c, that dealt with that in
vim drawing window 1 can mess up window 2, but this never happens in
nvim.

But what about slow terminals? There is two common meanings in which
a terminal is said to be "slow":

Most commonly (and in the sense of vim:s nottyfast) it means low
bandwidth for sending bytes from nvim to the terminal. If the screen is
very similar before and after the update_screen(CLEAR) this change
should reduce bandwidth. If the screen is quite different, but there is
no new regions of contiguous whitespace, clearing doesn't reduce
bandwidth significantly. If the new screen contains a lot of whitespace,
it will depend of if vsplits are used or not: as long as there is no
vsplits, ce is used to cheaply clear the rest of the line, so
full-screen clear is not needed to reduce bandwith. However a left
vsplit currently needs to be padded with whitespace all the way to the
separator. It is possible ec (clear N chars) can be used to reduce
bandwidth here if this is a problem. (All of this assumes that one
doesn't set Normal guibg=... on a non-BCE terminal, if you do you are
doomed regardless of this change).

Slow can also mean that drawing pixels on the screen is slow. E-ink
screens is a recent example. Avoiding clearing and redrawing the
unchanged part of the screen will always improve performance in these
cases.
2018-10-22 11:59:02 +02:00
Björn Linse
c8810a51a3 tests: improve robustness of immediate successes in screen tests 2018-10-15 20:13:11 +02:00
Justin M. Keyes
e39dade80b test: adjust timer tests
Timer tests are less reliable on Travis CI macOS 10.12 (most egregious).
Also somewhat on 10.13.
2018-10-13 23:34:49 +02:00