Skip to content

Commit ecdf007

Browse files
authored
Port metadata fix (microsoft#151380)
* Fix for 151376 * Add unit test * Can't get tests to run with local bits, try submitting * Fix test to work
1 parent 87630a9 commit ecdf007

File tree

2 files changed

+20
-7
lines changed

2 files changed

+20
-7
lines changed

extensions/vscode-api-tests/src/singlefolder-tests/notebook.test.ts

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -263,14 +263,25 @@ const apiTestContentProvider: vscode.NotebookContentProvider = {
263263
const editor = await vscode.window.showNotebookDocument(notebook);
264264

265265
const notebookChangeEvent = asPromise<vscode.NotebookDocumentChangeEvent>(vscode.workspace.onDidChangeNotebookDocument);
266-
const version = editor.document.version;
267-
await editor.edit(editBuilder => {
268-
editBuilder.replaceCells(1, 0, [{ kind: vscode.NotebookCellKind.Code, languageId: 'javascript', value: 'test 2', outputs: [], metadata: undefined }]);
269-
editBuilder.replaceCellMetadata(0, { inputCollapsed: false });
270-
});
271-
266+
const version = editor.notebook.version;
267+
const edit = new vscode.WorkspaceEdit();
268+
const cellEdit = vscode.NotebookEdit.replaceCells(new vscode.NotebookRange(1, 0), [{ kind: vscode.NotebookCellKind.Code, languageId: 'javascript', value: 'test 2', outputs: [], metadata: undefined }]);
269+
const metdataEdit = vscode.NotebookEdit.updateNotebookMetadata({ ...notebook.metadata, custom: { ...(notebook.metadata.custom || {}), extraNotebookMetadata: true } });
270+
edit.set(notebook.uri, [cellEdit, metdataEdit]);
271+
await vscode.workspace.applyEdit(edit);
272272
await notebookChangeEvent;
273-
assert.strictEqual(version + 1, editor.document.version);
273+
274+
const notebookChangeEvent2 = asPromise<vscode.NotebookDocumentChangeEvent>(vscode.workspace.onDidChangeNotebookDocument);
275+
const edit2 = new vscode.WorkspaceEdit();
276+
const cellMetadataEdit = vscode.NotebookEdit.updateCellMetadata(0, { extraCellMetadata: true });
277+
edit2.set(notebook.uri, [cellMetadataEdit]);
278+
await vscode.workspace.applyEdit(edit2);
279+
await notebookChangeEvent2;
280+
281+
assert.strictEqual(version + 2, editor.notebook.version);
282+
const cell = editor.notebook.cellAt(0);
283+
assert.ok(editor.notebook.metadata.custom.extraNotebookMetadata, `Test metadata not found`);
284+
assert.ok(cell.metadata.extraCellMetadata, `Test cell metdata not found`);
274285
});
275286

276287
test('edit API batch edits undo/redo', async function () {

src/vs/workbench/api/common/extHostTypes.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -807,6 +807,8 @@ export class WorkspaceEdit implements vscode.WorkspaceEdit {
807807
if (NotebookEdit.isNotebookCellEdit(edit)) {
808808
if (edit.newCellMetadata) {
809809
this.replaceNotebookCellMetadata(uri, edit.range.start, edit.newCellMetadata);
810+
} else if (edit.newNotebookMetadata) {
811+
this.replaceNotebookMetadata(uri, edit.newNotebookMetadata);
810812
} else {
811813
this.replaceNotebookCells(uri, edit.range, edit.newCells);
812814
}

0 commit comments

Comments
 (0)