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

Side by Side Diff: tests/servicec/servicec_tests.dart

Issue 2035023003: Remove service-compiler related code. (Closed) Base URL: git@github.com:dartino/sdk.git@master
Patch Set: Created 4 years, 6 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 unified diff | Download patch
« no previous file with comments | « tests/servicec/scanner_tests.dart ('k') | tests/servicec/test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 import 'dart:async' show
6 Future;
7
8 import 'dart:io' show
9 Directory,
10 File,
11 FileSystemEntity,
12 Platform;
13
14 import 'dart:math' show
15 min;
16
17 import 'package:path/path.dart' show join;
18
19 import 'package:expect/expect.dart';
20 import 'package:servicec/compiler.dart' as servicec;
21 import 'package:servicec/errors.dart' show
22 CompilationError,
23 ErrorTag,
24 compilerErrorTypes;
25
26 import 'package:servicec/targets.dart' show
27 Target;
28
29 import 'scanner_tests.dart' show
30 SCANNER_TESTS;
31
32 import 'test.dart' show
33 Test;
34
35 import 'camelize_test.dart' show
36 CamelizeTest;
37
38 /// Absolute path to the build directory used by test.py.
39 const String buildDirectory =
40 const String.fromEnvironment('test.dart.build-dir');
41
42 /// Relative path to the directory containing input files.
43 const String filesDirectory = "tests/servicec/input_files";
44
45 /// Temporary directory for test output.
46 const String tempTestOutputDirectory =
47 const String.fromEnvironment("test.dart.temp-dir");
48
49 final String generatedDirectory = '$tempTestOutputDirectory/servicec_tests';
50
51 final String servicecDirectory =
52 const String.fromEnvironment('test.dart.servicec-dir');
53
54 final String resourcesDirectory = join(servicecDirectory, 'lib', 'src',
55 'resources');
56
57 class FileTest extends Test {
58 final Target target;
59 final String outputDirectory;
60
61 FileTest(String name, {this.target: Target.ALL})
62 : outputDirectory = "$generatedDirectory/$name",
63 super(name);
64
65 Future perform() async {
66 String input = new File("$filesDirectory/$name.idl").readAsStringSync();
67 List<ErrorTag> expectedErrors = extractExpectedErrors(input);
68 List<CompilationError> actualErrors =
69 (await servicec.compileInput(input,
70 name,
71 resourcesDirectory,
72 outputDirectory)).toList();
73
74 int length = min(expectedErrors.length, actualErrors.length);
75 for (int i = 0; i < length; ++i) {
76 Expect.equals(expectedErrors[i], actualErrors[i].tag);
77 }
78 Expect.equals(expectedErrors.length, actualErrors.length,
79 "Expected a different amount of errors");
80 if (actualErrors.length == 0) {
81 try {
82 await checkOutputDirectoryStructure(outputDirectory, target);
83 } finally {
84 nukeDirectory(outputDirectory);
85 }
86 }
87 }
88
89 List<ErrorTag> extractExpectedErrors(String input) {
90 List<ErrorTag> result = <ErrorTag>[];
91
92 List<String> lines = input.split("\n");
93 for (String line in lines) {
94 List<String> split = line.split("//");
95 if (split.length > 1) {
96 List<String> words = split[1].trim().split(" ");
97 if (words.length == 1) {
98 addWordIfError(words[0], result);
99 }
100 }
101 }
102
103 return result;
104 }
105
106 void addWordIfError(String word, List<ErrorTag> errors) {
107 ErrorTag error = compilerErrorTypes["ErrorTag.$word"];
108 if (null != error) errors.add(error);
109 }
110 }
111
112 // Helpers for Success.
113
114 Future checkOutputDirectoryStructure(String outputDirectory, Target target)
115 async {
116 // If the root out dir does not exist there is no point in checking the
117 // children dirs.
118 await checkDirectoryExists(outputDirectory);
119
120 if (target.includes(Target.JAVA)) {
121 await checkDirectoryExists(outputDirectory + '/java');
122 }
123 if (target.includes(Target.CC)) {
124 await checkDirectoryExists(outputDirectory + '/cc');
125 }
126 }
127
128 Future checkDirectoryExists(String dirName) async {
129 var dir = new Directory(dirName);
130 Expect.isTrue(await dir.exists(), "Directory $dirName does not exist");
131 }
132
133 // TODO(stanm): Move cleanup logic to dartino_tests setup
134 Future nukeDirectory(String dirName) async {
135 var dir = new Directory(dirName);
136 await dir.delete(recursive: true);
137 }
138
139 // Test entry point.
140
141 typedef Future NoArgFuture();
142
143 Future<Map<String, NoArgFuture>> listTests() async {
144 var tests = <String, NoArgFuture>{};
145 List<FileSystemEntity> files = new Directory(filesDirectory).listSync();
146 for (File file in files) {
147 String filename = file.path.split("/").last;
148 String testname = filename.substring(0, filename.indexOf('.idl'));
149 tests['servicec/$testname'] = new FileTest(testname).perform;
150 }
151
152 for (Test test in SCANNER_TESTS) {
153 tests['servicec/scanner/${test.name}'] = test.perform;
154 }
155
156 tests['servicec/camelize'] = new CamelizeTest().perform;
157 return tests;
158 }
OLDNEW
« no previous file with comments | « tests/servicec/scanner_tests.dart ('k') | tests/servicec/test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698