Path: blob/main/extensions/copilot/script/test/scoredEditsReconciler.spec.ts
13389 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { expect, suite, test } from 'vitest';6import { resolveMergeConflict } from '../scoredEditsReconciler';78suite('can resolve merge conflicts', () => {9test('1', () => {10const fileContents = `{11"$web-editor.format-json": true,12"$web-editor.default-url": "https://microsoft.github.io/vscode-workbench-recorder-viewer/?editRating",13"edits": [14{15"documentUri": "file:///users/ulugbekna/code/vscode-copilot/../../../../Users/ulugbekna/code/vscode-copilot/src/extension/inlineEdits/vscode-node/lastEditTimeTracker.ts",16"edit": null,17"scoreCategory": "bad",18"score": 019},20{21"documentUri": "file:///users/ulugbekna/code/vscode-copilot/../../../../Users/ulugbekna/code/vscode-copilot/src/extension/inlineEdits/vscode-node/lastEditTimeTracker.ts",22"edit": [23[241295,251295,26");\\n\\t}\\n\\n\\tresetLastEditTime() {\\n\\t\\tthis._lastEditTime.set(undefined, undefined"27]28],29"scoreCategory": "bad",30"score": 031},32{33"documentUri": "file:///users/ulugbekna/code/vscode-copilot/../../../../Users/ulugbekna/code/vscode-copilot/src/extension/inlineEdits/vscode-node/lastEditTimeTracker.ts",34"edit": [35[361295,371295,38");\\n\\t}\\n\\t\\n\\tpublic getLastEditTime(): number | undefined {\\n\\t\\treturn this._lastEditTime.get("39]40],41"scoreCategory": "bad",42"score": 043},44{45"documentUri": "file:///users/ulugbekna/code/vscode-copilot/../../../../Users/ulugbekna/code/vscode-copilot/src/extension/inlineEdits/vscode-node/lastEditTimeTracker.ts",46"edit": [47[48787,49864,50"lastEditTime !== undefined && Date.now() - lastEditTime"51]52],53"scoreCategory": "nextEdit",54"score": 055},56{57"documentUri": "file:///users/ulugbekna/code/vscode-copilot/../../../../Users/ulugbekna/code/vscode-copilot/src/extension/inlineEdits/vscode-node/lastEditTimeTracker.ts",58"edit": [59[60780,61893,62"if (lastEditTime === undefined) {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t\\treturn Date.now() - lastEditTime < 5000"63]64],65"scoreCategory": "nextEdit",66"score": 067},68{69"documentUri": "file:///users/ulugbekna/code/vscode-copilot/../../../../Users/ulugbekna/code/vscode-copilot/src/extension/inlineEdits/vscode-node/lastEditTimeTracker.ts",70"edit": [71[72780,73893,74"if (lastEditTime === undefined) {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t\\treturn Date.now() - lastEditTime < 1000"75]76],77"scoreCategory": "nextEdit",78"score": 079},80{81"documentUri": "file:///users/ulugbekna/code/vscode-copilot/../../../../Users/ulugbekna/code/vscode-copilot/src/extension/inlineEdits/vscode-node/lastEditTimeTracker.ts",82"edit": [83[84787,85893,86"lastEditTime !== undefined && Date.now() - lastEditTime < 30 * 1000 /* "87]88],89"scoreCategory": "bad",90"score": 091},92{93"documentUri": "file:///users/ulugbekna/code/vscode-copilot/../../../../Users/ulugbekna/code/vscode-copilot/src/extension/inlineEdits/vscode-node/lastEditTimeTracker.ts",94"edit": [95[96787,97893,98"lastEditTime !== undefined && Date.now() - lastEditTime < 30 * 1000"99]100],101"scoreCategory": "nextEdit",102"score": 0103},104{105"documentUri": "file:///users/ulugbekna/code/vscode-copilot/../../../../Users/ulugbekna/code/vscode-copilot/src/extension/inlineEdits/vscode-node/lastEditTimeTracker.ts",106"edit": [107[108<<<<<<< HEAD109893,110893,111";\\n\\t}\\n\\n\\tresetLastEditTime() {\\n\\t\\tthis._lastEditTime.set(undefined, undefined)"112]113],114"scoreCategory": "bad",115=======116787,117894,118"lastEditTime !== undefined && (Date.now() - lastEditTime) < 5000; // 5 seconds"119]120],121"scoreCategory": "nextEdit",122"score": 0123},124{125"documentUri": "file:///users/ulugbekna/code/vscode-copilot/../../../../Users/ulugbekna/code/vscode-copilot/src/extension/inlineEdits/vscode-node/lastEditTimeTracker.ts",126"edit": [127[128787,129894,130"lastEditTime !== undefined && Date.now() - lastEditTime < 5000; // 5 seconds"131]132],133"scoreCategory": "nextEdit",134>>>>>>> a60bc6ab1 (nes: nearby: trim system message and run and score stests)135"score": 0136}137],138"scoringContext": {139"kind": "recording",140"recording": {141"log": [142{143"kind": "meta",144"data": {145"kind": "log-origin",146"uuid": "a29a16dc-e6a3-41a7-9ebc-6c83958f00c9",147"repoRootUri": "file:///users/ulugbekna/code/vscode-copilot",148"opStart": 54006,149"opEndEx": 54298150}151},152{153"kind": "documentEncountered",154"id": 1,155"time": 1733841300283,156"relativePath": "../../../../Users/ulugbekna/code/vscode-copilot/src/extension/inlineEdits/vscode-node/lastEditTimeTracker.ts"157},158{159"kind": "setContent",160"id": 1,161"time": 1733841300283,162"content": "/*---------------------------------------------------------------------------------------------\\n * Copyright (c) Microsoft Corporation and GitHub. All rights reserved.\\n *--------------------------------------------------------------------------------------------*/\\n\\nimport { Disposable } from '../../../util/vs/base/common/lifecycle';\\nimport { mapObservableArrayCached, observableValue, runOnChange } from '../../../util/vs/base/common/observable';\\nimport { VSCodeWorkspace } from './vscodeWorkspace';\\n\\nexport class LastEditTimeTracker extends Disposable {\\n\\n\\tprivate readonly _lastEditTime = observableValue<number | undefined>(this, undefined);\\n\\tpublic readonly lastEditTime = this._lastEditTime;\\n\\n\\tconstructor(\\n\\t\\tworkspace: VSCodeWorkspace,\\n\\t) {\\n\\t\\tsuper();\\n\\n\\t\\tmapObservableArrayCached(this, workspace.openDocuments, (doc, store) => {\\n\\t\\t\\tstore.add(runOnChange(doc.value, (_curState, _oldState, deltas) => {\\n\\t\\t\\t\\tif (deltas.length > 0 && deltas.some(edit => edit.edits.length > 0)) {\\n\\t\\t\\t\\t\\tthis._lastEditTime.set(Date.now(), undefined);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}));\\n\\t\\t}).recomputeInitiallyAndOnChange(this._store);\\n\\t}\\n}\\n",163"v": 2983164},165{166"kind": "changed",167"id": 1,168"time": 1733841247985,169"edit": [170[171648,172648,173"// "174]175],176"v": 2986177},178{179"kind": "changed",180"id": 1,181"time": 1733841249517,182"edit": [183[184701,185701,186"\\n\\t\\n\\t"187]188],189"v": 2998190},191{192"kind": "changed",193"id": 1,194"time": 1733841250520,195"edit": [196[197702,198703,199""200]201],202"v": 3002203},204{205"kind": "changed",206"id": 1,207"time": 1733841250833,208"edit": [209[210704,211704,212"get "213]214],215"v": 3017216},217{218"kind": "changed",219"id": 1,220"time": 1733841253100,221"edit": [222[223703,224708,225"\\tget lastEditTime() {\\n\\t}"226]227],228"v": 3029229},230{231"kind": "changed",232"id": 1,233"time": 1733841254916,234"edit": [235[236708,237720,238""239]240],241"v": 3035242},243{244"kind": "changed",245"id": 1,246"time": 1733841260333,247"edit": [],248"v": 3050249},250{251"kind": "changed",252"id": 1,253"time": 1733841262639,254"edit": [255[256708,257708,258"hadEdits"259]260],261"v": 3082262},263{264"kind": "changed",265"id": 1,266"time": 1733841267155,267"edit": [268[269716,270716,271"Recently"272]273],274"v": 3122275},276{277"kind": "changed",278"id": 1,279"time": 1733841269428,280"edit": [281[282728,283728,284"\\n\\t\\t"285]286],287"v": 3127288},289{290"kind": "changed",291"id": 1,292"time": 1733841275244,293"edit": [294[295729,296731,297"\\t\\treturn this._lastEditTime.get() !== undefined && Date.now() - this._lastEditTime.get() < 1000;"298]299],300"v": 3131301},302{303"kind": "changed",304"id": 1,305"time": 1733841278240,306"edit": [307[308820,309824,310"30000"311]312],313"v": 3167314},315{316"kind": "changed",317"id": 1,318"time": 1733841286372,319"edit": [320[321820,322825,323"30 * 1000 /* "324]325],326"v": 3264327},328{329"kind": "changed",330"id": 1,331"time": 1733841287540,332"edit": [333[334729,335834,336"\\t\\treturn this._lastEditTime.get() !== undefined && Date.now() - this._lastEditTime.get() < 30 * 1000 /* 30 seconds */;"337]338],339"v": 3268340},341{342"kind": "changed",343"id": 1,344"time": 1733841293443,345"edit": [346[347811,348817,349"."350]351],352"v": 3308353},354{355"kind": "changed",356"id": 1,357"time": 1733841294858,358"edit": [359[360812,361812,362"get"363]364],365"v": 3320366},367{368"kind": "changed",369"id": 1,370"time": 1733841298602,371"edit": [372[373728,374728,375"\\n\\t\\tconst "376]377],378"v": 3350379},380{381"kind": "changed",382"id": 1,383"time": 1733841300283,384"edit": [385[386729,387737,388"\\t\\tconst lastEditTime = this._lastEditTime.get();"389]390],391"v": 3354392}393],394"nextUserEdit": {395"edit": [396[397787,398811,399"lastEditTime"400],401[402842,403864,404"lastEditTime"405]406],407"relativePath": "../../../../Users/ulugbekna/code/vscode-copilot/src/extension/inlineEdits/vscode-node/lastEditTimeTracker.ts",408"originalOpIdx": 54392409}410}411}412}`;413414const resolvedFile = resolveMergeConflict(fileContents);415416expect(resolvedFile).toMatchInlineSnapshot(`417"{418"$web-editor.format-json": true,419"$web-editor.default-url": "https://microsoft.github.io/vscode-workbench-recorder-viewer/?editRating",420"edits": [421{422"documentUri": "file:///users/ulugbekna/code/vscode-copilot/../../../../Users/ulugbekna/code/vscode-copilot/src/extension/inlineEdits/vscode-node/lastEditTimeTracker.ts",423"edit": null,424"scoreCategory": "bad",425"score": 0426},427{428"documentUri": "file:///users/ulugbekna/code/vscode-copilot/../../../../Users/ulugbekna/code/vscode-copilot/src/extension/inlineEdits/vscode-node/lastEditTimeTracker.ts",429"edit": [430[4311295,4321295,433");\\n\\t}\\n\\n\\tresetLastEditTime() {\\n\\t\\tthis._lastEditTime.set(undefined, undefined"434]435],436"scoreCategory": "bad",437"score": 0438},439{440"documentUri": "file:///users/ulugbekna/code/vscode-copilot/../../../../Users/ulugbekna/code/vscode-copilot/src/extension/inlineEdits/vscode-node/lastEditTimeTracker.ts",441"edit": [442[4431295,4441295,445");\\n\\t}\\n\\t\\n\\tpublic getLastEditTime(): number | undefined {\\n\\t\\treturn this._lastEditTime.get("446]447],448"scoreCategory": "bad",449"score": 0450},451{452"documentUri": "file:///users/ulugbekna/code/vscode-copilot/../../../../Users/ulugbekna/code/vscode-copilot/src/extension/inlineEdits/vscode-node/lastEditTimeTracker.ts",453"edit": [454[455787,456864,457"lastEditTime !== undefined && Date.now() - lastEditTime"458]459],460"scoreCategory": "nextEdit",461"score": 0462},463{464"documentUri": "file:///users/ulugbekna/code/vscode-copilot/../../../../Users/ulugbekna/code/vscode-copilot/src/extension/inlineEdits/vscode-node/lastEditTimeTracker.ts",465"edit": [466[467780,468893,469"if (lastEditTime === undefined) {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t\\treturn Date.now() - lastEditTime < 5000"470]471],472"scoreCategory": "nextEdit",473"score": 0474},475{476"documentUri": "file:///users/ulugbekna/code/vscode-copilot/../../../../Users/ulugbekna/code/vscode-copilot/src/extension/inlineEdits/vscode-node/lastEditTimeTracker.ts",477"edit": [478[479780,480893,481"if (lastEditTime === undefined) {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t\\treturn Date.now() - lastEditTime < 1000"482]483],484"scoreCategory": "nextEdit",485"score": 0486},487{488"documentUri": "file:///users/ulugbekna/code/vscode-copilot/../../../../Users/ulugbekna/code/vscode-copilot/src/extension/inlineEdits/vscode-node/lastEditTimeTracker.ts",489"edit": [490[491787,492893,493"lastEditTime !== undefined && Date.now() - lastEditTime < 30 * 1000 /* "494]495],496"scoreCategory": "bad",497"score": 0498},499{500"documentUri": "file:///users/ulugbekna/code/vscode-copilot/../../../../Users/ulugbekna/code/vscode-copilot/src/extension/inlineEdits/vscode-node/lastEditTimeTracker.ts",501"edit": [502[503787,504893,505"lastEditTime !== undefined && Date.now() - lastEditTime < 30 * 1000"506]507],508"scoreCategory": "nextEdit",509"score": 0510},511{512"documentUri": "file:///users/ulugbekna/code/vscode-copilot/../../../../Users/ulugbekna/code/vscode-copilot/src/extension/inlineEdits/vscode-node/lastEditTimeTracker.ts",513"edit": [514[515893,516893,517";\\n\\t}\\n\\n\\tresetLastEditTime() {\\n\\t\\tthis._lastEditTime.set(undefined, undefined)"518]519],520"scoreCategory": "bad",521"score": 0522},523{524"documentUri": "file:///users/ulugbekna/code/vscode-copilot/../../../../Users/ulugbekna/code/vscode-copilot/src/extension/inlineEdits/vscode-node/lastEditTimeTracker.ts",525"edit": [526[527787,528894,529"lastEditTime !== undefined && (Date.now() - lastEditTime) < 5000; // 5 seconds"530]531],532"scoreCategory": "nextEdit",533"score": 0534},535{536"documentUri": "file:///users/ulugbekna/code/vscode-copilot/../../../../Users/ulugbekna/code/vscode-copilot/src/extension/inlineEdits/vscode-node/lastEditTimeTracker.ts",537"edit": [538[539787,540894,541"lastEditTime !== undefined && Date.now() - lastEditTime < 5000; // 5 seconds"542]543],544"scoreCategory": "nextEdit",545"score": 0546}547],548"scoringContext": {549"kind": "recording",550"recording": {551"log": [552{553"kind": "meta",554"data": {555"kind": "log-origin",556"uuid": "a29a16dc-e6a3-41a7-9ebc-6c83958f00c9",557"repoRootUri": "file:///users/ulugbekna/code/vscode-copilot",558"opStart": 54006,559"opEndEx": 54298560}561},562{563"kind": "documentEncountered",564"id": 1,565"time": 1733841300283,566"relativePath": "../../../../Users/ulugbekna/code/vscode-copilot/src/extension/inlineEdits/vscode-node/lastEditTimeTracker.ts"567},568{569"kind": "setContent",570"id": 1,571"time": 1733841300283,572"content": "/*---------------------------------------------------------------------------------------------\\n * Copyright (c) Microsoft Corporation and GitHub. All rights reserved.\\n *--------------------------------------------------------------------------------------------*/\\n\\nimport { Disposable } from '../../../util/vs/base/common/lifecycle';\\nimport { mapObservableArrayCached, observableValue, runOnChange } from '../../../util/vs/base/common/observable';\\nimport { VSCodeWorkspace } from './vscodeWorkspace';\\n\\nexport class LastEditTimeTracker extends Disposable {\\n\\n\\tprivate readonly _lastEditTime = observableValue<number | undefined>(this, undefined);\\n\\tpublic readonly lastEditTime = this._lastEditTime;\\n\\n\\tconstructor(\\n\\t\\tworkspace: VSCodeWorkspace,\\n\\t) {\\n\\t\\tsuper();\\n\\n\\t\\tmapObservableArrayCached(this, workspace.openDocuments, (doc, store) => {\\n\\t\\t\\tstore.add(runOnChange(doc.value, (_curState, _oldState, deltas) => {\\n\\t\\t\\t\\tif (deltas.length > 0 && deltas.some(edit => edit.edits.length > 0)) {\\n\\t\\t\\t\\t\\tthis._lastEditTime.set(Date.now(), undefined);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}));\\n\\t\\t}).recomputeInitiallyAndOnChange(this._store);\\n\\t}\\n}\\n",573"v": 2983574},575{576"kind": "changed",577"id": 1,578"time": 1733841247985,579"edit": [580[581648,582648,583"// "584]585],586"v": 2986587},588{589"kind": "changed",590"id": 1,591"time": 1733841249517,592"edit": [593[594701,595701,596"\\n\\t\\n\\t"597]598],599"v": 2998600},601{602"kind": "changed",603"id": 1,604"time": 1733841250520,605"edit": [606[607702,608703,609""610]611],612"v": 3002613},614{615"kind": "changed",616"id": 1,617"time": 1733841250833,618"edit": [619[620704,621704,622"get "623]624],625"v": 3017626},627{628"kind": "changed",629"id": 1,630"time": 1733841253100,631"edit": [632[633703,634708,635"\\tget lastEditTime() {\\n\\t}"636]637],638"v": 3029639},640{641"kind": "changed",642"id": 1,643"time": 1733841254916,644"edit": [645[646708,647720,648""649]650],651"v": 3035652},653{654"kind": "changed",655"id": 1,656"time": 1733841260333,657"edit": [],658"v": 3050659},660{661"kind": "changed",662"id": 1,663"time": 1733841262639,664"edit": [665[666708,667708,668"hadEdits"669]670],671"v": 3082672},673{674"kind": "changed",675"id": 1,676"time": 1733841267155,677"edit": [678[679716,680716,681"Recently"682]683],684"v": 3122685},686{687"kind": "changed",688"id": 1,689"time": 1733841269428,690"edit": [691[692728,693728,694"\\n\\t\\t"695]696],697"v": 3127698},699{700"kind": "changed",701"id": 1,702"time": 1733841275244,703"edit": [704[705729,706731,707"\\t\\treturn this._lastEditTime.get() !== undefined && Date.now() - this._lastEditTime.get() < 1000;"708]709],710"v": 3131711},712{713"kind": "changed",714"id": 1,715"time": 1733841278240,716"edit": [717[718820,719824,720"30000"721]722],723"v": 3167724},725{726"kind": "changed",727"id": 1,728"time": 1733841286372,729"edit": [730[731820,732825,733"30 * 1000 /* "734]735],736"v": 3264737},738{739"kind": "changed",740"id": 1,741"time": 1733841287540,742"edit": [743[744729,745834,746"\\t\\treturn this._lastEditTime.get() !== undefined && Date.now() - this._lastEditTime.get() < 30 * 1000 /* 30 seconds */;"747]748],749"v": 3268750},751{752"kind": "changed",753"id": 1,754"time": 1733841293443,755"edit": [756[757811,758817,759"."760]761],762"v": 3308763},764{765"kind": "changed",766"id": 1,767"time": 1733841294858,768"edit": [769[770812,771812,772"get"773]774],775"v": 3320776},777{778"kind": "changed",779"id": 1,780"time": 1733841298602,781"edit": [782[783728,784728,785"\\n\\t\\tconst "786]787],788"v": 3350789},790{791"kind": "changed",792"id": 1,793"time": 1733841300283,794"edit": [795[796729,797737,798"\\t\\tconst lastEditTime = this._lastEditTime.get();"799]800],801"v": 3354802}803],804"nextUserEdit": {805"edit": [806[807787,808811,809"lastEditTime"810],811[812842,813864,814"lastEditTime"815]816],817"relativePath": "../../../../Users/ulugbekna/code/vscode-copilot/src/extension/inlineEdits/vscode-node/lastEditTimeTracker.ts",818"originalOpIdx": 54392819}820}821}822}"823`);824});825});826827828