Index: tests/fletch_tests/message_tests.dart |
diff --git a/tests/fletch_tests/message_tests.dart b/tests/fletch_tests/message_tests.dart |
deleted file mode 100644 |
index 056fd521e963df72632e4d8878d9016bc620c364..0000000000000000000000000000000000000000 |
--- a/tests/fletch_tests/message_tests.dart |
+++ /dev/null |
@@ -1,296 +0,0 @@ |
-// Copyright (c) 2015, the Dartino 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.md file. |
- |
-import 'dart:async' show |
- Completer, |
- Future, |
- Stream, |
- StreamController, |
- Zone; |
- |
-import 'dart:convert' show |
- UTF8; |
- |
-import 'package:expect/expect.dart' show |
- Expect; |
- |
-import 'package:fletchc/src/diagnostic.dart'; |
- |
-import 'package:fletchc/src/messages.dart'; |
- |
-import 'package:fletchc/src/message_examples.dart'; |
- |
-import 'package:fletchc/src/hub/sentence_parser.dart' show |
- NamedTarget, |
- Sentence, |
- parseSentence; |
- |
-import 'package:fletchc/src/verbs/actions.dart' show |
- Action; |
- |
-import 'package:fletchc/src/hub/hub_main.dart' show |
- ClientLogger, |
- ClientConnection, |
- IsolatePool, |
- handleVerb; |
- |
-import 'package:fletchc/src/worker/worker_main.dart' show |
- workerMain; |
- |
-import 'package:fletchc/src/hub/session_manager.dart' show |
- endAllSessions; |
- |
-import 'package:fletchc/src/hub/client_commands.dart' show |
- ClientCommand, |
- ClientCommandCode; |
- |
-import 'package:fletchc/src/verbs/infrastructure.dart' show |
- AnalyzedSentence, |
- Options, |
- analyzeSentence; |
- |
-import 'package:fletchc/src/worker/developer.dart' show |
- parseSettings; |
- |
-final IsolatePool pool = new IsolatePool(workerMain); |
- |
-Future<Null> main() async { |
- for (DiagnosticKind kind in DiagnosticKind.values) { |
- Expect.isNotNull(getMessage(kind), "$kind"); |
- |
- List<Example> examples = getExamples(kind); |
- Expect.isNotNull(examples, "$kind"); |
- Expect.isFalse(examples.isEmpty, "$kind"); |
- int exampleCount = 1; |
- for (Example example in examples) { |
- print("\n\nTesting $kind ${exampleCount++}"); |
- Expect.isNotNull(example); |
- await checkExample(kind, example); |
- endAllSessions(); |
- pool.shutdown(); |
- } |
- print("Done testing $kind"); |
- } |
-} |
- |
-Future<Null> checkExample(DiagnosticKind kind, Example example) async { |
- if (example is CommandLineExample) { |
- await checkCommandLineExample(kind, example); |
- } else if (example is SettingsExample) { |
- checkSettingsExample(kind, example); |
- } else if (example is Untestable) { |
- // Ignored. |
- } else { |
- throw "Unknown kind of example: $example"; |
- } |
-} |
- |
-void checkSettingsExample(DiagnosticKind kind, SettingsExample example) { |
- Uri mockUri = new Uri(scheme: "org.dartlang.tests.mock"); |
- try { |
- parseSettings(example.data, mockUri); |
- throw "Settings example: '${example.data}' " |
- "didn't produce the expected '$kind' error"; |
- } on InputError catch (e) { |
- Expect.isNotNull(e); |
- Expect.equals(kind, e.kind, '$e'); |
- // Ensure that the diagnostic can be turned into a formatted error message. |
- String message = e.asDiagnostic().formatMessage(); |
- Expect.isNotNull(message); |
- } |
-} |
- |
-Future<Null> checkCommandLineExample( |
- DiagnosticKind kind, |
- CommandLineExample example) async { |
- List<List<String>> lines = <List<String>>[]; |
- if (example.line1 != null) { |
- lines.add(example.line1); |
- } |
- if (example.line2 != null) { |
- lines.add(example.line2); |
- } |
- if (example.line3 != null) { |
- lines.add(example.line3); |
- } |
- List<String> lastLine = lines.removeLast(); |
- for (List<String> setup in lines) { |
- MockClientConnection mock = await mockCommandLine(setup); |
- await mock.done; |
- Expect.isNull(mock.recordedError); |
- Expect.equals(0, mock.recordedExitCode); |
- } |
- MockClientConnection mock = await mockCommandLine(lastLine); |
- if (kind == DiagnosticKind.socketVmConnectError) { |
- await mock.done; |
- Options options = Options.parse(lastLine); |
- Sentence sentence = parseSentence(options.nonOptionArguments); |
- NamedTarget target = sentence.targets.single; |
- String message = mock.stderrMessages.single; |
- String expectedMessage = new Diagnostic( |
- kind, getMessage(kind), |
- {DiagnosticParameter.address: target.name, |
- DiagnosticParameter.message: '.*'}) |
- .formatMessage(); |
- Expect.stringEquals( |
- message, |
- new RegExp(expectedMessage).stringMatch(message)); |
- } else if (kind == DiagnosticKind.attachToVmBeforeRun) { |
- await mock.done; |
- Expect.stringEquals(getMessage(kind), mock.stderrMessages.single); |
- } else { |
- Expect.isNotNull(mock.recordedError); |
- Expect.equals(kind, mock.recordedError.kind, '${mock.recordedError}'); |
- // Ensure that the diagnostic can be turned into a formatted error message. |
- String message = mock.recordedError.asDiagnostic().formatMessage(); |
- Expect.isNotNull(message); |
- } |
- Expect.equals(1, mock.recordedExitCode); |
-} |
- |
-Future<MockClientConnection> mockCommandLine(List<String> arguments) async { |
- print("Command line: ${arguments.join(' ')}"); |
- MockClientConnection client = new MockClientConnection(); |
- await handleVerb(arguments, client, pool); |
- return client; |
-} |
- |
-class MockClientConnection implements ClientConnection { |
- InputError recordedError; |
- |
- int recordedExitCode; |
- |
- final ClientLogger log = new MockClientLogger(); |
- |
- final Completer mockCompleter = new Completer(); |
- |
- final List<String> stderrMessages = <String>[]; |
- |
- final StreamController<ClientCommand> controller = |
- new StreamController<ClientCommand>(); |
- |
- AnalyzedSentence sentence; |
- |
- MockClientConnection(); |
- |
- get completer => mockCompleter; |
- |
- get done => completer.future; |
- |
- get commands => controller.stream; |
- |
- void sendCommandToWorker(ClientCommand command) { |
- controller.add(command); |
- } |
- |
- sendCommandToClient(ClientCommand command) { |
- switch (command.code) { |
- case ClientCommandCode.ExitCode: |
- exit(command.data); |
- break; |
- |
- case ClientCommandCode.Stderr: |
- printLineOnStderr(mockStripNewline(UTF8.decode(command.data))); |
- break; |
- |
- case ClientCommandCode.Stdout: |
- printLineOnStdout(mockStripNewline(UTF8.decode(command.data))); |
- break; |
- |
- default: |
- throw "Unexpected command: ${command.code}"; |
- } |
- } |
- |
- mockStripNewline(String line) { |
- if (line.endsWith("\n")) { |
- return line.substring(0, line.length - 1); |
- } else { |
- return line; |
- } |
- } |
- |
- endSession() { |
- completer.complete(null); |
- } |
- |
- mockPrintLine(String line) { |
- Zone zone = Zone.current.parent; |
- if (zone == null) { |
- zone = Zone.current; |
- } |
- zone.print(line); |
- } |
- |
- printLineOnStderr(line) { |
- stderrMessages.add(line); |
- mockPrintLine('stderr: $line'); |
- } |
- |
- printLineOnStdout(line) { |
- mockPrintLine('stdout: $line'); |
- } |
- |
- exit(int exitCode) { |
- recordedExitCode = exitCode; |
- if (!completer.isCompleted) { |
- endSession(); |
- } |
- } |
- |
- int reportErrorToClient(InputError error, StackTrace stackTrace) { |
- recordedError = error; |
- completer.complete(null); |
- return 1; |
- } |
- |
- AnalyzedSentence parseArguments(List<String> arguments) { |
- Options options = Options.parse(arguments); |
- Sentence sentence = parseSentence(options.nonOptionArguments); |
- this.sentence = analyzeSentence(sentence, null); |
- return this.sentence; |
- } |
- |
- handleClientCommand(_) => throw "not supported"; |
- handleClientCommandError(e, s) => throw "not supported"; |
- handleClientCommandsDone() => throw "not supported"; |
- start() => throw "not supported"; |
- get arguments => throw "not supported"; |
- get argumentsCompleter => throw "not supported"; |
- set argumentsCompleter(_) => throw "not supported"; |
- get commandSender => throw "not supported"; |
- set commandSender(_) => throw "not supported"; |
- set completer(_) => throw "not supported"; |
- get fletchVm => throw "not supported"; |
- set fletchVm(_) => throw "not supported"; |
- get requiresWorker => throw "not supported"; |
- get socket => throw "not supported"; |
- get subscription => throw "not supported"; |
- set subscription(_) => throw "not supported"; |
-} |
- |
-class MockClientLogger implements ClientLogger { |
- static int clientsAllocated = 0; |
- |
- final int id = clientsAllocated++; |
- |
- void note(object) { |
- print("$id: $object"); |
- gotArguments(null); // Removes an "unused" warning from dart2js. |
- } |
- |
- void gotArguments(_) { |
- } |
- |
- void done() { |
- } |
- |
- void error(error, StackTrace stackTrace) { |
- throw error; |
- } |
- |
- get arguments => throw "not supported"; |
- set arguments(_) => throw "not supported"; |
- get notes => throw "not supported"; |
-} |