mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-03 17:23:42 -05:00
* Fix initial build breaks from 1.67 merge (#2514) * Update yarn lock files * Update build scripts * Fix tsconfig * Build breaks * WIP * Update yarn lock files * Misc breaks * Updates to package.json * Breaks * Update yarn * Fix breaks * Breaks * Build breaks * Breaks * Breaks * Breaks * Breaks * Breaks * Missing file * Breaks * Breaks * Breaks * Breaks * Breaks * Fix several runtime breaks (#2515) * Missing files * Runtime breaks * Fix proxy ordering issue * Remove commented code * Fix breaks with opening query editor * Fix post merge break * Updates related to setup build and other breaks (#2516) * Fix bundle build issues * Update distro * Fix distro merge and update build JS files * Disable pipeline steps * Remove stats call * Update license name * Make new RPM dependencies a warning * Fix extension manager version checks * Update JS file * Fix a few runtime breaks * Fixes * Fix runtime issues * Fix build breaks * Update notebook tests (part 1) * Fix broken tests * Linting errors * Fix hygiene * Disable lint rules * Bump distro * Turn off smoke tests * Disable integration tests * Remove failing "activate" test * Remove failed test assertion * Disable other broken test * Disable query history tests * Disable extension unit tests * Disable failing tasks
98 lines
3.6 KiB
TypeScript
98 lines
3.6 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
import * as assert from 'assert';
|
|
import 'mocha';
|
|
import * as vscode from 'vscode';
|
|
import { MdDocumentSymbolProvider } from '../languageFeatures/documentSymbolProvider';
|
|
import { createNewMarkdownEngine } from './engine';
|
|
import { InMemoryDocument } from '../util/inMemoryDocument';
|
|
|
|
|
|
const testFileName = vscode.Uri.file('test.md');
|
|
|
|
|
|
function getSymbolsForFile(fileContents: string) {
|
|
const doc = new InMemoryDocument(testFileName, fileContents);
|
|
const provider = new MdDocumentSymbolProvider(createNewMarkdownEngine());
|
|
return provider.provideDocumentSymbols(doc);
|
|
}
|
|
|
|
|
|
suite('markdown.DocumentSymbolProvider', () => {
|
|
test('Should not return anything for empty document', async () => {
|
|
const symbols = await getSymbolsForFile('');
|
|
assert.strictEqual(symbols.length, 0);
|
|
});
|
|
|
|
test('Should not return anything for document with no headers', async () => {
|
|
const symbols = await getSymbolsForFile('a\na');
|
|
assert.strictEqual(symbols.length, 0);
|
|
});
|
|
|
|
test('Should not return anything for document with # but no real headers', async () => {
|
|
const symbols = await getSymbolsForFile('a#a\na#');
|
|
assert.strictEqual(symbols.length, 0);
|
|
});
|
|
|
|
test('Should return single symbol for single header', async () => {
|
|
const symbols = await getSymbolsForFile('# h');
|
|
assert.strictEqual(symbols.length, 1);
|
|
assert.strictEqual(symbols[0].name, '# h');
|
|
});
|
|
|
|
test('Should not care about symbol level for single header', async () => {
|
|
const symbols = await getSymbolsForFile('### h');
|
|
assert.strictEqual(symbols.length, 1);
|
|
assert.strictEqual(symbols[0].name, '### h');
|
|
});
|
|
|
|
test('Should put symbols of same level in flat list', async () => {
|
|
const symbols = await getSymbolsForFile('## h\n## h2');
|
|
assert.strictEqual(symbols.length, 2);
|
|
assert.strictEqual(symbols[0].name, '## h');
|
|
assert.strictEqual(symbols[1].name, '## h2');
|
|
});
|
|
|
|
test('Should nest symbol of level - 1 under parent', async () => {
|
|
|
|
const symbols = await getSymbolsForFile('# h\n## h2\n## h3');
|
|
assert.strictEqual(symbols.length, 1);
|
|
assert.strictEqual(symbols[0].name, '# h');
|
|
assert.strictEqual(symbols[0].children.length, 2);
|
|
assert.strictEqual(symbols[0].children[0].name, '## h2');
|
|
assert.strictEqual(symbols[0].children[1].name, '## h3');
|
|
});
|
|
|
|
test('Should nest symbol of level - n under parent', async () => {
|
|
const symbols = await getSymbolsForFile('# h\n#### h2');
|
|
assert.strictEqual(symbols.length, 1);
|
|
assert.strictEqual(symbols[0].name, '# h');
|
|
assert.strictEqual(symbols[0].children.length, 1);
|
|
assert.strictEqual(symbols[0].children[0].name, '#### h2');
|
|
});
|
|
|
|
test('Should flatten children where lower level occurs first', async () => {
|
|
const symbols = await getSymbolsForFile('# h\n### h2\n## h3');
|
|
assert.strictEqual(symbols.length, 1);
|
|
assert.strictEqual(symbols[0].name, '# h');
|
|
assert.strictEqual(symbols[0].children.length, 2);
|
|
assert.strictEqual(symbols[0].children[0].name, '### h2');
|
|
assert.strictEqual(symbols[0].children[1].name, '## h3');
|
|
});
|
|
|
|
test('Should handle line separator in file. Issue #63749', async () => {
|
|
const symbols = await getSymbolsForFile(`# A
|
|
- foo
|
|
|
|
# B
|
|
- bar`);
|
|
assert.strictEqual(symbols.length, 2);
|
|
assert.strictEqual(symbols[0].name, '# A');
|
|
assert.strictEqual(symbols[1].name, '# B');
|
|
});
|
|
});
|
|
|