mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-19 08:08:39 +01:00
add more meaningful api tests
This commit is contained in:
39
extensions/vscode-api-tests/src/editor.test.ts
Normal file
39
extensions/vscode-api-tests/src/editor.test.ts
Normal file
@@ -0,0 +1,39 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
'use strict';
|
||||
|
||||
import * as assert from 'assert';
|
||||
import * as fs from 'fs';
|
||||
import * as os from 'os';
|
||||
import {workspace, window, Position} from 'vscode';
|
||||
import {createRandomFile, deleteFile} from './utils';
|
||||
import {join} from 'path';
|
||||
|
||||
suite("editor tests", () => {
|
||||
|
||||
test('make edit', (done) => {
|
||||
createRandomFile().then(file => {
|
||||
return workspace.openTextDocument(file).then(doc => {
|
||||
return window.showTextDocument(doc).then((editor) => {
|
||||
return editor.edit((builder) => {
|
||||
builder.insert(new Position(0, 0), 'Hello World');
|
||||
}).then(applied => {
|
||||
assert.ok(applied);
|
||||
assert.equal(doc.getText(), 'Hello World');
|
||||
assert.ok(doc.isDirty);
|
||||
|
||||
return doc.save().then(saved => {
|
||||
assert.ok(saved);
|
||||
assert.ok(!doc.isDirty);
|
||||
|
||||
return deleteFile(file);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
}).then(() => done(), (error) => done(error));
|
||||
});
|
||||
});
|
||||
@@ -21,7 +21,8 @@ const testRunner = require('vscode/lib/testrunner');
|
||||
// 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: true // colored output from test results
|
||||
useColors: true, // colored output from test results
|
||||
timeout: 10000
|
||||
});
|
||||
|
||||
export= testRunner;
|
||||
40
extensions/vscode-api-tests/src/utils.ts
Normal file
40
extensions/vscode-api-tests/src/utils.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
'use strict';
|
||||
|
||||
import * as vscode from 'vscode';
|
||||
import * as fs from 'fs';
|
||||
import * as os from 'os';
|
||||
import {join} from 'path';
|
||||
|
||||
function rndName() {
|
||||
return Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 10);
|
||||
}
|
||||
|
||||
export function createRandomFile(contents = ''): Thenable<vscode.Uri> {
|
||||
return new Promise((resolve, reject) => {
|
||||
const tmpFile = join(os.tmpdir(), rndName());
|
||||
fs.writeFile(tmpFile, contents, (error) => {
|
||||
if (error) {
|
||||
return reject(error);
|
||||
}
|
||||
|
||||
resolve(vscode.Uri.file(tmpFile));
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
export function deleteFile(file: vscode.Uri): Thenable<boolean> {
|
||||
return new Promise((resolve, reject) => {
|
||||
fs.unlink(file.fsPath, (err) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve(true);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -6,12 +6,18 @@
|
||||
'use strict';
|
||||
|
||||
import * as assert from 'assert';
|
||||
import {window, workspace} from 'vscode';
|
||||
import {workspace, window} from 'vscode';
|
||||
import {join} from 'path';
|
||||
|
||||
suite("window namespace texts", () => {
|
||||
|
||||
// test('open document fires event', (done) => {
|
||||
|
||||
// });
|
||||
suite("window namespace tests", () => {
|
||||
|
||||
test('active text editor', (done) => {
|
||||
workspace.openTextDocument(join(workspace.rootPath, './far.js')).then(doc => {
|
||||
return window.showTextDocument(doc).then((editor) => {
|
||||
const active = window.activeTextEditor;
|
||||
assert.ok(active);
|
||||
assert.equal(active.document.uri.fsPath, doc.uri.fsPath);
|
||||
});
|
||||
}).then(() => done(), (error) => done(error));
|
||||
});
|
||||
});
|
||||
@@ -6,8 +6,15 @@
|
||||
'use strict';
|
||||
|
||||
import * as assert from 'assert';
|
||||
import {workspace, TextDocument} from 'vscode';
|
||||
import {workspace, TextDocument, window, Position} from 'vscode';
|
||||
import {createRandomFile, deleteFile} from './utils';
|
||||
import {join} from 'path';
|
||||
import * as fs from 'fs';
|
||||
import * as os from 'os';
|
||||
|
||||
function rndName() {
|
||||
return Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 10);
|
||||
}
|
||||
|
||||
suite('workspace-namespace', () => {
|
||||
|
||||
@@ -38,17 +45,52 @@ suite('workspace-namespace', () => {
|
||||
});
|
||||
});
|
||||
|
||||
// test('createTextDocument', done => {
|
||||
test('events: onDidOpenTextDocument, onDidChangeTextDocument, onDidSaveTextDocument', (done) => {
|
||||
createRandomFile().then(file => {
|
||||
let onDidOpenTextDocument = false;
|
||||
workspace.onDidOpenTextDocument(e => {
|
||||
assert.equal(e.uri.fsPath, file.fsPath);
|
||||
onDidOpenTextDocument = true;
|
||||
});
|
||||
|
||||
// let text = 'Das Pferd isst keinen Reis.'
|
||||
let onDidChangeTextDocument = false;
|
||||
workspace.onDidChangeTextDocument(e => {
|
||||
assert.equal(e.document.uri.fsPath, file.fsPath);
|
||||
onDidChangeTextDocument = true;
|
||||
});
|
||||
|
||||
// workspace.createTextDocument(text).then(doc => {
|
||||
// assert.equal(doc.getText(), text);
|
||||
// assert.equal(doc.uri.scheme, 'untitled');
|
||||
// assert.equal(doc.languageId, 'plaintext');
|
||||
// done();
|
||||
// }, err => {
|
||||
// done(err);
|
||||
// });
|
||||
// });
|
||||
let onDidSaveTextDocument = false;
|
||||
workspace.onDidSaveTextDocument(e => {
|
||||
assert.equal(e.uri.fsPath, file.fsPath);
|
||||
onDidSaveTextDocument = true;
|
||||
});
|
||||
|
||||
return workspace.openTextDocument(file).then(doc => {
|
||||
return window.showTextDocument(doc).then((editor) => {
|
||||
return editor.edit((builder) => {
|
||||
builder.insert(new Position(0, 0), 'Hello World');
|
||||
}).then(applied => {
|
||||
return doc.save().then(saved => {
|
||||
assert.ok(onDidOpenTextDocument);
|
||||
assert.ok(onDidChangeTextDocument);
|
||||
assert.ok(onDidSaveTextDocument);
|
||||
|
||||
return deleteFile(file);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
}).then(() => done(), (error) => done(error));
|
||||
});
|
||||
|
||||
test('findFiles', done => {
|
||||
workspace.findFiles('*.js', null).then((res) => {
|
||||
assert.equal(res.length, 1);
|
||||
assert.equal(workspace.asRelativePath(res[0]), '/far.js');
|
||||
|
||||
done();
|
||||
}, err => {
|
||||
done(err);
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user