@@ -74,6 +74,22 @@ async def _(kernel_id, ready=None):
74
74
return _
75
75
76
76
77
+ @pytest .fixture ()
78
+ def rtc_test_notebook (jp_serverapp , rtc_create_notebook ):
79
+ async def _ (notebook , path = "test.ipynb" ):
80
+ nb_content = nbformat .writes (notebook , version = 4 )
81
+ returned_path , _ = await rtc_create_notebook (path , nb_content , store = True )
82
+ assert path == returned_path
83
+ document_id = get_document_id (jp_serverapp , "test.ipynb" )
84
+ return document_id
85
+
86
+
87
+ def get_document_id (jp_serverapp , notebook_name ):
88
+ fim = jp_serverapp .web_app .settings ["file_id_manager" ]
89
+ document_id = f'json:notebook:{ fim .get_id (notebook_name )} '
90
+ return document_id
91
+
92
+
77
93
@pytest .mark .timeout (2 * TEST_TIMEOUT )
78
94
@pytest .mark .parametrize (
79
95
"snippet,output" ,
@@ -92,26 +108,38 @@ async def _(kernel_id, ready=None):
92
108
"display('a'); print('b')" ,
93
109
(
94
110
'{"output_type": "display_data", "metadata": {}, "data": {"text/plain": "\' a\' "}}'
95
- ', {"output_type": "stream", "name": "stdout", "text": "b \\ n" }'
111
+ ', {"output_type": "stream", "name": "stdout", "text": ["b"] }'
96
112
)
97
113
)
98
114
),
99
115
)
100
- async def test_post_execute (jp_fetch , pending_kernel_is_ready , snippet , output ):
116
+ async def test_post_execute (jp_fetch , pending_kernel_is_ready , snippet , output , rtc_test_notebook ):
101
117
r = await jp_fetch (
102
118
"api" , "kernels" , method = "POST" , body = json .dumps ({"name" : NATIVE_KERNEL_NAME })
103
119
)
104
120
kernel = json .loads (r .body .decode ())
105
121
await pending_kernel_is_ready (kernel ["id" ])
106
122
123
+ nb = nbformat .v4 .new_notebook (
124
+ cells = [nbformat .v4 .new_code_cell (source = snippet )]
125
+ )
126
+ document_id = await rtc_test_notebook (nb )
127
+ cell_id = nb ["cells" ][0 ]["id" ]
128
+
107
129
response = await wait_for_request (
108
130
jp_fetch ,
109
131
"api" ,
110
132
"kernels" ,
111
133
kernel ["id" ],
112
134
"execute" ,
113
135
method = "POST" ,
114
- body = json .dumps ({"code" : snippet }),
136
+ body = json .dumps ({
137
+ "code" : snippet ,
138
+ "metadata" : {
139
+ "cell_id" : cell_id ,
140
+ "document_id" : document_id
141
+ }
142
+ }),
115
143
)
116
144
117
145
assert response .code == 200
@@ -230,17 +258,15 @@ async def fake_execute(client, ydoc, snippet, metadata, stdin_hook):
230
258
231
259
232
260
@pytest .mark .timeout (TEST_TIMEOUT )
233
- async def test_execution_timing_metadata (jp_root_dir , jp_fetch , pending_kernel_is_ready , rtc_create_notebook , jp_serverapp ):
261
+ async def test_execution_timing_metadata (jp_root_dir , jp_fetch , pending_kernel_is_ready , rtc_test_notebook , jp_serverapp ):
234
262
snippet = "a = 1"
235
263
nb = nbformat .v4 .new_notebook (
236
264
cells = [nbformat .v4 .new_code_cell (source = snippet , execution_count = 1 )]
237
265
)
238
- nb_content = nbformat . writes ( nb , version = 4 )
239
- path , _ = await rtc_create_notebook ( "test.ipynb" , nb_content , store = True )
266
+ path = "test.ipynb"
267
+ document_id = await rtc_test_notebook ( path = "test.ipynb" )
240
268
collaboration = jp_serverapp .web_app .settings ["jupyter_server_ydoc" ]
241
- fim = jp_serverapp .web_app .settings ["file_id_manager" ]
242
- document_id = f'json:notebook:{ fim .get_id ("test.ipynb" )} '
243
- cell_id = nb ["cells" ][0 ].get ("id" )
269
+ cell_id = nb ["cells" ][0 ]["id" ]
244
270
245
271
r = await jp_fetch (
246
272
"api" , "kernels" , method = "POST" , body = json .dumps ({"name" : NATIVE_KERNEL_NAME })
0 commit comments