From 384859a840b1244612f8937fdeaaadf37a758b2d Mon Sep 17 00:00:00 2001 From: Daniel Leech Date: Sun, 19 Sep 2021 18:33:25 +0100 Subject: [PATCH 1/2] Use ClosureCommand --- tests/LanguageServer/Example/TestExtension.php | 10 ++++------ .../Unit/LanguageServerExtensionTest.php | 5 +++++ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/tests/LanguageServer/Example/TestExtension.php b/tests/LanguageServer/Example/TestExtension.php index c4ddc05..ea893dd 100644 --- a/tests/LanguageServer/Example/TestExtension.php +++ b/tests/LanguageServer/Example/TestExtension.php @@ -14,6 +14,7 @@ use Phpactor\LanguageServerProtocol\Range; use Phpactor\LanguageServerProtocol\TextDocumentItem; use Phpactor\LanguageServer\Core\CodeAction\CodeActionProvider; +use Phpactor\LanguageServer\Core\Command\ClosureCommand; use Phpactor\LanguageServer\Core\Command\Command as CoreCommand; use Phpactor\LanguageServer\Core\Handler\Handler; use Phpactor\LanguageServer\Core\Rpc\NotificationMessage; @@ -70,12 +71,9 @@ public function test() }, [ LanguageServerExtension::TAG_SERVICE_PROVIDER => []]); $container->register('test.command', function (Container $container) { - return new class implements CoreCommand { - public function __invoke(string $text): Promise - { - return new Success($text); - } - }; + return new ClosureCommand(function (string $text): Promise { + return new Success($text); + }); }, [ LanguageServerExtension::TAG_COMMAND => [ 'name' => 'echo', diff --git a/tests/LanguageServer/Unit/LanguageServerExtensionTest.php b/tests/LanguageServer/Unit/LanguageServerExtensionTest.php index b1bcd28..fc4e965 100644 --- a/tests/LanguageServer/Unit/LanguageServerExtensionTest.php +++ b/tests/LanguageServer/Unit/LanguageServerExtensionTest.php @@ -9,6 +9,7 @@ use Phpactor\LanguageServer\Core\Rpc\RequestMessage; use Phpactor\LanguageServer\Core\Server\Exception\ExitSession; use Phpactor\LanguageServer\Listener\WorkspaceListener; +use Phpactor\LanguageServer\WorkDoneProgress\ProgressNotifier; use RuntimeException; use function Amp\Promise\wait; use function Amp\delay; @@ -161,4 +162,8 @@ public function testEnableFileEvents(): void assert($message instanceof RequestMessage); self::assertEquals('client/registerCapability', $message->method); } + + public function testRetrieveProgressNotifier(): void + { + } } From 27c92a7ee5c8277ae98b77153e4b05dd4f55c3fc Mon Sep 17 00:00:00 2001 From: Daniel Leech Date: Sun, 19 Sep 2021 18:42:44 +0100 Subject: [PATCH 2/2] Failing test for progress notifier --- composer.json | 5 +++-- .../LanguageServer/Example/TestExtension.php | 19 +++++++++++++++++++ .../Unit/LanguageServerExtensionTest.php | 8 +++++++- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/composer.json b/composer.json index 50b9a55..479aebc 100644 --- a/composer.json +++ b/composer.json @@ -15,7 +15,7 @@ "phpactor/console-extension": "^0.1.6", "phpactor/container": "^2.0.0", "phpactor/file-path-resolver-extension": "^0.3.4", - "phpactor/language-server": "^1.1.0", + "phpactor/language-server": "^1.1.1", "phpactor/logging-extension": "^0.3.4", "phpactor/text-document": "^1.2.3" }, @@ -26,7 +26,8 @@ "phpactor/test-utils": "^1.1.3", "phpspec/prophecy-phpunit": "^2.0", "phpstan/phpstan": "~0.12.0", - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^9.0", + "symfony/var-dumper": "^5.3" }, "extra": { "branch-alias": { diff --git a/tests/LanguageServer/Example/TestExtension.php b/tests/LanguageServer/Example/TestExtension.php index ea893dd..02fece2 100644 --- a/tests/LanguageServer/Example/TestExtension.php +++ b/tests/LanguageServer/Example/TestExtension.php @@ -16,10 +16,13 @@ use Phpactor\LanguageServer\Core\CodeAction\CodeActionProvider; use Phpactor\LanguageServer\Core\Command\ClosureCommand; use Phpactor\LanguageServer\Core\Command\Command as CoreCommand; +use Phpactor\LanguageServer\Core\Handler\ClosureHandler; use Phpactor\LanguageServer\Core\Handler\Handler; use Phpactor\LanguageServer\Core\Rpc\NotificationMessage; use Phpactor\LanguageServer\Core\Server\ClientApi; use Phpactor\LanguageServer\Core\Service\ServiceProvider; +use Phpactor\LanguageServer\WorkDoneProgress\ProgressNotifier; +use Phpactor\LanguageServer\WorkDoneProgress\WorkDoneToken; use Phpactor\MapResolver\Resolver; class TestExtension implements Extension @@ -80,6 +83,22 @@ public function test() ], ]); + $container->register('test.progress_notifier_handler', function (Container $container) { + + return new ClosureHandler('test/progress_notifier', function () use ($container){ + $notifier = $container->get(ProgressNotifier::class); + assert($notifier instanceof ProgressNotifier); + $token = WorkDoneToken::generate(); + $notifier->begin($token, 'Test'); + $notifier->report($token); + $notifier->end($token, 'Done'); + + return new Success(true); + }); + }, [ + LanguageServerExtension::TAG_METHOD_HANDLER => [], + ]); + $container->register('test.code_action_provider', function (Container $container) { return new class implements CodeActionProvider { public function provideActionsFor(TextDocumentItem $textDocument, Range $range): Promise diff --git a/tests/LanguageServer/Unit/LanguageServerExtensionTest.php b/tests/LanguageServer/Unit/LanguageServerExtensionTest.php index fc4e965..d475a55 100644 --- a/tests/LanguageServer/Unit/LanguageServerExtensionTest.php +++ b/tests/LanguageServer/Unit/LanguageServerExtensionTest.php @@ -163,7 +163,13 @@ public function testEnableFileEvents(): void self::assertEquals('client/registerCapability', $message->method); } - public function testRetrieveProgressNotifier(): void + public function testProgressNotifier(): void { + $serverTester = $this->createTester(null, [ + LanguageServerExtension::PARAM_FILE_EVENTS => true + ]); + $serverTester->initialize(); + $response = wait($serverTester->notify('test/progress_notifier', [])); + dump($response); } }