Skip to content

Commit

Permalink
Fix #133645. Normalize EOL. (#170190)
Browse files Browse the repository at this point in the history
  • Loading branch information
rebornix committed Dec 28, 2022
1 parent 9ae0893 commit 9e3f384
Show file tree
Hide file tree
Showing 2 changed files with 83 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -68,12 +68,7 @@ class MirrorCell {

getValue(): string {
const fullRange = this.getFullModelRange();
const eol = this.textBuffer.getEOL();
if (eol === '\n') {
return this.textBuffer.getValueInRange(fullRange, model.EndOfLinePreference.LF);
} else {
return this.textBuffer.getValueInRange(fullRange, model.EndOfLinePreference.CRLF);
}
return this.textBuffer.getValueInRange(fullRange, model.EndOfLinePreference.LF);
}

getComparisonValue(): number {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,51 @@ suite('NotebookCommon', () => {
});
});

test('diff insert 3', async () => {

await withTestNotebookDiffModel([
['var a = 1;', 'javascript', CellKind.Code, [], {}],
['var b = 2;', 'javascript', CellKind.Code, [], {}],
['var c = 3;', 'javascript', CellKind.Code, [], {}],
['var d = 4;', 'javascript', CellKind.Code, [], {}],
['var e = 5;', 'javascript', CellKind.Code, [], {}],
['var f = 6;', 'javascript', CellKind.Code, [], {}],
['var g = 7;', 'javascript', CellKind.Code, [], {}],
], [
['var a = 1;', 'javascript', CellKind.Code, [], {}],
['var b = 2;', 'javascript', CellKind.Code, [], {}],
['var c = 3;', 'javascript', CellKind.Code, [], {}],
['var d = 4;', 'javascript', CellKind.Code, [], {}],
['var h = 8;', 'javascript', CellKind.Code, [], {}],
['var e = 5;', 'javascript', CellKind.Code, [], {}],
['var f = 6;', 'javascript', CellKind.Code, [], {}],
['var g = 7;', 'javascript', CellKind.Code, [], {}],
], async (model, accessor) => {
const eventDispatcher = new NotebookDiffEditorEventDispatcher();
const diffResult = NotebookTextDiffEditor.computeDiff(accessor, configurationService, model, eventDispatcher, {
cellsDiff: {
changes: [{
originalStart: 4,
originalLength: 0,
modifiedStart: 4,
modifiedLength: 1
}],
quitEarly: false
}
}, undefined);

// assert.strictEqual(diffResult.firstChangeIndex, 4);
assert.strictEqual(diffResult.viewModels[0].type, 'unchanged');
assert.strictEqual(diffResult.viewModels[1].type, 'unchanged');
assert.strictEqual(diffResult.viewModels[2].type, 'unchanged');
assert.strictEqual(diffResult.viewModels[3].type, 'unchanged');
assert.strictEqual(diffResult.viewModels[4].type, 'insert');
assert.strictEqual(diffResult.viewModels[5].type, 'unchanged');
assert.strictEqual(diffResult.viewModels[6].type, 'unchanged');
assert.strictEqual(diffResult.viewModels[7].type, 'unchanged');
});
});

test('LCS', async () => {
await withTestNotebookDiffModel([
['# Description', 'markdown', CellKind.Markup, [], { custom: { metadata: {} } }],
Expand Down Expand Up @@ -372,6 +417,43 @@ suite('NotebookCommon', () => {
});
});

test('LCS 3', async () => {
await withTestNotebookDiffModel([
['var a = 1;', 'javascript', CellKind.Code, [], {}],
['var b = 2;', 'javascript', CellKind.Code, [], {}],
['var c = 3;', 'javascript', CellKind.Code, [], {}],
['var d = 4;', 'javascript', CellKind.Code, [], {}],
['var e = 5;', 'javascript', CellKind.Code, [], {}],
['var f = 6;', 'javascript', CellKind.Code, [], {}],
['var g = 7;', 'javascript', CellKind.Code, [], {}],
], [
['var a = 1;', 'javascript', CellKind.Code, [], {}],
['var b = 2;', 'javascript', CellKind.Code, [], {}],
['var c = 3;', 'javascript', CellKind.Code, [], {}],
['var d = 4;', 'javascript', CellKind.Code, [], {}],
['var h = 8;', 'javascript', CellKind.Code, [], {}],
['var e = 5;', 'javascript', CellKind.Code, [], {}],
['var f = 6;', 'javascript', CellKind.Code, [], {}],
['var g = 7;', 'javascript', CellKind.Code, [], {}],
], async (model) => {
const diff = new LcsDiff(new CellSequence(model.original.notebook), new CellSequence(model.modified.notebook));
const diffResult = diff.ComputeDiff(false);
NotebookTextDiffEditor.prettyChanges(model, diffResult);

assert.deepStrictEqual(diffResult.changes.map(change => ({
originalStart: change.originalStart,
originalLength: change.originalLength,
modifiedStart: change.modifiedStart,
modifiedLength: change.modifiedLength
})), [{
originalStart: 4,
originalLength: 0,
modifiedStart: 4,
modifiedLength: 1
}]);
});
});

test('diff output', async () => {
await withTestNotebookDiffModel([
['x', 'javascript', CellKind.Code, [{ outputId: 'someOtherId', outputs: [{ mime: Mimes.text, data: VSBuffer.wrap(new Uint8Array([3])) }] }], { custom: { metadata: { collapsed: false } }, executionOrder: 3 }],
Expand Down

0 comments on commit 9e3f384

Please sign in to comment.