mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 11:15:14 -07:00
2d1b5589e8
To follow the pattern of using NVIM for technical descriptions, it was renamed to NVIM_LISTEN_ADDRESS
51 lines
1.1 KiB
Plaintext
Executable File
51 lines
1.1 KiB
Plaintext
Executable File
#!/usr/bin/env expect
|
|
|
|
if {$argc < 2} {
|
|
puts "Need commands for running the tests and for starting nvim"
|
|
exit 1
|
|
}
|
|
|
|
set timeout 60
|
|
set run_tests [split [lindex $argv 0] " "]
|
|
set run_nvim [split [lindex $argv 1] " "]
|
|
|
|
# don't echo to stdout
|
|
log_user 0
|
|
# set NVIM_LISTEN_ADDRESS, so nvim will listen on a known socket
|
|
set env(NVIM_LISTEN_ADDRESS) "/tmp/nvim-[exec date +%s%N].sock"
|
|
# start nvim
|
|
spawn {*}$run_nvim
|
|
# save the job descriptor
|
|
set nvim_id $spawn_id
|
|
# Reset function that can be invoked by test runners to put nvim in a cleaner
|
|
# state
|
|
send {
|
|
:echo "read"."y"
|
|
}
|
|
# wait until nvim is ready
|
|
expect "ready"
|
|
# run tests
|
|
spawn {*}$run_tests
|
|
set tests_id $spawn_id
|
|
set status 1
|
|
# listen for test output in the background
|
|
expect_background {
|
|
* {
|
|
# show test output to the user
|
|
send_user -- $expect_out(buffer)
|
|
}
|
|
eof {
|
|
# collect the exit status code
|
|
set spawn_id $tests_id
|
|
catch wait result
|
|
set status [lindex $result 3]
|
|
set spawn_id $nvim_id
|
|
# quit nvim
|
|
send ":qa!\r"
|
|
}
|
|
}
|
|
# switch back nvim and wait until it exits
|
|
set spawn_id $nvim_id
|
|
expect eof
|
|
exit $status
|