mirror of
https://github.com/Microsoft/vscode
synced 2024-09-13 21:55:38 +00:00
Adding basic test for markdown
This commit is contained in:
parent
5cf57a1b08
commit
14b7051664
15
.vscode/launch.json
vendored
15
.vscode/launch.json
vendored
|
@ -1,7 +1,6 @@
|
||||||
{
|
{
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"configurations": [
|
"configurations": [
|
||||||
|
|
||||||
{
|
{
|
||||||
"type": "node",
|
"type": "node",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
|
@ -160,6 +159,20 @@
|
||||||
"${workspaceFolder}/extensions/git/out/**/*.js"
|
"${workspaceFolder}/extensions/git/out/**/*.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "extensionHost",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "VS Code Markdown Extension Tests",
|
||||||
|
"runtimeExecutable": "${execPath}",
|
||||||
|
"args": [
|
||||||
|
"${workspaceFolder}/extensions/markdown/test-fixtures",
|
||||||
|
"--extensionDevelopmentPath=${workspaceFolder}/extensions/markdown",
|
||||||
|
"--extensionTestsPath=${workspaceFolder}/extensions/markdown/out/test"
|
||||||
|
],
|
||||||
|
"outFiles": [
|
||||||
|
"${workspaceFolder}/extensions/markdown/out/**/*.js"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "node",
|
"type": "node",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
"publisher": "Microsoft",
|
"publisher": "Microsoft",
|
||||||
"aiKey": "AIF-d9b70cd4-b9f9-4d70-929b-a071c400b217",
|
"aiKey": "AIF-d9b70cd4-b9f9-4d70-929b-a071c400b217",
|
||||||
"engines": {
|
"engines": {
|
||||||
"vscode": "^1.0.0"
|
"vscode": "^1.20.0"
|
||||||
},
|
},
|
||||||
"main": "./out/extension",
|
"main": "./out/extension",
|
||||||
"categories": [
|
"categories": [
|
||||||
|
@ -336,6 +336,7 @@
|
||||||
"@types/markdown-it": "0.0.2",
|
"@types/markdown-it": "0.0.2",
|
||||||
"@types/node": "7.0.43",
|
"@types/node": "7.0.43",
|
||||||
"gulp-rename": "^1.2.2",
|
"gulp-rename": "^1.2.2",
|
||||||
"gulp-replace": "^0.5.4"
|
"gulp-replace": "^0.5.4",
|
||||||
|
"vscode": "^1.1.10"
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -100,4 +100,3 @@ export class TableOfContentsProvider {
|
||||||
return header.replace(/^\s*#+\s*(.*?)\s*#*$/, (_, word) => word.trim());
|
return header.replace(/^\s*#+\s*(.*?)\s*#*$/, (_, word) => word.trim());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
28
extensions/markdown/src/test/index.ts
Normal file
28
extensions/markdown/src/test/index.ts
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
/*---------------------------------------------------------------------------------------------
|
||||||
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||||
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
//
|
||||||
|
// PLEASE DO NOT MODIFY / DELETE UNLESS YOU KNOW WHAT YOU ARE DOING
|
||||||
|
//
|
||||||
|
// This file is providing the test runner to use when running extension tests.
|
||||||
|
// By default the test runner in use is Mocha based.
|
||||||
|
//
|
||||||
|
// You can provide your own test runner if you want to override it by exporting
|
||||||
|
// a function run(testRoot: string, clb: (error:Error) => void) that the extension
|
||||||
|
// host can call to run the tests. The test runner is expected to use console.log
|
||||||
|
// to report the results back to the caller. When the tests are finished, return
|
||||||
|
// a possible error to the callback or null if none.
|
||||||
|
|
||||||
|
const testRunner = require('vscode/lib/testrunner');
|
||||||
|
|
||||||
|
// You can directly control Mocha options by uncommenting the following lines
|
||||||
|
// See https://github.com/mochajs/mocha/wiki/Using-mocha-programmatically#set-options for more info
|
||||||
|
testRunner.configure({
|
||||||
|
ui: 'tdd', // the TDD UI is being used in extension.test.ts (suite, test, etc.)
|
||||||
|
useColors: process.platform !== 'win32', // colored output from test results (only windows cannot handle)
|
||||||
|
timeout: 60000
|
||||||
|
});
|
||||||
|
|
||||||
|
export = testRunner;
|
75
extensions/markdown/src/test/tableOfContentsProvider.test.ts
Normal file
75
extensions/markdown/src/test/tableOfContentsProvider.test.ts
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
/*---------------------------------------------------------------------------------------------
|
||||||
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||||
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
import * as assert from 'assert';
|
||||||
|
import * as vscode from 'vscode';
|
||||||
|
|
||||||
|
import { TableOfContentsProvider } from '../tableOfContentsProvider';
|
||||||
|
import { MarkdownEngine } from '../markdownEngine';
|
||||||
|
|
||||||
|
suite('markdown.TableOfContentsProvider', () => {
|
||||||
|
test('Should not return anything for empty document', async () => {
|
||||||
|
const doc = new InMemoryDocument(vscode.Uri.parse('test.md'), '');
|
||||||
|
const provider = new TableOfContentsProvider(new MarkdownEngine(), doc);
|
||||||
|
|
||||||
|
assert.strictEqual(await provider.lookup(''), undefined);
|
||||||
|
assert.strictEqual(await provider.lookup('foo'), undefined);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
class InMemoryDocument implements vscode.TextDocument {
|
||||||
|
private readonly _lines: string[];
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
public readonly uri: vscode.Uri,
|
||||||
|
contents: string
|
||||||
|
) {
|
||||||
|
this._lines = contents.split(/\n/g);
|
||||||
|
}
|
||||||
|
|
||||||
|
fileName: string = '';
|
||||||
|
isUntitled: boolean = false;
|
||||||
|
languageId: string = '';
|
||||||
|
version: number = 1;
|
||||||
|
isDirty: boolean = false;
|
||||||
|
isClosed: boolean = false;
|
||||||
|
eol: vscode.EndOfLine = vscode.EndOfLine.LF;
|
||||||
|
|
||||||
|
get lineCount(): number {
|
||||||
|
return this._lines.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
lineAt(line: any): vscode.TextLine {
|
||||||
|
return {
|
||||||
|
lineNumber: line,
|
||||||
|
text: this._lines[line],
|
||||||
|
range: new vscode.Range(0, 0, 0, 0),
|
||||||
|
firstNonWhitespaceCharacterIndex: 0,
|
||||||
|
rangeIncludingLineBreak: new vscode.Range(0, 0, 0, 0),
|
||||||
|
isEmptyOrWhitespace: false
|
||||||
|
};
|
||||||
|
}
|
||||||
|
offsetAt(_position: vscode.Position): never {
|
||||||
|
throw new Error('Method not implemented.');
|
||||||
|
}
|
||||||
|
positionAt(_offset: number): never{
|
||||||
|
throw new Error('Method not implemented.');
|
||||||
|
}
|
||||||
|
getText(_range?: vscode.Range | undefined): never {
|
||||||
|
throw new Error('Method not implemented.');
|
||||||
|
}
|
||||||
|
getWordRangeAtPosition(_position: vscode.Position, _regex?: RegExp | undefined): never {
|
||||||
|
throw new Error('Method not implemented.');
|
||||||
|
}
|
||||||
|
validateRange(_range: vscode.Range): never {
|
||||||
|
throw new Error('Method not implemented.');
|
||||||
|
}
|
||||||
|
validatePosition(_position: vscode.Position): never {
|
||||||
|
throw new Error('Method not implemented.');
|
||||||
|
}
|
||||||
|
save(): never {
|
||||||
|
throw new Error('Method not implemented.');
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue