func()

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)
}