Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sagemathinc
GitHub Repository: sagemathinc/cocalc
Path: blob/master/src/packages/jupyter/kernel/test/kernel-execute-code.test.ts
1449 views
1
/*
2
There are a lot of ideas for tests in this bitrotted place:
3
4
https://github.com/sagemathinc/cocalc/tree/master/src/packages/project/jupyter/test
5
6
pnpm test `pwd`/kernel-execute-code.test.ts
7
*/
8
9
import { getPythonKernel, closeKernels } from "./util";
10
11
describe("a kernel implicitly spawns when you execute code", () => {
12
let k;
13
it("get and do NOT spawn a python kernel", async () => {
14
k = await getPythonKernel("python-spawn.ipynb");
15
});
16
17
it("start some code running and see spawning is automatic", async () => {
18
const code = "import os; os.getpid()";
19
const output = k.execute_code({ code });
20
for await (const out of output.iter()) {
21
if (out.content?.code) {
22
expect(out.content.code).toBe(code);
23
}
24
if (out.content?.data) {
25
const pid = out.content?.data["text/plain"];
26
expect(parseInt(pid)).toEqual(k.pid());
27
break;
28
}
29
}
30
});
31
32
it("cleans up", () => {
33
k.close();
34
});
35
});
36
37
describe("test execute_code_now and chdir", () => {
38
let k;
39
it("get a python kernel", async () => {
40
k = await getPythonKernel("python-chdir.ipynb");
41
});
42
43
it("also test the execute_code_now method", async () => {
44
const out = await k.execute_code_now({ code: "2+3" });
45
const v = out.filter((x) => x.content?.data);
46
expect(v[0].content.data["text/plain"]).toBe("5");
47
});
48
49
it("also test the chdir method", async () => {
50
// before
51
const out = await k.execute_code_now({ code: "import os; os.curdir" });
52
const v = out.filter((x) => x.content?.data);
53
expect(v[0].content.data["text/plain"]).toBe("'.'");
54
55
await k.chdir("/tmp");
56
const out2 = await k.execute_code_now({
57
code: "os.path.abspath(os.curdir)",
58
});
59
const v2 = out2.filter((x) => x.content?.data);
60
expect(v2[0].content.data["text/plain"]).toBe("'/tmp'");
61
});
62
63
it("cleans up", () => {
64
k.close();
65
});
66
});
67
68
afterAll(() => {
69
closeKernels();
70
});
71
72