-
Notifications
You must be signed in to change notification settings - Fork 274
/
RegressionFileModifiedIndicationTest.re
69 lines (56 loc) · 1.76 KB
/
RegressionFileModifiedIndicationTest.re
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
open Oni_Core;
open Oni_Model;
open Oni_IntegrationTestLib;
// Regression test case covering #600:
// https://github.com/onivim/oni2/issues/600
//
// Verify some simple cases around the file modified flag
runTestWithInput(
~name="RegressionFileModifiedIndication",
(input, dispatch, wait, runEffects) => {
wait(~name="Initial mode is normal", (state: State.t) =>
Feature_Vim.mode(state.vim) == Vim.Mode.Normal
);
let initialBuffer = Vim.Buffer.getCurrent();
dispatch(
Actions.OpenFileByPath(
"regression-file-modified-indication.txt",
None,
None,
),
);
runEffects();
wait(~name="Wait for new buffer", (state: State.t) => {
let activeBufferId =
state
|> Selectors.getActiveBuffer
|> Option.map(Buffer.getId)
|> Option.value(~default=-1);
activeBufferId != Vim.Buffer.getId(initialBuffer);
});
let id = Vim.Buffer.getCurrent() |> Vim.Buffer.getId;
let _ = input("o");
let _ = input("a");
let validateBufferCondition = (f, state: State.t) => {
let buffer = Selectors.getBufferById(state, id);
switch (buffer) {
| Some(v) => f(v)
| None => false
};
};
wait(~name="Wait for modified flag to be set", (state: State.t) =>
validateBufferCondition(b => Buffer.isModified(b) == true, state)
);
// Save file, should clear modified flag
let _ = input("<esc>");
Vim.command("w") |> ignore;
wait(~name="Wait for modified flag to be set", (state: State.t) =>
validateBufferCondition(b => Buffer.isModified(b) == false, state)
);
// Make another modification, should set it again
let _ = input("o");
let _ = input("a");
wait(~name="Wait for modified flag to be set", (state: State.t) =>
validateBufferCondition(b => Buffer.isModified(b) == true, state)
);
});