OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 import 'dart:async'; | 5 import 'dart:async'; |
6 import 'dart:convert'; | 6 import 'dart:convert'; |
7 import 'dart:io'; | 7 import 'dart:io'; |
8 | 8 |
9 import 'package:bazel_worker/bazel_worker.dart'; | 9 import 'package:bazel_worker/bazel_worker.dart'; |
10 // TODO(jakemac): Remove once this is a part of the testing library. | 10 // TODO(jakemac): Remove once this is a part of the testing library. |
11 import 'package:bazel_worker/src/async_message_grouper.dart'; | 11 import 'package:bazel_worker/src/async_message_grouper.dart'; |
12 import 'package:bazel_worker/testing.dart'; | 12 import 'package:bazel_worker/testing.dart'; |
13 import 'package:test/test.dart'; | 13 import 'package:test/test.dart'; |
14 | 14 |
15 main() { | 15 main() { |
16 group('Hello World', () { | 16 group('Hello World', () { |
| 17 final argsFile = new File('test/worker/hello_world.args').absolute; |
17 final inputDartFile = new File('test/worker/hello_world.dart').absolute; | 18 final inputDartFile = new File('test/worker/hello_world.dart').absolute; |
18 final outputJsFile = new File('test/worker/hello_world.js').absolute; | 19 final outputJsFile = new File('test/worker/hello_world.js').absolute; |
19 final executableArgs = [ | 20 final executableArgs = ['bin/dartdevc.dart', 'compile',]; |
20 'bin/dartdevc.dart', | |
21 'compile', | |
22 ]; | |
23 final compilerArgs = [ | 21 final compilerArgs = [ |
24 '--no-source-map', | 22 '--no-source-map', |
25 '--no-summarize', | 23 '--no-summarize', |
26 '-o', | 24 '-o', |
27 outputJsFile.path, | 25 outputJsFile.path, |
28 inputDartFile.path, | 26 inputDartFile.path, |
29 ]; | 27 ]; |
30 | 28 |
31 setUp(() { | 29 setUp(() { |
32 inputDartFile.createSync(); | 30 inputDartFile.createSync(); |
33 inputDartFile.writeAsStringSync('main() => print("hello world");'); | 31 inputDartFile.writeAsStringSync('main() => print("hello world");'); |
34 }); | 32 }); |
35 | 33 |
36 tearDown(() { | 34 tearDown(() { |
37 if (inputDartFile.existsSync()) inputDartFile.deleteSync(); | 35 if (inputDartFile.existsSync()) inputDartFile.deleteSync(); |
38 if (outputJsFile.existsSync()) outputJsFile.deleteSync(); | 36 if (outputJsFile.existsSync()) outputJsFile.deleteSync(); |
| 37 if (argsFile.existsSync()) argsFile.deleteSync(); |
39 }); | 38 }); |
40 | 39 |
41 test('can compile in worker mode', () async { | 40 test('can compile in worker mode', () async { |
42 var args = new List.from(executableArgs)..add('--persistent_worker'); | 41 var args = new List.from(executableArgs)..add('--persistent_worker'); |
43 var process = await Process.start('dart', args); | 42 var process = await Process.start('dart', args); |
44 var messageGrouper = new AsyncMessageGrouper(process.stdout); | 43 var messageGrouper = new AsyncMessageGrouper(process.stdout); |
45 | 44 |
46 var request = new WorkRequest(); | 45 var request = new WorkRequest(); |
47 request.arguments.addAll(compilerArgs); | 46 request.arguments.addAll(compilerArgs); |
48 process.stdin.add(protoToDelimitedBuffer(request)); | 47 process.stdin.add(protoToDelimitedBuffer(request)); |
(...skipping 23 matching lines...) Expand all Loading... |
72 | 71 |
73 test('can compile in basic mode', () { | 72 test('can compile in basic mode', () { |
74 var args = new List.from(executableArgs)..addAll(compilerArgs); | 73 var args = new List.from(executableArgs)..addAll(compilerArgs); |
75 var result = Process.runSync('dart', args); | 74 var result = Process.runSync('dart', args); |
76 | 75 |
77 expect(result.exitCode, EXIT_CODE_OK); | 76 expect(result.exitCode, EXIT_CODE_OK); |
78 expect(result.stdout, isEmpty); | 77 expect(result.stdout, isEmpty); |
79 expect(result.stderr, isEmpty); | 78 expect(result.stderr, isEmpty); |
80 expect(outputJsFile.existsSync(), isTrue); | 79 expect(outputJsFile.existsSync(), isTrue); |
81 }); | 80 }); |
| 81 |
| 82 test('can compile in basic mode with args in a file', () async { |
| 83 argsFile.createSync(); |
| 84 argsFile.writeAsStringSync(compilerArgs.join('\n')); |
| 85 var args = new List.from(executableArgs)..add('@${argsFile.path}'); |
| 86 var process = await Process.start('dart', args); |
| 87 stderr.addStream(process.stderr); |
| 88 var futureProcessOutput = process.stdout.map(UTF8.decode).toList(); |
| 89 |
| 90 expect(await process.exitCode, EXIT_CODE_OK); |
| 91 expect((await futureProcessOutput).join(), isEmpty); |
| 92 expect(outputJsFile.existsSync(), isTrue); |
| 93 }); |
82 }); | 94 }); |
83 | 95 |
84 group('Hello World with Summaries', () { | 96 group('Hello World with Summaries', () { |
85 final greetingDart = new File('test/worker/greeting.dart').absolute; | 97 final greetingDart = new File('test/worker/greeting.dart').absolute; |
86 final helloDart = new File('test/worker/hello.dart').absolute; | 98 final helloDart = new File('test/worker/hello.dart').absolute; |
87 | 99 |
88 final greetingJS = new File('test/worker/greeting.js').absolute; | 100 final greetingJS = new File('test/worker/greeting.js').absolute; |
89 final greetingSummary = new File('test/worker/greeting.sum').absolute; | 101 final greetingSummary = new File('test/worker/greeting.sum').absolute; |
90 final helloJS = new File('test/worker/hello_world.js').absolute; | 102 final helloJS = new File('test/worker/hello_world.js').absolute; |
91 | 103 |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 expect(helloJS.existsSync(), isTrue); | 148 expect(helloJS.existsSync(), isTrue); |
137 }); | 149 }); |
138 }); | 150 }); |
139 } | 151 } |
140 | 152 |
141 Future<WorkResponse> _readResponse(MessageGrouper messageGrouper) async { | 153 Future<WorkResponse> _readResponse(MessageGrouper messageGrouper) async { |
142 var buffer = await messageGrouper.next; | 154 var buffer = await messageGrouper.next; |
143 try { | 155 try { |
144 return new WorkResponse.fromBuffer(buffer); | 156 return new WorkResponse.fromBuffer(buffer); |
145 } catch (_) { | 157 } catch (_) { |
146 throw 'Failed to parse response: \n' | 158 var bufferAsString = |
147 'bytes: $buffer\n' | 159 buffer == null ? '' : 'String: ${UTF8.decode(buffer)}\n'; |
148 'String: ${new String.fromCharCodes(buffer)}\n'; | 160 throw 'Failed to parse response:\nbytes: $buffer\n$bufferAsString'; |
149 } | 161 } |
150 } | 162 } |
OLD | NEW |