| // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | |
| // for details. All rights reserved. Use of this source code is governed by a | |
| // BSD-style license that can be found in the LICENSE file. | |
| import 'dart:async'; | |
| import 'package:analysis_server/protocol/protocol_generated.dart'; | |
| import 'package:test/test.dart'; | |
| import 'package:test_reflective_loader/test_reflective_loader.dart'; | |
| import '../support/integration_tests.dart'; | |
| void main() { | |
| defineReflectiveSuite(() { | |
| defineReflectiveTests(SetSubscriptionsTest); | |
| }); | |
| } | |
| /// Wrapper around the test package's `fail` function. | |
| /// | |
| /// Unlike the test package's `fail` function, this function is not annotated | |
| /// with @alwaysThrows, so we can call it at the top of a test method without | |
| /// causing the rest of the method to be flagged as dead code. | |
| void _fail(String message) { | |
| fail(message); | |
| } | |
| @reflectiveTest | |
| class SetSubscriptionsTest extends AbstractAnalysisServerIntegrationTest { | |
| @failingTest | |
| Future<void> test_setSubscriptions() async { | |
| // This test times out on the bots and has been disabled to keep them green. | |
| // We need to discover the cause and re-enable it. | |
| _fail( | |
| 'This test times out on the bots and has been disabled to keep them green.' | |
| 'We need to discover the cause and re-enable it.', | |
| ); | |
| var statusReceived = false; | |
| var analysisBegun = Completer(); | |
| onServerStatus.listen((_) { | |
| statusReceived = true; | |
| }); | |
| onAnalysisErrors.listen((_) { | |
| if (!analysisBegun.isCompleted) { | |
| analysisBegun.complete(); | |
| } | |
| }); | |
| await sendServerSetSubscriptions([]); | |
| var pathname = sourcePath('test.dart'); | |
| writeFile(pathname, ''' | |
| void f() { | |
| var x; | |
| }'''); | |
| await standardAnalysisSetup(subscribeStatus: false); | |
| // Analysis should begin, but no server.status notification should be | |
| // received. | |
| await analysisBegun.future; | |
| expect(statusReceived, isFalse); | |
| await sendServerSetSubscriptions([ServerService.STATUS]); | |
| // Tickle test.dart just in case analysis has already completed. | |
| writeFile(pathname, ''' | |
| void f() { | |
| var y; | |
| }'''); | |
| // Analysis should eventually complete, and we should be notified | |
| // about it. | |
| await analysisFinished; | |
| } | |
| } |