forked from Acode-Foundation/Acode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexec.tests.js
More file actions
130 lines (93 loc) · 3.28 KB
/
exec.tests.js
File metadata and controls
130 lines (93 loc) · 3.28 KB
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
import { TestRunner } from "./tester";
export async function runExecutorTests(writeOutput) {
const runner = new TestRunner("Executor API Tests");
runner.test("Executor available", async (test) => {
test.assert(
typeof Executor !== "undefined",
"Executor should be available globally",
);
});
runner.test("Background Executor available", async (test) => {
test.assert(
typeof Executor.BackgroundExecutor !== "undefined",
"Background Executor should be available globally",
);
});
runner.test("execute()", async (test) => {
test.assert(
(await Executor.execute("echo test123")).includes("test123"),
"Command output should match",
);
});
runner.test("execute() (BackgroundExecutor)", async (test) => {
test.assert(
(await Executor.BackgroundExecutor.execute("echo test123")).includes(
"test123",
),
"Command output should match",
);
});
runner.test("start()", async (test) => {
let stdout = "";
const uuid = await Executor.start("sh", (type, data) => {
if (type === "stdout") stdout += data;
});
await Executor.write(uuid, "echo hello\n");
await new Promise((r) => setTimeout(r, 200));
await Executor.stop(uuid);
await new Promise((r) => setTimeout(r, 200));
test.assert(stdout.includes("hello"), "Shell should echo output");
});
runner.test("start() (BackgroundExecutor)", async (test) => {
let stdout = "";
const uuid = await Executor.BackgroundExecutor.start("sh", (type, data) => {
if (type === "stdout") stdout += data;
});
await Executor.BackgroundExecutor.write(uuid, "echo hello\n");
await new Promise((r) => setTimeout(r, 200));
await Executor.BackgroundExecutor.stop(uuid);
await new Promise((r) => setTimeout(r, 200));
test.assert(stdout.includes("hello"), "Shell should echo output");
});
runner.test("start/stop() (BackgroundExecutor)", async (test) => {
let stdout = "";
const uuid = await Executor.BackgroundExecutor.start(
"sh",
(type, data) => {},
);
await new Promise((r) => setTimeout(r, 200));
const isRunning = await Executor.BackgroundExecutor.isRunning(uuid);
test.assert(isRunning === true, "Executor must be running");
await new Promise((r) => setTimeout(r, 200));
await Executor.BackgroundExecutor.stop(uuid);
await new Promise((r) => setTimeout(r, 200));
test.assert(
isRunning !== (await Executor.BackgroundExecutor.isRunning(uuid)),
"Executor must be stopped",
);
test.assert(
(await Executor.BackgroundExecutor.isRunning(uuid)) === false,
"Executor must be stopped",
);
});
runner.test("start/stop()", async (test) => {
let stdout = "";
const uuid = await Executor.start("sh", (type, data) => {});
await new Promise((r) => setTimeout(r, 200));
const isRunning = await Executor.isRunning(uuid);
test.assert(isRunning === true, "Executor must be running");
await new Promise((r) => setTimeout(r, 200));
await Executor.stop(uuid);
await new Promise((r) => setTimeout(r, 200));
test.assert(
(await Executor.isRunning(uuid)) === false,
"Executor must be stopped",
);
});
runner.test("FDROID env variable", async (test) => {
const result = await Executor.execute("echo $FDROID");
const isSet = result.trim().length > 0;
test.assert(isSet, "FDROID env variable should be set");
});
return await runner.run(writeOutput);
}