in jupytertestutil/jupytertestutil.go [478:514]
func (m *mockJupyter) updateSession(w http.ResponseWriter, r *http.Request, sessionID string, s *resources.Session) {
var updated resources.Session = *s
if path, ok := updated.Notebook["path"]; ok {
updated.Path = path
}
if len(updated.Path) > 0 {
updated.Notebook["path"] = updated.Path
}
m.mu.Lock()
orig, ok := m.sessions[sessionID]
if !ok {
http.NotFound(w, r)
return
}
m.mu.Unlock()
if orig.Kernel != nil && (updated.Kernel == nil || orig.Kernel.ID != updated.Kernel.ID) {
delete(m.kernels, orig.Kernel.ID)
orig.Kernel = nil
}
if orig.Kernel == nil && updated.Kernel != nil {
inserted, err := m.insertKernel(updated.Kernel)
if err != nil {
http.Error(w, err.Error(), util.HTTPStatusCode(err))
return
}
updated.Kernel = inserted
}
m.mu.Lock()
defer m.mu.Unlock()
m.sessions[sessionID] = &updated
resp, err := json.Marshal(&updated)
if err != nil {
http.Error(w, fmt.Sprintf("failed to marshal session: %v", err), http.StatusInternalServerError)
return
}
w.Write(resp)
}