Files
sdk/pkg/analysis_server/test
Danny Tuppeny 1b04589b5d [analysis_server] Improve error reported by handleExpectedRequest when the expected request never arrives
The `handleExpectedRequest` test method sends a request to the server and expects a request back (for example executing a command that will trigger server-to-client applyEdit). There is a timeout (since this request may never come), but in the case where the timeout is caused by the outbound request failing, we should report that failure instead (since it is certainly the cause of the timeout).

This changes the code to capture the error from the outbound request, and _if_ the expected request never comes, throws that in preference to the timeout.

Before:

```
00:05 +0 -1: ApplyAllFixesInWorkspace | test_partFile_issue59572 [E]

  TimeoutException after 0:00:05.000000: Future not completed

  test\lsp\server_abstract.dart 1143:15                             LspAnalysisServerTestMixin.expectRequest.<fn>
  dart:async/zone.dart 1517:47                                      _rootRun
  dart:async/zone.dart 1422:19                                      _CustomZone.run
  dart:async/future_impl.dart 1036:34                               Future.timeout.<fn>
  ===== asynchronous gap ===========================
  test\lsp\server_abstract.dart 1139:29                             LspAnalysisServerTestMixin.expectRequest
  ===== asynchronous gap ===========================
  test\lsp\server_abstract.dart 1190:27                             LspAnalysisServerTestMixin.handleExpectedRequest
  ===== asynchronous gap ===========================
  test\lsp\server_abstract.dart 155:27                              AbstractLspAnalysisServerTest.executeForEdits
```

After:

```
00:05 +0 -1: ApplyAllFixesInWorkspace | test_partFile_issue59572 [E]

  {
      "code": -32006,
      "message": "dart.edit.fixAllInWorkspace requires a single Map argument"
  }

  test\lsp\server_abstract.dart 1211:7  LspAnalysisServerTestMixin.handleExpectedRequest.<fn>
  dart:async/zone.dart 1538:47          _rootRunUnary
  dart:async/zone.dart 1429:19          _CustomZone.runUnary
  dart:async/future_impl.dart 229:22    _FutureListener.handleError
  dart:async/future_impl.dart 944:47    Future._propagateToListeners.handleError
  dart:async/future_impl.dart 965:13    Future._propagateToListeners
  dart:async/future_impl.dart 730:5     Future._completeError
```

Additionally, if the timeout is not because of a failed outbound request, the error message is now like "Did not receive the expected workspace/applyEdit request from the server in the timeout period" instead of "Future not completed".

Fixes https://github.com/dart-lang/sdk/issues/59780

Change-Id: I8b8cc25194390ffffbe034eae313504792a42211
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/403460
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2025-01-07 13:14:11 -08:00
..
2024-12-11 11:07:59 -08:00