OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 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 | 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 @TestOn("vm") | 5 @TestOn("vm") |
6 | 6 |
7 import 'dart:convert'; | 7 import 'dart:convert'; |
8 import 'dart:io'; | 8 import 'dart:io'; |
9 | 9 |
10 import 'package:path/path.dart' as p; | 10 import 'package:path/path.dart' as p; |
(...skipping 27 matching lines...) Expand all Loading... |
38 | 38 |
39 new Directory(p.join(_sandbox, "test")).createSync(); | 39 new Directory(p.join(_sandbox, "test")).createSync(); |
40 | 40 |
41 new File(p.join(_sandbox, "test", "my_test.dart")).writeAsStringSync(""" | 41 new File(p.join(_sandbox, "test", "my_test.dart")).writeAsStringSync(""" |
42 import 'package:test/test.dart'; | 42 import 'package:test/test.dart'; |
43 | 43 |
44 void main() { | 44 void main() { |
45 test("test", () => expect(true, isTrue)); | 45 test("test", () => expect(true, isTrue)); |
46 } | 46 } |
47 """); | 47 """); |
48 }); | |
49 | 48 |
50 tearDown(() { | 49 new Directory(p.join(_sandbox, "lib")).createSync(); |
51 new Directory(_sandbox).deleteSync(recursive: true); | |
52 }); | |
53 | 50 |
54 group("with transformed tests", () { | 51 new File(p.join(_sandbox, "lib", "myapp.dart")).writeAsStringSync(""" |
55 setUp(() { | |
56 new Directory(p.join(_sandbox, "lib")).createSync(); | |
57 | |
58 new File(p.join(_sandbox, "lib", "myapp.dart")).writeAsStringSync(""" | |
59 import 'package:barback/barback.dart'; | 52 import 'package:barback/barback.dart'; |
60 | 53 |
61 class MyTransformer extends Transformer { | 54 class MyTransformer extends Transformer { |
62 final allowedExtensions = '.dart'; | 55 final allowedExtensions = '.dart'; |
63 | 56 |
64 MyTransformer.asPlugin(); | 57 MyTransformer.asPlugin(); |
65 | 58 |
66 Future apply(Transform transform) { | 59 Future apply(Transform transform) { |
67 return transform.primaryInput.readAsString().then((contents) { | 60 return transform.primaryInput.readAsString().then((contents) { |
68 print("contents: \$contents"); | 61 print("contents: \$contents"); |
69 print("new contents: \${contents.replaceAll("isFalse", "isTrue")}"); | 62 print("new contents: \${contents.replaceAll("isFalse", "isTrue")}"); |
70 transform.addOutput(new Asset.fromString( | 63 transform.addOutput(new Asset.fromString( |
71 transform.primaryInput.id, | 64 transform.primaryInput.id, |
72 contents.replaceAll("isFalse", "isTrue"))); | 65 contents.replaceAll("isFalse", "isTrue"))); |
73 }); | 66 }); |
74 } | 67 } |
75 } | 68 } |
76 """); | 69 """); |
77 | 70 |
78 var pubGetResult = runPub(['get'], workingDirectory: _sandbox); | 71 var pubGetResult = runPub(['get'], workingDirectory: _sandbox); |
79 expect(pubGetResult.exitCode, equals(0)); | 72 expect(pubGetResult.exitCode, equals(0)); |
80 }); | 73 }); |
81 | 74 |
| 75 tearDown(() { |
| 76 new Directory(_sandbox).deleteSync(recursive: true); |
| 77 }); |
| 78 |
| 79 group("with transformed tests", () { |
82 test("runs those tests in the VM", () { | 80 test("runs those tests in the VM", () { |
83 return startPub(['serve', '--port', '0'], workingDirectory: _sandbox) | 81 return startPub(['serve', '--port', '0'], workingDirectory: _sandbox) |
84 .then((process) { | 82 .then((process) { |
85 return _lines.bind(process.stdout) | 83 return _lines.bind(process.stdout) |
86 .firstWhere(_servingRegExp.hasMatch) | 84 .firstWhere(_servingRegExp.hasMatch) |
87 .then((line) { | 85 .then((line) { |
88 var match = _servingRegExp.firstMatch(line); | 86 var match = _servingRegExp.firstMatch(line); |
89 | 87 |
90 try { | 88 try { |
91 var result = runUnittest(['--pub-serve=${match[1]}'], | 89 var result = runUnittest(['--pub-serve=${match[1]}'], |
92 workingDirectory: _sandbox); | 90 workingDirectory: _sandbox); |
93 expect(result.exitCode, equals(0)); | 91 expect(result.exitCode, equals(0)); |
94 expect(result.stdout, contains('+1: All tests passed!')); | 92 expect(result.stdout, contains('+1: All tests passed!')); |
95 } finally { | 93 } finally { |
96 process.kill(); | 94 process.kill(); |
97 } | 95 } |
98 }); | 96 }); |
99 }); | 97 }); |
100 }); | 98 }); |
101 | 99 |
102 test("runs those tests in the browser", () { | 100 test("runs those tests on Chrome", () { |
103 return startPub(['serve', '--port', '0'], | 101 return startPub(['serve', '--port', '0'], |
104 workingDirectory: _sandbox) | 102 workingDirectory: _sandbox) |
105 .then((process) { | 103 .then((process) { |
106 return _lines.bind(process.stdout) | 104 return _lines.bind(process.stdout) |
107 .firstWhere(_servingRegExp.hasMatch) | 105 .firstWhere(_servingRegExp.hasMatch) |
108 .then((line) { | 106 .then((line) { |
109 var match = _servingRegExp.firstMatch(line); | 107 var match = _servingRegExp.firstMatch(line); |
110 | 108 |
111 try { | 109 try { |
112 var result = runUnittest( | 110 var result = runUnittest( |
113 ['--pub-serve=${match[1]}', '-p', 'chrome'], | 111 ['--pub-serve=${match[1]}', '-p', 'chrome'], |
114 workingDirectory: _sandbox); | 112 workingDirectory: _sandbox); |
115 expect(result.exitCode, equals(0)); | 113 expect(result.exitCode, equals(0)); |
116 expect(result.stdout, contains('+1: All tests passed!')); | 114 expect(result.stdout, contains('+1: All tests passed!')); |
117 } finally { | 115 } finally { |
118 process.kill(); | 116 process.kill(); |
119 } | 117 } |
120 }); | 118 }); |
121 }); | 119 }); |
122 }); | 120 }); |
123 | 121 |
| 122 test("runs those tests on content shell", () { |
| 123 return startPub(['serve', '--port', '0'], |
| 124 workingDirectory: _sandbox) |
| 125 .then((process) { |
| 126 return _lines.bind(process.stdout) |
| 127 .firstWhere(_servingRegExp.hasMatch) |
| 128 .then((line) { |
| 129 var match = _servingRegExp.firstMatch(line); |
| 130 |
| 131 try { |
| 132 var result = runUnittest( |
| 133 ['--pub-serve=${match[1]}', '-p', 'content-shell'], |
| 134 workingDirectory: _sandbox); |
| 135 expect(result.exitCode, equals(0)); |
| 136 expect(result.stdout, contains('+1: All tests passed!')); |
| 137 } finally { |
| 138 process.kill(); |
| 139 } |
| 140 }); |
| 141 }); |
| 142 }); |
| 143 |
124 test("gracefully handles pub serve running on the wrong directory for " | 144 test("gracefully handles pub serve running on the wrong directory for " |
125 "VM tests", () { | 145 "VM tests", () { |
126 new Directory(p.join(_sandbox, "web")).createSync(); | 146 new Directory(p.join(_sandbox, "web")).createSync(); |
127 | 147 |
128 return startPub(['serve', '--port', '0', 'web'], | 148 return startPub(['serve', '--port', '0', 'web'], |
129 workingDirectory: _sandbox) | 149 workingDirectory: _sandbox) |
130 .then((process) { | 150 .then((process) { |
131 return _lines.bind(process.stdout) | 151 return _lines.bind(process.stdout) |
132 .firstWhere(_servingRegExp.hasMatch) | 152 .firstWhere(_servingRegExp.hasMatch) |
133 .then((line) { | 153 .then((line) { |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
209 \$include: test/**_test.dart | 229 \$include: test/**_test.dart |
210 ''')); | 230 ''')); |
211 } finally { | 231 } finally { |
212 process.kill(); | 232 process.kill(); |
213 } | 233 } |
214 }); | 234 }); |
215 }); | 235 }); |
216 }); | 236 }); |
217 }); | 237 }); |
218 | 238 |
| 239 group("uses a custom HTML file", () { |
| 240 setUp(() { |
| 241 new File(p.join(_sandbox, "test", "test.dart")).writeAsStringSync(""" |
| 242 import 'dart:html'; |
| 243 |
| 244 import 'package:test/test.dart'; |
| 245 |
| 246 void main() { |
| 247 test("failure", () { |
| 248 expect(document.query('#foo'), isNull); |
| 249 }); |
| 250 } |
| 251 """); |
| 252 |
| 253 new File(p.join(_sandbox, "test", "test.html")).writeAsStringSync(""" |
| 254 <html> |
| 255 <head> |
| 256 <link rel='x-dart-test' href='test.dart'> |
| 257 <script src="packages/test/dart.js"></script> |
| 258 </head> |
| 259 <body> |
| 260 <div id="foo"></div> |
| 261 </body> |
| 262 """); |
| 263 }); |
| 264 |
| 265 test("on Chrome", () { |
| 266 return startPub(['serve', '--port', '0'], |
| 267 workingDirectory: _sandbox) |
| 268 .then((process) { |
| 269 return _lines.bind(process.stdout) |
| 270 .firstWhere(_servingRegExp.hasMatch) |
| 271 .then((line) { |
| 272 var match = _servingRegExp.firstMatch(line); |
| 273 |
| 274 try { |
| 275 var result = runUnittest( |
| 276 ['--pub-serve=${match[1]}', '-p', 'chrome'], |
| 277 workingDirectory: _sandbox); |
| 278 expect(result.exitCode, equals(0)); |
| 279 expect(result.stdout, contains('+1: All tests passed!')); |
| 280 } finally { |
| 281 process.kill(); |
| 282 } |
| 283 }); |
| 284 }); |
| 285 }); |
| 286 |
| 287 test("on content shell", () { |
| 288 return startPub(['serve', '--port', '0'], |
| 289 workingDirectory: _sandbox) |
| 290 .then((process) { |
| 291 return _lines.bind(process.stdout) |
| 292 .firstWhere(_servingRegExp.hasMatch) |
| 293 .then((line) { |
| 294 var match = _servingRegExp.firstMatch(line); |
| 295 |
| 296 try { |
| 297 var result = runUnittest( |
| 298 ['--pub-serve=${match[1]}', '-p', 'content-shell'], |
| 299 workingDirectory: _sandbox); |
| 300 expect(result.exitCode, equals(0)); |
| 301 expect(result.stdout, contains('+1: All tests passed!')); |
| 302 } finally { |
| 303 process.kill(); |
| 304 } |
| 305 }); |
| 306 }); |
| 307 }); |
| 308 }); |
| 309 |
219 test("gracefully handles pub serve not running for VM tests", () { | 310 test("gracefully handles pub serve not running for VM tests", () { |
220 var result = runUnittest(['--pub-serve=54321'], | 311 var result = runUnittest(['--pub-serve=54321'], |
221 workingDirectory: _sandbox); | 312 workingDirectory: _sandbox); |
222 expect(result.stdout, allOf([ | 313 expect(result.stdout, allOf([ |
223 contains('-1: load error'), | 314 contains('-1: load error'), |
224 contains(''' | 315 contains(''' |
225 Failed to load "test/my_test.dart": | 316 Failed to load "test/my_test.dart": |
226 Error getting http://localhost:54321/my_test.dart.vm_test.dart: Connection ref
used | 317 Error getting http://localhost:54321/my_test.dart.vm_test.dart: Connection ref
used |
227 Make sure "pub serve" is running.''') | 318 Make sure "pub serve" is running.''') |
228 ])); | 319 ])); |
(...skipping 21 matching lines...) Expand all Loading... |
250 workingDirectory: _sandbox); | 341 workingDirectory: _sandbox); |
251 expect(result.stdout, allOf([ | 342 expect(result.stdout, allOf([ |
252 contains('-1: load error'), | 343 contains('-1: load error'), |
253 contains( | 344 contains( |
254 'Failed to load "my_test.dart": When using "pub serve", all test ' | 345 'Failed to load "my_test.dart": When using "pub serve", all test ' |
255 'files must be in test/.\n') | 346 'files must be in test/.\n') |
256 ])); | 347 ])); |
257 expect(result.exitCode, equals(1)); | 348 expect(result.exitCode, equals(1)); |
258 }); | 349 }); |
259 } | 350 } |
OLD | NEW |