From d216f0e06e1e034d97e4b3f28e7b3e32be6a6656 Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Wed, 19 Sep 2018 16:49:01 +0200 Subject: [PATCH] [php] add webpack support #57680 --- .../php-language-features/.vscodeignore | 5 +- .../extension.webpack.config.js | 20 ++ extensions/php-language-features/package.json | 4 +- .../php-language-features/src/test/index.ts | 17 -- .../src/test/php-worker.test.ts.disabled | 251 ------------------ 5 files changed, 26 insertions(+), 271 deletions(-) create mode 100644 extensions/php-language-features/extension.webpack.config.js delete mode 100644 extensions/php-language-features/src/test/index.ts delete mode 100644 extensions/php-language-features/src/test/php-worker.test.ts.disabled diff --git a/extensions/php-language-features/.vscodeignore b/extensions/php-language-features/.vscodeignore index 5e3da7eecc78c..e45d470b4dd5d 100644 --- a/extensions/php-language-features/.vscodeignore +++ b/extensions/php-language-features/.vscodeignore @@ -1,3 +1,6 @@ +.vscode/** src/** +out/** tsconfig.json -out/test/** \ No newline at end of file +extension.webpack.config.js +yarn.lock diff --git a/extensions/php-language-features/extension.webpack.config.js b/extensions/php-language-features/extension.webpack.config.js new file mode 100644 index 0000000000000..a44fc8e56be85 --- /dev/null +++ b/extensions/php-language-features/extension.webpack.config.js @@ -0,0 +1,20 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +//@ts-check + +'use strict'; + +const withDefaults = require('../shared.webpack.config'); + +module.exports = withDefaults({ + context: __dirname, + entry: { + extension: './src/phpMain.ts', + }, + output: { + filename: 'phpMain.js' + } +}); diff --git a/extensions/php-language-features/package.json b/extensions/php-language-features/package.json index fa6865ec982b7..fb6beb6deb5b1 100644 --- a/extensions/php-language-features/package.json +++ b/extensions/php-language-features/package.json @@ -73,8 +73,8 @@ } }, "scripts": { - "compile": "gulp compile-extension:php", - "watch": "gulp watch-extension:php" + "compile": "npx gulp compile-extension:php-language-features", + "watch": "npx gulp watch-extension:php-language-features" }, "dependencies": { "vscode-nls": "^4.0.0" diff --git a/extensions/php-language-features/src/test/index.ts b/extensions/php-language-features/src/test/index.ts deleted file mode 100644 index ddf8e2a574835..0000000000000 --- a/extensions/php-language-features/src/test/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -/* -var 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: true // colored output from test results -}); - -module.exports = testRunner; -*/ \ No newline at end of file diff --git a/extensions/php-language-features/src/test/php-worker.test.ts.disabled b/extensions/php-language-features/src/test/php-worker.test.ts.disabled deleted file mode 100644 index 336555289e966..0000000000000 --- a/extensions/php-language-features/src/test/php-worker.test.ts.disabled +++ /dev/null @@ -1,251 +0,0 @@ -import assert = require('assert'); -import {CompletionItemProvider, CompletionItem, CompletionItemKind, CancellationToken, TextDocument, Range, Position, Uri, workspace, window} from 'vscode'; -import PHPCompletionItemProvider from '../features/completionItemProvider'; -import HoverProvider from '../features/hoverProvider'; -import SignatureHelpProvider from '../features/signatureHelpProvider'; - - -var phpCompletionProvider = new PHPCompletionItemProvider(); - -var testSuggestionsFor = function(value:string, stringBefore:string):Thenable { - return workspace.openTextDocument(Uri.parse("untitled:/foo/new.js")).then(document => { - return window.showTextDocument(document).then(textEditor => { - return textEditor.edit(editBuilder => { - var lastLineLength = document.lineAt(document.lineCount - 1).text.length; - editBuilder.replace(new vscode.Range(new vscode.Position(0, 0), new vscode.Position(textEditor.document.lineCount - 1, lastLineLength)), value); - }).then(() => { - var idx = stringBefore ? value.indexOf(stringBefore) + stringBefore.length : 0; - var position = new Position(0, idx); - return phpCompletionProvider.provideCompletionItems(document, position, null); - }) - }) - }); -}; - -var assertSuggestion= function(completions:CompletionItem[], label:string, kind: CompletionItemKind) { - var entries = completions.filter(suggestion => { - return suggestion.label === label; - }); - assert.equal(entries.length, 1); - assert.equal(entries[0].kind, kind); -}; - -suite("PHP", () => { - - test("Intellisense", (testDone:(err?:any) => void) => { - Promise.all([ - testSuggestionsFor(' { - assertSuggestion(completions, '__CLASS__', CompletionItemKind.Field); - assertSuggestion(completions, 'mysql_thread_id', CompletionItemKind.Function); - assertSuggestion(completions, '$argc', CompletionItemKind.Variable); - }), - testSuggestionsFor(' { - assertSuggestion(completions, 'mysql_db_name', CompletionItemKind.Function); - assertSuggestion(completions, 'mysql_list_tables', CompletionItemKind.Function); - }) - ]).then(() => testDone(), (errors:any[]) => { - testDone(errors.reduce((e1, e2) => e1 || e2)); - }); - - }); -}); -// /*--------------------------------------------------------- -// * Copyright (C) Microsoft Corporation. All rights reserved. -// *--------------------------------------------------------*/ -// 'use strict'; - -// import assert = require('assert'); -// import {CompletionItemProvider, CompletionItem, CompletionItemKind, CancellationToken, TextDocument, Range, Position} from 'vscode'; - - - -// var mockPHPWorkerEnv = function (url:Network.URL, content: string) : { worker: phpWorker.PHPWorker; model: mm.MirrorModel } { -// var resourceService = new ResourceService.ResourceService(); -// var model = mm.createMirrorModelFromString(null, 0, content, modesUtil.createMockMode('mock.mode.id', /(-?\d*\.\d\w*)|(\$[\w-]*)|([\w-]+)/g), url); -// resourceService.insert(url, model); - -// let services = servicesUtil2.createMockEditorWorkerServices({ -// resourceService: resourceService, -// }); - -// var worker = new phpWorker.PHPWorker(modesUtil.createMockMode('mock.mode.id'), [], -// services.resourceService, services.markerService); - -// return { worker: worker, model: model }; -// }; - -// var testComputeInfo = function(value:string, stringBefore:string):WinJS.TPromise { -// var url = new Network.URL('test://1'); -// var env = mockPHPWorkerEnv(url, value); -// var idx = stringBefore ? value.indexOf(stringBefore) : value.length; -// var position = env.model.getPositionFromOffset(idx); -// return env.worker.computeInfo(url, position); -// }; - -// var testSuggestionsFor = function(value:string, stringBefore:string):WinJS.TPromise { -// var url = new Network.URL('test://1'); -// var env = mockPHPWorkerEnv(url, value); -// var idx = stringBefore ? value.indexOf(stringBefore) + stringBefore.length : 0; -// var position = env.model.getPositionFromOffset(idx); -// return env.worker.suggest(url, position).then(result => result[0]); -// }; - -// var testParameterHintsFor = function(value:string, stringBefore:string):WinJS.TPromise { -// var url = new Network.URL('test://1'); -// var env = mockPHPWorkerEnv(url, value); -// var idx = stringBefore ? value.indexOf(stringBefore) + stringBefore.length : value.length; -// var position = env.model.getPositionFromOffset(idx); -// return env.worker.getParameterHints(url, position); -// }; - -// var assertSuggestion= function(completion:Modes.ISuggestions, label:string, type: string) { -// var entries = completion.suggestions.filter(function(suggestion: Modes.ISuggestion) { -// return suggestion.label === label; -// }); -// assert.equal(entries.length, 1); -// assert.equal(entries[0].type, type); -// }; - -// var assertParameterHints= function(hints:Modes.IParameterHints, paramNames: string[], currentParameter: number) { -// assert.equal(hints.signatures.length, 1); -// assert.equal(hints.signatures[0].parameters.length, paramNames.length); -// var i= 0; -// var label = hints.signatures[0].label; -// hints.signatures[0].parameters.forEach(function(param) { -// assert.equal(param.label, paramNames[i++]); -// assert.equal(param.label, label.substring(param.signatureLabelOffset, param.signatureLabelEnd)); -// }); -// assert.equal(hints.currentParameter, currentParameter); -// }; - - -// suite('PHP - Intellisense', () => { - -// test('Globals', function(testDone):any { -// Promise.join([ -// testSuggestionsFor(' testDone(), (errors:any[]) => { -// testDone(errors.reduce((e1, e2) => e1 || e2)); -// }); -// }); - -// test('Variables', function(testDone):any { -// WinJS.Promise.join([ -// testSuggestionsFor(' testDone(), (errors:any[]) => { -// testDone(errors.reduce((e1, e2) => e1 || e2)); -// }); -// }); -// }); - -// suite('PHP - Parameter hints', () => { - -// test('Globals', function(testDone): any { -// WinJS.Promise.join([ -// testParameterHintsFor(' testDone(), (errors:any[]) => { -// testDone(errors.reduce((e1, e2) => e1 || e2)); -// }); -// }); - -// test('With arguments', function(testDone): any { -// WinJS.Promise.join([ -// testParameterHintsFor(' testDone(), (errors:any[]) => { -// testDone(errors.reduce((e1, e2) => e1 || e2)); -// }); -// }); - -// test('all function', function(testDone):any { - -// var testFunc = function(hints:Modes.IParameterHints):void { -// assert.ok(hints !== null); -// assert.equal(1, hints.signatures.length, name); - -// var res= hints.signatures[0].parameters.map(function(param) { return param.label; } ).join(','); -// assert.ok(hints.signatures[0].parameters.length > 0, 'parameters for ' + hints.signatures[0].label + ': ' + res); -// }; -// var promises : WinJS.Promise[] = [] -// for (var name in phpGlobals.globalfunctions) { -// if (phpGlobals.globalfunctions.hasOwnProperty(name)) { -// var entry = phpGlobals.globalfunctions[name]; -// if (entry.signature) { -// promises.push(testParameterHintsFor(' testDone(), (errors) => { -// testDone(errors[0]); -// }); - -// }); -// }); - -// suite('PHP - compute info', () => { -// test('Globals', function(testDone):any { -// WinJS.Promise.join([ -// testComputeInfo('', 'fopen').then((hints:Modes.IComputeExtraInfoResult) => { -// assert.ok(!!(hints.value || hints.htmlContent)); -// }), -// testComputeInfo('', 'welcome').then((hints:Modes.IComputeExtraInfoResult) => { -// assert.ok(hints === null); -// }) -// ]).done(() => testDone(), (errors:any[]) => { -// testDone(errors.reduce((e1, e2) => e1 || e2)); -// }); -// }); -// });