Skip to content

Commit 75478ae

Browse files
committed
Refactored code and tests
1 parent 903596c commit 75478ae

File tree

4 files changed

+69
-79
lines changed

4 files changed

+69
-79
lines changed

ftplugin/julia.vim

Lines changed: 0 additions & 22 deletions
This file was deleted.

ftplugin/python.vim

Lines changed: 0 additions & 26 deletions
This file was deleted.

plugin/replica.vim

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,14 @@ if !has('vim9script') || v:version < 900
1111
finish
1212
endif
1313

14-
if exists('g:replica_loaded')
14+
if exists('g:replica_loaded') && g:replica_loaded
1515
finish
1616
endif
1717
g:replica_loaded = true
1818

19+
import "../lib/ftcommands_mappings.vim"
20+
import "../lib/highlight.vim"
21+
1922
# Other config parameters are handled in repl.Init()
2023

2124
# TODO: think if you can avoid using it as a g: variable
@@ -98,6 +101,31 @@ g:replica_run_commands = replica_run_commands_default
98101
# \ "julia": ""}
99102

100103

104+
# The following variable won't change during run-time
105+
def SetBufferVars()
106+
b:kernel_name = g:replica_kernels[&filetype]
107+
b:console_name = g:replica_console_names[&filetype]
108+
b:cells_delimiter = g:replica_cells_delimiters[&filetype]
109+
b:jupyter_console_options = g:replica_jupyter_console_options[&filetype]
110+
b:run_command = g:replica_run_commands[&filetype]
111+
112+
if g:replica_enable_highlight
113+
augroup highlight_cells
114+
autocmd! * <buffer>
115+
autocmd BufEnter,BufWinEnter,WinEnter,WinLeave <buffer>
116+
\ highlight.HighlightCell()
117+
autocmd CursorMoved,CursorMovedI <buffer>
118+
\ highlight.HighlightCell(true)
119+
augroup END
120+
endif
121+
122+
ftcommands_mappings.FtCommandsMappings()
123+
enddef
124+
125+
augroup delete_tmp_file
126+
autocmd FileType * SetBufferVars()
127+
augroup END
128+
101129
augroup delete_tmp_file
102130
autocmd VimLeave * delete(g:replica_tmp_filename)
103131
augroup END

test/test_replica.vim

Lines changed: 40 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,23 @@ def Cleanup_python_testfile()
3232
delete(src_name)
3333
enddef
3434

35+
def WaitPrompt(expected_prompt: string)
36+
# Wait for Jupyter Console to be up and running
37+
const bufnr = term_list()[0]
38+
var term_cursor_pos = term_getcursor(bufnr)
39+
var term_cursor = term_getline(bufnr, term_cursor_pos[0])
40+
41+
var count = 0
42+
const max_count = 15
43+
while term_cursor !~ expected_prompt && count < max_count
44+
redraw!
45+
term_cursor_pos = term_getcursor(bufnr)
46+
term_cursor = term_getline(bufnr, term_cursor_pos[0])
47+
count += 1
48+
sleep 1
49+
endwhile
50+
enddef
51+
3552
# Tests start here
3653
def g:Test_replica_basic()
3754
Generate_python_testfile()
@@ -41,30 +58,28 @@ def g:Test_replica_basic()
4158
# Start console
4259
exe ":ReplicaConsoleToggle"
4360
WaitForAssert(() => assert_equal(2, winnr('$')))
44-
# TODO: Check how to remove the sleep
45-
# It must be very generous otherwise the CI tests won't pass.
46-
sleep 6
47-
redraw!
4861

4962
var bufnr = term_list()[0]
50-
var term_cursor = term_getcursor(bufnr)
51-
var lastline = term_getline(bufnr, term_cursor[0])
52-
63+
var term_cursor_pos = term_getcursor(bufnr)
64+
var term_cursor = term_getline(bufnr, term_cursor_pos[0])
5365
var expected_prompt = '[1]'
54-
assert_true(lastline =~# expected_prompt)
66+
WaitPrompt(expected_prompt)
67+
68+
term_cursor_pos = term_getcursor(bufnr)
69+
var lastline = term_getline(bufnr, term_cursor_pos[0])
70+
assert_match(expected_prompt, lastline)
5571

5672
# ReplicaSendCell
5773
# {prompt_in_ipython_console: line_in_src_buffer}
5874
var prompts_lines = {2: 4, 3: 7, 4: 9}
5975

6076
for [prompt, line] in items(prompts_lines)
61-
exe ":ReplicaSendCell"
62-
sleep 2
63-
redraw!
6477
expected_prompt = prompt
65-
term_cursor = term_getcursor(bufnr)
66-
lastline = term_getline(bufnr, term_cursor[0])
67-
WaitForAssert(() => assert_true(lastline =~# expected_prompt))
78+
exe ":ReplicaSendCell"
79+
WaitPrompt($'[{prompt}]')
80+
term_cursor_pos = term_getcursor(bufnr)
81+
lastline = term_getline(bufnr, term_cursor_pos[0])
82+
assert_true(lastline =~# expected_prompt)
6883
assert_true(line('.') == line)
6984
endfor
7085

@@ -74,12 +89,11 @@ def g:Test_replica_basic()
7489

7590
for [prompt, line] in items(prompts_lines)
7691
exe ":ReplicaSendLine"
77-
sleep 1
78-
redraw!
92+
WaitPrompt($'[{prompt}]')
7993
expected_prompt = prompt
80-
term_cursor = term_getcursor(bufnr)
81-
lastline = term_getline(bufnr, term_cursor[0])
82-
WaitForAssert(() => assert_true(lastline =~# expected_prompt))
94+
term_cursor_pos = term_getcursor(bufnr)
95+
lastline = term_getline(bufnr, term_cursor_pos[0])
96+
assert_true(lastline =~# expected_prompt)
8397
assert_true(line('.') == line)
8498
endfor
8599

@@ -98,24 +112,20 @@ def g:Test_replica_basic()
98112

99113
# Restart kernel
100114
exe ":ReplicaConsoleRestart"
101-
sleep 5
102-
redraw!
103-
bufnr = term_list()[0]
104-
term_cursor = term_getcursor(bufnr)
105-
lastline = term_getline(bufnr, term_cursor[0])
106115
expected_prompt = '[1]'
116+
WaitPrompt(expected_prompt)
117+
bufnr = term_list()[0]
118+
term_cursor_pos = term_getcursor(bufnr)
119+
lastline = term_getline(bufnr, term_cursor_pos[0])
107120
WaitForAssert(() => assert_equal(2, winnr('$')))
108121
WaitForAssert(() => assert_true(lastline =~# expected_prompt))
109122

110123
# ReplicaSendFile
111124
exe ":ReplicaSendFile"
112-
sleep 3
113-
redraw!
114-
term_cursor = term_getcursor(bufnr)
115-
lastline = term_getline(bufnr, term_cursor[0])
116125
expected_prompt = '[2]'
117-
echom lastline
118-
sleep 2
126+
WaitPrompt(expected_prompt)
127+
term_cursor_pos = term_getcursor(bufnr)
128+
lastline = term_getline(bufnr, term_cursor_pos[0])
119129
WaitForAssert(() => assert_equal(2, winnr('$')))
120130
WaitForAssert(() => assert_true(lastline =~# expected_prompt))
121131

0 commit comments

Comments
 (0)