aboutsummaryrefslogtreecommitdiff
path: root/test/functional/terminal/api_spec.lua
blob: 93641fc576fdb9ae214b6b83572e6811bf58bf8f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
local helpers = require('test.functional.helpers')(after_each)
local child_session = require('test.functional.terminal.helpers')
local ok = helpers.ok

if helpers.skip(helpers.is_os('win')) then return end

describe('api', function()
  local screen
  local socket_name = "./Xtest_functional_api.sock"

  before_each(function()
    helpers.clear()
    os.remove(socket_name)
    screen = child_session.screen_setup(0, '["'..helpers.nvim_prog
      ..'", "-u", "NONE", "-i", "NONE", "--cmd", "'..helpers.nvim_set..'"]')
  end)
  after_each(function()
    os.remove(socket_name)
  end)

  it("qa! RPC request during insert-mode", function()
    screen:expect{grid=[[
      {1: }                                                 |
      {4:~                                                 }|
      {4:~                                                 }|
      {4:~                                                 }|
      {4:~                                                 }|
                                                        |
      {3:-- TERMINAL --}                                    |
    ]]}

    -- Start the socket from the child nvim.
    child_session.feed_data(":echo serverstart('"..socket_name.."')\n")

    -- Wait for socket creation.
    screen:expect([[
      {1: }                                                 |
      {4:~                                                 }|
      {4:~                                                 }|
      {4:~                                                 }|
      {4:~                                                 }|
      ]]..socket_name..[[                       |
      {3:-- TERMINAL --}                                    |
    ]])

    local socket_session1 = helpers.connect(socket_name)
    local socket_session2 = helpers.connect(socket_name)

    child_session.feed_data("i[tui] insert-mode")
    -- Wait for stdin to be processed.
    screen:expect([[
      [tui] insert-mode{1: }                                |
      {4:~                                                 }|
      {4:~                                                 }|
      {4:~                                                 }|
      {4:~                                                 }|
      {3:-- INSERT --}                                      |
      {3:-- TERMINAL --}                                    |
    ]])

    ok((socket_session1:request("nvim_ui_attach", 42, 6, {rgb=true})))
    ok((socket_session2:request("nvim_ui_attach", 25, 30, {rgb=true})))

    socket_session1:notify("nvim_input", "\n[socket 1] this is more than 25 columns")
    socket_session2:notify("nvim_input", "\n[socket 2] input")

    screen:expect([[
      [tui] insert-mode                                 |
      [socket 1] this is more t                         |
      han 25 columns                                    |
      [socket 2] input{1: }                                 |
      {4:~                        }                         |
      {3:-- INSERT --}                                      |
      {3:-- TERMINAL --}                                    |
    ]])

    socket_session1:request("nvim_command", "qa!")
  end)
end)