Skip to content

Commit

Permalink
clean up test logic
Browse files Browse the repository at this point in the history
  • Loading branch information
Colin Grant committed Jan 5, 2022
1 parent b48eeef commit bc954df
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 24 deletions.
25 changes: 5 additions & 20 deletions examples/api-tests/src/launch-preferences.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ describe('Launch Preferences', function () {
const { MonacoTextModelService } = require('@theia/monaco/lib/browser/monaco-text-model-service');
const { MonacoWorkspace } = require('@theia/monaco/lib/browser/monaco-workspace');
const { AbstractResourcePreferenceProvider } = require('@theia/preferences/lib/browser/abstract-resource-preference-provider');
const { waitForEvent } = require('@theia/core/lib/common/promise-util');

const container = window.theia.container;
/** @type {import('@theia/core/lib/browser/preferences/preference-service').PreferenceService} */
Expand Down Expand Up @@ -443,27 +444,11 @@ describe('Launch Preferences', function () {
const provider = findProvider(uri);
try {
if (provider) {
const original = provider['readPreferencesFromContent'];
try {
await new Promise(resolve => {
if (!provider['valid']) {
return resolve();
}
const beginningPreferences = provider['preferences'];
const timeout = setTimeout(() => console.log("I'm still waiting on an event from this file...", uri.path.toString(), beginningPreferences), 3000);
const check = () => {
if (provider && !provider['valid']) {
clearTimeout(timeout);
resolve();
} else {
console.log('Got a change event, but the provider was still valid.', uri.path.toString());
}
};
provider['readPreferencesFromContent'] = (content) => { check(); return original.bind(provider)(content); };
});
} finally {
provider['readPreferencesFromContent'] = original;
if (provider.valid) {
await waitForEvent(provider.onDidChangeValidity, 5000);
}
await provider['readPreferencesFromFile']();
await provider['fireDidPreferencesChanged']();
} else {
console.log('Unable to find provider for', uri.path.toString());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,27 @@ import { PreferenceConfigurations } from '@theia/core/lib/browser/preferences/pr
import { Deferred } from '@theia/core/lib/common/promise-util';
import { FileService } from '@theia/filesystem/lib/browser/file-service';
import { PreferenceTransaction, PreferenceTransactionFactory } from './preference-transaction-manager';
import { Emitter, Event } from '@theia/core';

@injectable()
export abstract class AbstractResourcePreferenceProvider extends PreferenceProvider {

protected preferences: Record<string, any> = {};
protected fileExists = false;
protected _fileExists = false;
protected readonly loading = new Deferred();
protected transaction: PreferenceTransaction | undefined;
protected readonly onDidChangeValidityEmitter = new Emitter<boolean>();

set fileExists(exists: boolean) {
if (exists !== this._fileExists) {
this._fileExists = exists;
this.onDidChangeValidityEmitter.fire(exists);
}
}

get onDidChangeValidity(): Event<boolean> {
return this.onDidChangeValidityEmitter.event;
}

@inject(PreferenceTransactionFactory) protected readonly transactionFactory: PreferenceTransactionFactory;
@inject(PreferenceSchemaProvider) protected readonly schemaProvider: PreferenceSchemaProvider;
Expand Down Expand Up @@ -61,8 +74,8 @@ export abstract class AbstractResourcePreferenceProvider extends PreferenceProvi
protected abstract getUri(): URI;
abstract getScope(): PreferenceScope;

protected get valid(): boolean {
return this.fileExists;
get valid(): boolean {
return this._fileExists;
}

getConfigUri(): URI;
Expand Down Expand Up @@ -113,7 +126,7 @@ export abstract class AbstractResourcePreferenceProvider extends PreferenceProvi
this.toDispose.push(this.transaction);
await current?.result;
}
return this.transaction?.enqueueAction(key, path, value);
return this.transaction.enqueueAction(key, path, value);
}

protected getPath(preferenceName: string): string[] | undefined {
Expand Down

0 comments on commit bc954df

Please # to comment.