Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(170)

Unified Diff: pkg/front_end/test/fasta/tool_test.dart

Issue 3003743002: Move tools to tool folder. (Closed)
Patch Set: Fix two problems that show up elsewhere. Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/front_end/test/fasta/tool_test.dart
diff --git a/pkg/front_end/test/fasta/tool_test.dart b/pkg/front_end/test/fasta/tool_test.dart
new file mode 100644
index 0000000000000000000000000000000000000000..3185dd0b2b7d25cfb277df46626a2439dc91c5f8
--- /dev/null
+++ b/pkg/front_end/test/fasta/tool_test.dart
@@ -0,0 +1,179 @@
+// Copyright (c) 2016, 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.
+
+/// Tests the tool `pkg/front_end/tool/fasta`.
+
+import "dart:convert";
+
+import "dart:io";
+
+import "package:expect/expect.dart";
+
+import "package:front_end/src/fasta/fasta_codes.dart"
+ show messageFastaUsageShort;
+
+const String toolPath = "pkg/front_end/tool/fasta";
+
+const List<String> subtools = const <String>[
+ "abcompile",
+ "analyzer-compile",
+ "compile",
+ "compile-platform",
+ "compile-platform-dartk",
+ "log",
+ "logd",
+ "outline",
+ "parser",
+ "run",
+ "scanner",
+ "dump-partial",
+ "dump-ir",
+ "kernel-service",
+ "testing",
+ "generate-messages",
+];
+
+/// An unsafe tool is a tool that shouldn't be run during this test. Please
+/// document below why the tool shouldn't be run, and how it is tested.
+const List<String> unsafeTools = const <String>[
+ // This modifies the source code in the repository, and that could cause
+ // other tests to fail. This tool is tested as we invoke it everytime we edit
+ // messages.yaml.
+ "generate-messages",
+
+ // This is a daemon process that never terminates. It's not currently tested
+ // directly.
+ "logd",
+
+ // This would eventually run this test again, recursively, and never
+ // finish. As this tool is part of the workflow for testing Fasta, we assume
+ // is exercised sufficiently.
+ "testing",
+];
+
+const JsonEncoder prettyJson = const JsonEncoder.withIndent(" ");
+
+main() {
+ if (!Platform.isMacOS && !Platform.isLinux) {
+ // The tool is a shell script and only works on Mac and Linux.
+ return;
+ }
+ Set<String> testedSubtools = new Set<String>.from(subtools)
+ .difference(new Set<String>.from(unsafeTools));
+ Map<String, Map<String, dynamic>> resultMap =
+ <String, Map<String, dynamic>>{};
+ for (String subtool in testedSubtools) {
+ print("Testing $subtool");
+ ProcessResult result =
+ Process.runSync("/bin/bash", <String>[toolPath, subtool]);
+ resultMap[subtool] = {
+ "exitCode": result.exitCode,
+ "stdout": result.stdout,
+ "stderr": result.stderr,
+ };
+ }
+ Map<String, dynamic> scanner = resultMap["scanner"];
+ Expect.isTrue(scanner["stdout"].startsWith("Reading files took: "));
+ scanner["stdout"] = "was checked above";
+
+ Map<String, dynamic> kernelService = resultMap["kernel-service"];
+ Expect.isTrue(kernelService["stderr"].startsWith("Usage: dart ["));
+ kernelService["stderr"] = "was checked above";
+
+ String jsonResult = prettyJson.convert(resultMap);
+ String usage = messageFastaUsageShort.message;
+
+ String jsonExpectation = prettyJson.convert({
+ "abcompile": {
+ "exitCode": 1,
+ "stdout": """[]
+Expected -DbRoot=/absolute/path/to/other/sdk/repo
+""",
+ "stderr": "",
+ },
+ "analyzer-compile": {
+ "exitCode": 2,
+ "stdout": "",
+ "stderr": "'analyzer-compile' isn't supported anymore,"
+ " please use 'compile' instead.\n",
+ },
+ "compile": {
+ "exitCode": 1,
+ "stdout": """Usage: compile [options] dartfile
+
+Compiles a Dart program to the Dill/Kernel IR format.
+
+$usage
+Error: No Dart file specified.
+""",
+ "stderr": "",
+ },
+ "compile-platform": {
+ "exitCode": 1,
+ "stdout": """
+Usage: compile_platform [options] patched_sdk fullOutput outlineOutput
+
+Compiles Dart SDK platform to the Dill/Kernel IR format.
+
+$usage
+Error: Expected three arguments.
+""",
+ "stderr": "",
+ },
+ "compile-platform-dartk": {
+ "exitCode": 2,
+ "stdout": "",
+ "stderr": "Usage: compile-platform-dartk file\n",
+ },
+ "log": {
+ "exitCode": 0,
+ "stdout": "",
+ "stderr": "",
+ },
+ "outline": {
+ "exitCode": 1,
+ "stdout": """Usage: outline [options] dartfile
+
+Creates an outline of a Dart program in the Dill/Kernel IR format.
+
+$usage
+Error: No Dart file specified.
+""",
+ "stderr": "",
+ },
+ "parser": {
+ "exitCode": 0,
+ "stdout": "",
+ "stderr": "",
+ },
+ "run": {
+ "exitCode": 2,
+ "stdout": "",
+ "stderr": "'run' isn't supported anymore,"
+ " please use 'kernel-service' instead.\n",
+ },
+ "scanner": {
+ "exitCode": 0,
+ "stdout": "was checked above",
+ "stderr": "",
+ },
+ "dump-partial": {
+ "exitCode": 1,
+ "stdout": "usage: pkg/front_end/tool/fasta dump_partial"
+ " partial.dill [extra1.dill] ... [extraN.dill]\n",
+ "stderr": "",
+ },
+ "dump-ir": {
+ "exitCode": 2,
+ "stdout": "",
+ "stderr": "Usage: dump-ir dillfile [output]\n",
+ },
+ "kernel-service": {
+ "exitCode": 255,
+ "stdout": "",
+ "stderr": "was checked above",
+ },
+ });
+ Expect.stringEquals(jsonExpectation, jsonResult);
+}

Powered by Google App Engine
This is Rietveld 408576698