From e2bd761d522e706ff4426cbe493b256aa32c7291 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 21 Sep 2023 15:09:19 -0700 Subject: [PATCH] Adopt ensureNoDisposablesAreLeakedInTestSuite (#193736) For #190503 --- .../test/browser/markdownRenderer.test.ts | 60 ++++++++++--------- 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/src/vs/base/test/browser/markdownRenderer.test.ts b/src/vs/base/test/browser/markdownRenderer.test.ts index bd1382b36e2..1da026b5174 100644 --- a/src/vs/base/test/browser/markdownRenderer.test.ts +++ b/src/vs/base/test/browser/markdownRenderer.test.ts @@ -10,6 +10,7 @@ import { marked } from 'vs/base/common/marked/marked'; import { parse } from 'vs/base/common/marshalling'; import { isWeb } from 'vs/base/common/platform'; import { URI } from 'vs/base/common/uri'; +import { ensureNoDisposablesAreLeakedInTestSuite } from 'vs/base/test/common/utils'; function strToNode(str: string): HTMLElement { return new DOMParser().parseFromString(str, 'text/html').body.firstChild as HTMLElement; @@ -23,10 +24,13 @@ function assertNodeEquals(actualNode: HTMLElement, expectedHtml: string) { } suite('MarkdownRenderer', () => { + + const store = ensureNoDisposablesAreLeakedInTestSuite(); + suite('Sanitization', () => { test('Should not render images with unknown schemes', () => { const markdown = { value: `![image](no-such://example.com/cat.gif)` }; - const result: HTMLElement = renderMarkdown(markdown).element; + const result: HTMLElement = store.add(renderMarkdown(markdown)).element; assert.strictEqual(result.innerHTML, '

image

'); }); }); @@ -34,28 +38,28 @@ suite('MarkdownRenderer', () => { suite('Images', () => { test('image rendering conforms to default', () => { const markdown = { value: `![image](http://example.com/cat.gif 'caption')` }; - const result: HTMLElement = renderMarkdown(markdown).element; + const result: HTMLElement = store.add(renderMarkdown(markdown)).element; assertNodeEquals(result, '

image

'); }); test('image rendering conforms to default without title', () => { const markdown = { value: `![image](http://example.com/cat.gif)` }; - const result: HTMLElement = renderMarkdown(markdown).element; + const result: HTMLElement = store.add(renderMarkdown(markdown)).element; assertNodeEquals(result, '

image

'); }); test('image width from title params', () => { - const result: HTMLElement = renderMarkdown({ value: `![image](http://example.com/cat.gif|width=100px 'caption')` }).element; + const result: HTMLElement = store.add(renderMarkdown({ value: `![image](http://example.com/cat.gif|width=100px 'caption')` })).element; assertNodeEquals(result, `

image

`); }); test('image height from title params', () => { - const result: HTMLElement = renderMarkdown({ value: `![image](http://example.com/cat.gif|height=100 'caption')` }).element; + const result: HTMLElement = store.add(renderMarkdown({ value: `![image](http://example.com/cat.gif|height=100 'caption')` })).element; assertNodeEquals(result, `

image

`); }); test('image width and height from title params', () => { - const result: HTMLElement = renderMarkdown({ value: `![image](http://example.com/cat.gif|height=200,width=100 'caption')` }).element; + const result: HTMLElement = store.add(renderMarkdown({ value: `![image](http://example.com/cat.gif|height=200,width=100 'caption')` })).element; assertNodeEquals(result, `

image

`); }); @@ -63,7 +67,7 @@ suite('MarkdownRenderer', () => { if (isWeb) { return; } - const result: HTMLElement = renderMarkdown({ value: `![image](file:///images/cat.gif)` }).element; + const result: HTMLElement = store.add(renderMarkdown({ value: `![image](file:///images/cat.gif)` })).element; assertNodeEquals(result, '

image

'); }); }); @@ -78,10 +82,10 @@ suite('MarkdownRenderer', () => { test('asyncRenderCallback should be invoked for code blocks', () => { const markdown = { value: '```js\n1 + 1;\n```' }; return new Promise(resolve => { - renderMarkdown(markdown, { + store.add(renderMarkdown(markdown, { asyncRenderCallback: resolve, codeBlockRenderer: simpleCodeBlockRenderer - }); + })); }); }); @@ -120,12 +124,12 @@ suite('MarkdownRenderer', () => { test('Code blocks should use leading language id (#157793)', async () => { const markdown = { value: '```js some other stuff\n1 + 1;\n```' }; const lang = await new Promise(resolve => { - renderMarkdown(markdown, { + store.add(renderMarkdown(markdown, { codeBlockRenderer: async (lang, value) => { resolve(lang); return simpleCodeBlockRenderer(lang, value); } - }); + })); }); assert.strictEqual(lang, 'js'); }); @@ -137,7 +141,7 @@ suite('MarkdownRenderer', () => { const mds = new MarkdownString(undefined, { supportThemeIcons: true }); mds.appendText('$(zap) $(not a theme icon) $(add)'); - const result: HTMLElement = renderMarkdown(mds).element; + const result: HTMLElement = store.add(renderMarkdown(mds)).element; assert.strictEqual(result.innerHTML, `

$(zap) $(not a theme icon) $(add)

`); }); @@ -145,7 +149,7 @@ suite('MarkdownRenderer', () => { const mds = new MarkdownString(undefined, { supportThemeIcons: true }); mds.appendMarkdown('$(zap) $(not a theme icon) $(add)'); - const result: HTMLElement = renderMarkdown(mds).element; + const result: HTMLElement = store.add(renderMarkdown(mds)).element; assert.strictEqual(result.innerHTML, `

$(not a theme icon)

`); }); @@ -153,7 +157,7 @@ suite('MarkdownRenderer', () => { const mds = new MarkdownString(undefined, { supportThemeIcons: true }); mds.appendMarkdown('\\$(zap) $(not a theme icon) $(add)'); - const result: HTMLElement = renderMarkdown(mds).element; + const result: HTMLElement = store.add(renderMarkdown(mds)).element; assert.strictEqual(result.innerHTML, `

$(zap) $(not a theme icon)

`); }); @@ -161,7 +165,7 @@ suite('MarkdownRenderer', () => { const mds = new MarkdownString(undefined, { supportThemeIcons: true }); mds.appendMarkdown(`[$(zap)-link](#link)`); - const result: HTMLElement = renderMarkdown(mds).element; + const result: HTMLElement = store.add(renderMarkdown(mds)).element; assert.strictEqual(result.innerHTML, `

-link

`); }); @@ -172,7 +176,7 @@ suite('MarkdownRenderer', () => { |--------|----------------------| | $(zap) | [$(zap)-link](#link) |`); - const result: HTMLElement = renderMarkdown(mds).element; + const result: HTMLElement = store.add(renderMarkdown(mds)).element; assert.strictEqual(result.innerHTML, ` @@ -192,7 +196,7 @@ suite('MarkdownRenderer', () => { const mds = new MarkdownString(undefined, { supportThemeIcons: true, supportHtml: true }); mds.appendMarkdown(`$(sync)`); - const result: HTMLElement = renderMarkdown(mds).element; + const result: HTMLElement = store.add(renderMarkdown(mds)).element; assert.strictEqual(result.innerHTML, `

`); }); }); @@ -203,7 +207,7 @@ suite('MarkdownRenderer', () => { const mds = new MarkdownString(undefined, { supportThemeIcons: false }); mds.appendText('$(zap) $(not a theme icon) $(add)'); - const result: HTMLElement = renderMarkdown(mds).element; + const result: HTMLElement = store.add(renderMarkdown(mds)).element; assert.strictEqual(result.innerHTML, `

$(zap) $(not a theme icon) $(add)

`); }); @@ -211,7 +215,7 @@ suite('MarkdownRenderer', () => { const mds = new MarkdownString(undefined, { supportThemeIcons: false }); mds.appendMarkdown('\\$(zap) $(not a theme icon) $(add)'); - const result: HTMLElement = renderMarkdown(mds).element; + const result: HTMLElement = store.add(renderMarkdown(mds)).element; assert.strictEqual(result.innerHTML, `

$(zap) $(not a theme icon) $(add)

`); }); }); @@ -219,7 +223,7 @@ suite('MarkdownRenderer', () => { test('npm Hover Run Script not working #90855', function () { const md: IMarkdownString = JSON.parse('{"value":"[Run Script](command:npm.runScriptFromHover?%7B%22documentUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22c%3A%5C%5CUsers%5C%5Cjrieken%5C%5CCode%5C%5C_sample%5C%5Cfoo%5C%5Cpackage.json%22%2C%22_sep%22%3A1%2C%22external%22%3A%22file%3A%2F%2F%2Fc%253A%2FUsers%2Fjrieken%2FCode%2F_sample%2Ffoo%2Fpackage.json%22%2C%22path%22%3A%22%2Fc%3A%2FUsers%2Fjrieken%2FCode%2F_sample%2Ffoo%2Fpackage.json%22%2C%22scheme%22%3A%22file%22%7D%2C%22script%22%3A%22echo%22%7D \\"Run the script as a task\\")","supportThemeIcons":false,"isTrusted":true,"uris":{"__uri_e49443":{"$mid":1,"fsPath":"c:\\\\Users\\\\jrieken\\\\Code\\\\_sample\\\\foo\\\\package.json","_sep":1,"external":"file:///c%3A/Users/jrieken/Code/_sample/foo/package.json","path":"/c:/Users/jrieken/Code/_sample/foo/package.json","scheme":"file"},"command:npm.runScriptFromHover?%7B%22documentUri%22%3A%7B%22%24mid%22%3A1%2C%22fsPath%22%3A%22c%3A%5C%5CUsers%5C%5Cjrieken%5C%5CCode%5C%5C_sample%5C%5Cfoo%5C%5Cpackage.json%22%2C%22_sep%22%3A1%2C%22external%22%3A%22file%3A%2F%2F%2Fc%253A%2FUsers%2Fjrieken%2FCode%2F_sample%2Ffoo%2Fpackage.json%22%2C%22path%22%3A%22%2Fc%3A%2FUsers%2Fjrieken%2FCode%2F_sample%2Ffoo%2Fpackage.json%22%2C%22scheme%22%3A%22file%22%7D%2C%22script%22%3A%22echo%22%7D":{"$mid":1,"path":"npm.runScriptFromHover","scheme":"command","query":"{\\"documentUri\\":\\"__uri_e49443\\",\\"script\\":\\"echo\\"}"}}}'); - const element = renderMarkdown(md).element; + const element = store.add(renderMarkdown(md)).element; const anchor = element.querySelector('a')!; assert.ok(anchor); @@ -238,7 +242,7 @@ suite('MarkdownRenderer', () => { supportHtml: true }); - const result: HTMLElement = renderMarkdown(md).element; + const result: HTMLElement = store.add(renderMarkdown(md)).element; assert.strictEqual(result.innerHTML, `

command1 command2

`); }); @@ -248,7 +252,7 @@ suite('MarkdownRenderer', () => { supportHtml: true, }); - const result: HTMLElement = renderMarkdown(md).element; + const result: HTMLElement = store.add(renderMarkdown(md)).element; assert.strictEqual(result.innerHTML, `

command1 command2

`); }); @@ -274,7 +278,7 @@ suite('MarkdownRenderer', () => { const mds = new MarkdownString(undefined, {}); mds.appendMarkdown('abc'); - const result = renderMarkdown(mds).element; + const result = store.add(renderMarkdown(mds)).element; assert.strictEqual(result.innerHTML, `

abc

`); }); @@ -282,7 +286,7 @@ suite('MarkdownRenderer', () => { const mds = new MarkdownString(undefined, { supportHtml: true }); mds.appendMarkdown('abc'); - const result = renderMarkdown(mds).element; + const result = store.add(renderMarkdown(mds)).element; assert.strictEqual(result.innerHTML, `

abc

`); }); @@ -290,7 +294,7 @@ suite('MarkdownRenderer', () => { const mds = new MarkdownString(undefined, { supportHtml: true }); mds.appendMarkdown('abc'); - const result = renderMarkdown(mds).element; + const result = store.add(renderMarkdown(mds)).element; assert.strictEqual(result.innerHTML, `

abc

`); }); @@ -298,7 +302,7 @@ suite('MarkdownRenderer', () => { const mds = new MarkdownString(undefined, { supportHtml: true }); mds.appendText('abc'); - const result = renderMarkdown(mds).element; + const result = store.add(renderMarkdown(mds)).element; assert.strictEqual(result.innerHTML, `

a<b>b</b>c

`); }); @@ -310,7 +314,7 @@ suite('MarkdownRenderer', () => { const mds = new MarkdownString(undefined, { supportHtml: true }); mds.appendMarkdown(``); - const result = renderMarkdown(mds).element; + const result = store.add(renderMarkdown(mds)).element; assert.strictEqual(result.innerHTML, ``); }); @@ -322,7 +326,7 @@ suite('MarkdownRenderer', () => { const mds = new MarkdownString(undefined, { supportHtml: true }); mds.appendMarkdown(``); - const result = renderMarkdown(mds).element; + const result = store.add(renderMarkdown(mds)).element; assert.strictEqual(result.innerHTML, ``); }); });