Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Avatar for KuCalc : devops.
Download
50660 views
1
2
expect = require('expect')
3
4
common = require('./common')
5
6
output_equals = (v, data) ->
7
for x in v
8
if x.content?.data?
9
expect(x.content.data).toEqual(data)
10
11
12
describe 'compute 2+2 using the python2 kernel -- ', ->
13
@timeout(5000)
14
kernel = undefined
15
16
it 'creates a python2 kernel', ->
17
kernel = common.kernel('python2')
18
19
it 'evaluate 2+7', (done) ->
20
v = []
21
kernel.execute_code
22
code : '2+7'
23
all : true
24
cb : (err, v) ->
25
if err
26
done(err)
27
else
28
output_equals(v, {"text/plain":"9"})
29
done()
30
31
it 'closes the kernel', ->
32
kernel.close()
33
expect(kernel._state).toBe('closed')
34
expect(kernel._kernel).toBe(undefined)
35
expect(kernel._channels).toBe(undefined)
36
37
it 'verifies that executing code after closing the kernel gives an appropriate error', (done) ->
38
kernel.execute_code
39
code : '2+2'
40
cb : (err) ->
41
expect(err).toBe('closed')
42
done()
43
44
describe 'compute 2/3 using the python3 kernel -- ', ->
45
@timeout(5000)
46
kernel = undefined
47
48
it 'creates a python3 kernel', ->
49
kernel = common.kernel('python3')
50
51
it 'evaluate 2/3', (done) ->
52
v = []
53
kernel.execute_code
54
code : '2/3'
55
all : true
56
cb : (err, v) ->
57
if err
58
done(err)
59
else
60
output_equals(v, {"text/plain":"0.6666666666666666"})
61
done()
62
63
it 'closes the kernel', ->
64
kernel.close()
65
expect(kernel._state).toBe('closed')
66
expect(kernel._kernel).toBe(undefined)
67
68
describe 'it tries to start a kernel that does not exist -- ', ->
69
kernel = undefined
70
71
it 'creates a foobar kernel', ->
72
kernel = common.kernel('foobar')
73
expect(kernel._state).toBe('off')
74
75
it 'then tries to use it, which will fail', (done) ->
76
kernel.execute_code
77
code : '2/3'
78
all : true
79
cb : (err, mesg) ->
80
expect(mesg).toBe(undefined)
81
expect(err).toBe('Error: No spec available for foobar')
82
done()
83
84
describe 'calling the spawn method -- ', ->
85
kernel = undefined
86
@timeout(5000)
87
88
it 'creates a python2 kernel', ->
89
kernel = common.kernel('python2')
90
expect(kernel._state).toBe('off')
91
92
it 'observes state switches to running', (done) ->
93
kernel.on 'state', (state) ->
94
if state != 'running'
95
return
96
kernel.removeAllListeners()
97
kernel.close()
98
done()
99
kernel.spawn (err) ->
100
expect(err).toBe(undefined)
101
102
describe 'send signals to a kernel -- ', ->
103
kernel = undefined
104
@timeout(5000)
105
106
it 'creates a python2 kernel', ->
107
kernel = common.kernel('python2')
108
109
it 'compute 2+2 to get things going', (done) ->
110
kernel.execute_code(code:'2+2', all:true, cb:done)
111
112
it 'start a long sleep running... and interrupt it', (done) ->
113
kernel.execute_code
114
code : 'import time; time.sleep(1000)'
115
all : true
116
cb : (err, data) ->
117
expect(data?[2]?.content?.ename).toBe('KeyboardInterrupt')
118
done(err)
119
# send an interrupt signal to stop the above...
120
setTimeout((->kernel.signal('SIGINT')), 250)
121
122
it 'send a kill signal', (done) ->
123
kernel.on 'state', (state) ->
124
expect(state).toBe('closed')
125
done()
126
kernel.signal('SIGKILL')
127
128
describe 'start a kernel in a different directory -- ', ->
129
kernel = undefined
130
@timeout(5000)
131
132
it 'creates a python2 kernel in current dir', (done) ->
133
kernel = common.kernel('python2')
134
kernel.execute_code
135
code : 'import os; print(os.path.abspath("."))'
136
all : true
137
cb : (err, data) ->
138
if err
139
done(err)
140
return
141
path = data?[2]?.content?.text?.trim()
142
if not path?
143
done("output failed")
144
return
145
path = path.slice(path.length-7)
146
expect(path).toBe('jupyter')
147
done()
148
149
it 'creates a python2 kernel with path test/a.ipynb2', (done) ->
150
kernel = common.kernel('python2', 'test/a.ipynb2')
151
kernel.execute_code
152
code : 'import os; print(os.path.abspath("."))'
153
all : true
154
cb : (err, data) ->
155
if err
156
done(err)
157
return
158
path = data?[2]?.content?.text?.trim()
159
if not path?
160
done("output failed")
161
return
162
path = path.slice(path.length-5)
163
expect(path).toBe('/test')
164
done(err)
165
166
describe 'use the key:value store -- ', ->
167
kernel = undefined
168
@timeout(5000)
169
170
it 'creates a python2 kernel', ->
171
kernel = common.kernel('python2')
172
173
it 'tests setting the store', ->
174
kernel.store.set({a:5, b:7}, {the:'value'})
175
expect(kernel.store.get({b:7, a:5})).toEqual({the:'value'})
176
177
it 'tests deleting from the store', ->
178
kernel.store.delete({a:5, b:7})
179
expect(kernel.store.get({b:7, a:5})).toBe(undefined)
180
181
182
183