Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/contrib/chat/test/common/annotations.test.ts
3296 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { MarkdownString } from '../../../../../base/common/htmlContent.js';
7
import { assertSnapshot } from '../../../../../base/test/common/snapshot.js';
8
import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../../base/test/common/utils.js';
9
import { IChatMarkdownContent } from '../../common/chatService.js';
10
import { annotateSpecialMarkdownContent, extractVulnerabilitiesFromText } from '../../common/annotations.js';
11
12
function content(str: string): IChatMarkdownContent {
13
return { kind: 'markdownContent', content: new MarkdownString(str) };
14
}
15
16
suite('Annotations', function () {
17
ensureNoDisposablesAreLeakedInTestSuite();
18
19
suite('extractVulnerabilitiesFromText', () => {
20
test('single line', async () => {
21
const before = 'some code ';
22
const vulnContent = 'content with vuln';
23
const after = ' after';
24
const annotatedResult = annotateSpecialMarkdownContent([content(before), { kind: 'markdownVuln', content: new MarkdownString(vulnContent), vulnerabilities: [{ title: 'title', description: 'vuln' }] }, content(after)]);
25
await assertSnapshot(annotatedResult);
26
27
const markdown = annotatedResult[0] as IChatMarkdownContent;
28
const result = extractVulnerabilitiesFromText(markdown.content.value);
29
await assertSnapshot(result);
30
});
31
32
test('multiline', async () => {
33
const before = 'some code\nover\nmultiple lines ';
34
const vulnContent = 'content with vuln\nand\nnewlines';
35
const after = 'more code\nwith newline';
36
const annotatedResult = annotateSpecialMarkdownContent([content(before), { kind: 'markdownVuln', content: new MarkdownString(vulnContent), vulnerabilities: [{ title: 'title', description: 'vuln' }] }, content(after)]);
37
await assertSnapshot(annotatedResult);
38
39
const markdown = annotatedResult[0] as IChatMarkdownContent;
40
const result = extractVulnerabilitiesFromText(markdown.content.value);
41
await assertSnapshot(result);
42
});
43
44
test('multiple vulns', async () => {
45
const before = 'some code\nover\nmultiple lines ';
46
const vulnContent = 'content with vuln\nand\nnewlines';
47
const after = 'more code\nwith newline';
48
const annotatedResult = annotateSpecialMarkdownContent([
49
content(before),
50
{ kind: 'markdownVuln', content: new MarkdownString(vulnContent), vulnerabilities: [{ title: 'title', description: 'vuln' }] },
51
content(after),
52
{ kind: 'markdownVuln', content: new MarkdownString(vulnContent), vulnerabilities: [{ title: 'title', description: 'vuln' }] },
53
]);
54
await assertSnapshot(annotatedResult);
55
56
const markdown = annotatedResult[0] as IChatMarkdownContent;
57
const result = extractVulnerabilitiesFromText(markdown.content.value);
58
await assertSnapshot(result);
59
});
60
});
61
});
62
63