mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-30 09:35:39 -05:00
This reverts commit 5d44b6a6a7.
This commit is contained in:
@@ -53,7 +53,7 @@ suite('Workbench - TextModelResolverService', () => {
|
||||
accessor.untitledEditorService.revertAll();
|
||||
});
|
||||
|
||||
test('resolve resource', async () => {
|
||||
test('resolve resource', function () {
|
||||
const dispose = accessor.textModelResolverService.registerTextModelContentProvider('test', {
|
||||
provideTextContent: function (resource: URI): Promise<ITextModel> {
|
||||
if (resource.scheme === 'test') {
|
||||
@@ -67,60 +67,67 @@ suite('Workbench - TextModelResolverService', () => {
|
||||
});
|
||||
|
||||
let resource = URI.from({ scheme: 'test', authority: null!, path: 'thePath' });
|
||||
let input: ResourceEditorInput = instantiationService.createInstance(ResourceEditorInput, 'The Name', 'The Description', resource, undefined);
|
||||
let input: ResourceEditorInput = instantiationService.createInstance(ResourceEditorInput, 'The Name', 'The Description', resource);
|
||||
|
||||
const model = await input.resolve();
|
||||
assert.ok(model);
|
||||
assert.equal(snapshotToString(((model as ResourceEditorModel).createSnapshot()!)), 'Hello Test');
|
||||
let disposed = false;
|
||||
let disposedPromise = new Promise(resolve => {
|
||||
Event.once(model.onDispose)(() => {
|
||||
disposed = true;
|
||||
resolve();
|
||||
return input.resolve().then(async model => {
|
||||
assert.ok(model);
|
||||
assert.equal(snapshotToString((model as ResourceEditorModel).createSnapshot()!), 'Hello Test');
|
||||
|
||||
let disposed = false;
|
||||
let disposedPromise = new Promise(resolve => {
|
||||
Event.once(model.onDispose)(() => {
|
||||
disposed = true;
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
input.dispose();
|
||||
await disposedPromise;
|
||||
assert.equal(disposed, true);
|
||||
|
||||
dispose.dispose();
|
||||
});
|
||||
});
|
||||
|
||||
test('resolve file', function () {
|
||||
model = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/file_resolver.txt'), 'utf8');
|
||||
(<TextFileEditorModelManager>accessor.textFileService.models).add(model.getResource(), model);
|
||||
|
||||
return model.load().then(() => {
|
||||
return accessor.textModelResolverService.createModelReference(model.getResource()).then(ref => {
|
||||
const model = ref.object;
|
||||
const editorModel = model.textEditorModel;
|
||||
|
||||
assert.ok(editorModel);
|
||||
assert.equal(editorModel.getValue(), 'Hello Html');
|
||||
|
||||
let disposed = false;
|
||||
Event.once(model.onDispose)(() => {
|
||||
disposed = true;
|
||||
});
|
||||
|
||||
ref.dispose();
|
||||
return timeout(0).then(() => { // due to the reference resolving the model first which is async
|
||||
assert.equal(disposed, true);
|
||||
});
|
||||
});
|
||||
});
|
||||
input.dispose();
|
||||
|
||||
await disposedPromise;
|
||||
assert.equal(disposed, true);
|
||||
dispose.dispose();
|
||||
});
|
||||
|
||||
test('resolve file', async function () {
|
||||
const textModel = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/file_resolver.txt'), 'utf8', undefined);
|
||||
(<TextFileEditorModelManager>accessor.textFileService.models).add(textModel.getResource(), textModel);
|
||||
|
||||
await textModel.load();
|
||||
|
||||
const ref = await accessor.textModelResolverService.createModelReference(textModel.getResource());
|
||||
|
||||
const model = ref.object;
|
||||
const editorModel = model.textEditorModel;
|
||||
|
||||
assert.ok(editorModel);
|
||||
assert.equal(editorModel.getValue(), 'Hello Html');
|
||||
|
||||
let disposed = false;
|
||||
Event.once(model.onDispose)(() => {
|
||||
disposed = true;
|
||||
});
|
||||
|
||||
ref.dispose();
|
||||
await timeout(0); // due to the reference resolving the model first which is async
|
||||
assert.equal(disposed, true);
|
||||
});
|
||||
|
||||
test('resolve untitled', async () => {
|
||||
test('resolve untitled', function () {
|
||||
const service = accessor.untitledEditorService;
|
||||
const input = service.createOrGet();
|
||||
|
||||
await input.resolve();
|
||||
const ref = await accessor.textModelResolverService.createModelReference(input.getResource());
|
||||
const model = ref.object;
|
||||
const editorModel = model.textEditorModel;
|
||||
assert.ok(editorModel);
|
||||
ref.dispose();
|
||||
input.dispose();
|
||||
return input.resolve().then(() => {
|
||||
return accessor.textModelResolverService.createModelReference(input.getResource()).then(ref => {
|
||||
const model = ref.object;
|
||||
const editorModel = model.textEditorModel;
|
||||
|
||||
assert.ok(editorModel);
|
||||
ref.dispose();
|
||||
|
||||
input.dispose();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
test('even loading documents should be refcounted', async () => {
|
||||
@@ -128,12 +135,12 @@ suite('Workbench - TextModelResolverService', () => {
|
||||
let waitForIt = new Promise(c => resolveModel = c);
|
||||
|
||||
const disposable = accessor.textModelResolverService.registerTextModelContentProvider('test', {
|
||||
provideTextContent: async (resource: URI): Promise<ITextModel> => {
|
||||
await waitForIt;
|
||||
|
||||
let modelContent = 'Hello Test';
|
||||
let languageSelection = accessor.modeService.create('json');
|
||||
return accessor.modelService.createModel(modelContent, languageSelection, resource);
|
||||
provideTextContent: (resource: URI): Promise<ITextModel> => {
|
||||
return waitForIt.then(_ => {
|
||||
let modelContent = 'Hello Test';
|
||||
let languageSelection = accessor.modeService.create('json');
|
||||
return accessor.modelService.createModel(modelContent, languageSelection, resource);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user