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

Side by Side Diff: pkg/unittest/lib/unittest.dart

Issue 627403002: Asjusting unittest comments with one-line summaries (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Merging master Created 6 years, 2 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 /// Support for writing Dart unit tests. 5 /// Support for writing Dart unit tests.
6 /// 6 ///
7 /// For information on installing and importing this library, see the 7 /// For information on installing and importing this library, see the
8 /// [unittest package on pub.dartlang.org] 8 /// [unittest package on pub.dartlang.org]
9 /// (http://pub.dartlang.org/packages/unittest). 9 /// (http://pub.dartlang.org/packages/unittest).
10 /// 10 ///
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 import 'src/configuration.dart'; 147 import 'src/configuration.dart';
148 export 'src/configuration.dart'; 148 export 'src/configuration.dart';
149 149
150 part 'src/simple_configuration.dart'; 150 part 'src/simple_configuration.dart';
151 part 'src/group_context.dart'; 151 part 'src/group_context.dart';
152 part 'src/spread_args_helper.dart'; 152 part 'src/spread_args_helper.dart';
153 part 'src/test_case.dart'; 153 part 'src/test_case.dart';
154 154
155 Configuration _config; 155 Configuration _config;
156 156
157 /// [Configuration] used by the unittest library. Note that if a 157 /// [Configuration] used by the unittest library.
158 /// configuration has not been set, calling this getter will create 158 ///
159 /// a default configuration. 159 /// Note that if a configuration has not been set, calling this getter will
160 /// create a default configuration.
160 Configuration get unittestConfiguration { 161 Configuration get unittestConfiguration {
161 if (_config == null) { 162 if (_config == null) {
162 _config = new Configuration(); 163 _config = new Configuration();
163 } 164 }
164 return _config; 165 return _config;
165 } 166 }
166 167
167 /// Sets the [Configuration] used by the unittest library. 168 /// Sets the [Configuration] used by the unittest library.
168 /// 169 ///
169 /// Throws a [StateError] if there is an existing, incompatible value. 170 /// Throws a [StateError] if there is an existing, incompatible value.
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 } 279 }
279 ++_soloNestingLevel; 280 ++_soloNestingLevel;
280 try { 281 try {
281 test(spec, body); 282 test(spec, body);
282 } finally { 283 } finally {
283 --_soloNestingLevel; 284 --_soloNestingLevel;
284 } 285 }
285 } 286 }
286 287
287 /// Indicate that [callback] is expected to be called a [count] number of times 288 /// Indicate that [callback] is expected to be called a [count] number of times
288 /// (by default 1). The unittest framework will wait for the callback to run the 289 /// (by default 1).
290 ///
291 /// The unittest framework will wait for the callback to run the
289 /// specified [count] times before it continues with the following test. Using 292 /// specified [count] times before it continues with the following test. Using
290 /// [expectAsync] will also ensure that errors that occur within [callback] are 293 /// [expectAsync] will also ensure that errors that occur within [callback] are
291 /// tracked and reported. [callback] should take 0 positional arguments (named 294 /// tracked and reported. [callback] should take 0 positional arguments (named
292 /// arguments are not supported). [id] can be used to provide more 295 /// arguments are not supported). [id] can be used to provide more
293 /// descriptive error messages if the callback is called more often than 296 /// descriptive error messages if the callback is called more often than
294 /// expected. [max] can be used to specify an upper bound on the number of 297 /// expected.
298 ///
299 /// [max] can be used to specify an upper bound on the number of
295 /// calls; if this is exceeded the test will fail (or be marked as in error if 300 /// calls; if this is exceeded the test will fail (or be marked as in error if
296 /// it was already complete). A value of 0 for [max] (the default) will set 301 /// it was already complete). A value of 0 for [max] (the default) will set
297 /// the upper bound to the same value as [count]; i.e. the callback should be 302 /// the upper bound to the same value as [count]; i.e. the callback should be
298 /// called exactly [count] times. A value of -1 for [max] will mean no upper 303 /// called exactly [count] times. A value of -1 for [max] will mean no upper
299 /// bound. 304 /// bound.
300 /// 305 ///
301 /// [reason] is optional and is typically not supplied, as a reason is generated 306 /// [reason] is optional and is typically not supplied, as a reason is generated
302 /// by the unittest package; if reason is included it is appended to the 307 /// by the unittest package; if reason is included it is appended to the
303 /// generated reason. 308 /// generated reason.
304 Function expectAsync(Function callback, 309 Function expectAsync(Function callback,
305 {int count: 1, int max: 0, String id, String reason}) => 310 {int count: 1, int max: 0, String id, String reason}) =>
306 new _SpreadArgsHelper(callback, count, max, id, reason).func; 311 new _SpreadArgsHelper(callback, count, max, id, reason).func;
307 312
308 /// Indicate that [callback] is expected to be called until [isDone] returns 313 /// Indicate that [callback] is expected to be called until [isDone] returns
309 /// true. The unittest framework check [isDone] after each callback and only 314 /// true.
315 ///
316 /// The unittest framework checks [isDone] after each callback and only
310 /// when it returns true will it continue with the following test. Using 317 /// when it returns true will it continue with the following test. Using
311 /// [expectAsyncUntil] will also ensure that errors that occur within 318 /// [expectAsyncUntil] will also ensure that errors that occur within
312 /// [callback] are tracked and reported. [callback] should take 0 positional 319 /// [callback] are tracked and reported. [callback] should take 0 positional
313 /// arguments (named arguments are not supported). [id] can be used to 320 /// arguments (named arguments are not supported). [id] can be used to
314 /// identify the callback in error messages (for example if it is called 321 /// identify the callback in error messages (for example if it is called
315 /// after the test case is complete). 322 /// after the test case is complete).
316 /// 323 ///
317 /// [reason] is optional and is typically not supplied, as a reason is generated 324 /// [reason] is optional and is typically not supplied, as a reason is generated
318 /// by the unittest package; if reason is included it is appended to the 325 /// by the unittest package; if reason is included it is appended to the
319 /// generated reason. 326 /// generated reason.
320 Function expectAsyncUntil(Function callback, bool isDone(), 327 Function expectAsyncUntil(Function callback, bool isDone(),
321 {String id, String reason}) => 328 {String id, String reason}) =>
322 new _SpreadArgsHelper(callback, 0, -1, id, reason, isDone: isDone).func; 329 new _SpreadArgsHelper(callback, 0, -1, id, reason, isDone: isDone).func;
323 330
324 /// Creates a new named group of tests. Calls to group() or test() within the 331 /// Creates a new named group of tests.
325 /// body of the function passed to this will inherit this group's description. 332 ///
333 /// Calls to group() or test() within the body of the function passed to this
334 /// named group will inherit this group's description.
326 void group(String description, void body()) { 335 void group(String description, void body()) {
327 ensureInitialized(); 336 ensureInitialized();
328 _requireNotRunning(); 337 _requireNotRunning();
329 _currentContext = new _GroupContext(_currentContext, description); 338 _currentContext = new _GroupContext(_currentContext, description);
330 try { 339 try {
331 body(); 340 body();
332 } catch (e, trace) { 341 } catch (e, trace) {
333 var stack = (trace == null) ? '' : ': ${trace.toString()}'; 342 var stack = (trace == null) ? '' : ': ${trace.toString()}';
334 _uncaughtErrorMessage = "${e.toString()}$stack"; 343 _uncaughtErrorMessage = "${e.toString()}$stack";
335 } finally { 344 } finally {
(...skipping 15 matching lines...) Expand all
351 _testCases.clear(); 360 _testCases.clear();
352 } 361 }
353 ++_soloNestingLevel; 362 ++_soloNestingLevel;
354 try { 363 try {
355 group(description, body); 364 group(description, body);
356 } finally { 365 } finally {
357 --_soloNestingLevel; 366 --_soloNestingLevel;
358 } 367 }
359 } 368 }
360 369
361 /// Register a [setUp] function for a test [group]. This function will 370 /// Register a [setUp] function for a test [group].
362 /// be called before each test in the group is run. 371 ///
372 /// This function will be called before each test in the group is run.
363 /// [setUp] and [tearDown] should be called within the [group] before any 373 /// [setUp] and [tearDown] should be called within the [group] before any
364 /// calls to [test]. The [setupTest] function can be asynchronous; in this 374 /// calls to [test]. The [setupTest] function can be asynchronous; in this
365 /// case it must return a [Future]. 375 /// case it must return a [Future].
366 void setUp(Function setupTest) { 376 void setUp(Function setupTest) {
367 _requireNotRunning(); 377 _requireNotRunning();
368 _currentContext.testSetup = setupTest; 378 _currentContext.testSetup = setupTest;
369 } 379 }
370 380
371 /// Register a [tearDown] function for a test [group]. This function will 381 /// Register a [tearDown] function for a test [group].
372 /// be called after each test in the group is run. Note that if groups 382 ///
373 /// are nested only the most locally scoped [teardownTest] function will be run. 383 /// This function will be called after each test in the group is run.
374 /// [setUp] and [tearDown] should be called within the [group] before any 384 ///
375 /// calls to [test]. The [teardownTest] function can be asynchronous; in this 385 /// Note that if groups are nested only the most locally scoped [teardownTest]
376 /// case it must return a [Future]. 386 /// function will be run. [setUp] and [tearDown] should be called within the
387 /// [group] before any calls to [test]. The [teardownTest] function can be
388 /// asynchronous; in this case it must return a [Future].
377 void tearDown(Function teardownTest) { 389 void tearDown(Function teardownTest) {
378 _requireNotRunning(); 390 _requireNotRunning();
379 _currentContext.testTeardown = teardownTest; 391 _currentContext.testTeardown = teardownTest;
380 } 392 }
381 393
382 /// Advance to the next test case. 394 /// Advance to the next test case.
383 void _nextTestCase() { 395 void _nextTestCase() {
384 _currentTestCaseIndex++; 396 _currentTestCaseIndex++;
385 _runTest(); 397 _runTest();
386 } 398 }
387 399
388 /// Handle errors that happen outside the tests. 400 /// Handle errors that happen outside the tests.
389 // TODO(vsm): figure out how to expose the stack trace here 401 // TODO(vsm): figure out how to expose the stack trace here
390 // Currently e.message works in dartium, but not in dartc. 402 // Currently e.message works in dartium, but not in dartc.
391 void handleExternalError(e, String message, [stack]) { 403 void handleExternalError(e, String message, [stack]) {
392 var msg = '$message\nCaught $e'; 404 var msg = '$message\nCaught $e';
393 405
394 if (currentTestCase != null) { 406 if (currentTestCase != null) {
395 currentTestCase._error(msg, stack); 407 currentTestCase._error(msg, stack);
396 } else { 408 } else {
397 _uncaughtErrorMessage = "$msg: $stack"; 409 _uncaughtErrorMessage = "$msg: $stack";
398 } 410 }
399 } 411 }
400 412
401 /// Filter the tests. [testFilter] can be a [RegExp], a [String] or a 413 /// Filter the tests by [testFilter].
402 /// predicate function. This is different to enabling/disabling tests 414 ///
415 /// [testFilter] can be a [RegExp], a [String] or a
416 /// predicate function. This is different from enabling or disabling tests
403 /// in that it removes the tests completely. 417 /// in that it removes the tests completely.
404 void filterTests(testFilter) { 418 void filterTests(testFilter) {
405 var filterFunction; 419 var filterFunction;
406 if (testFilter is String) { 420 if (testFilter is String) {
407 RegExp re = new RegExp(testFilter); 421 RegExp re = new RegExp(testFilter);
408 filterFunction = (t) => re.hasMatch(t.description); 422 filterFunction = (t) => re.hasMatch(t.description);
409 } else if (testFilter is RegExp) { 423 } else if (testFilter is RegExp) {
410 filterFunction = (t) => testFilter.hasMatch(t.description); 424 filterFunction = (t) => testFilter.hasMatch(t.description);
411 } else if (testFilter is Function) { 425 } else if (testFilter is Function) {
412 filterFunction = testFilter; 426 filterFunction = testFilter;
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
556 /// Signature for a test function. 570 /// Signature for a test function.
557 typedef dynamic TestFunction(); 571 typedef dynamic TestFunction();
558 572
559 /// A flag that controls whether we hide unittest and core library details in 573 /// A flag that controls whether we hide unittest and core library details in
560 /// exception stacks. 574 /// exception stacks.
561 /// 575 ///
562 /// Useful to disable when debugging unittest or matcher customizations. 576 /// Useful to disable when debugging unittest or matcher customizations.
563 bool formatStacks = true; 577 bool formatStacks = true;
564 578
565 /// A flag that controls whether we try to filter out irrelevant frames from 579 /// A flag that controls whether we try to filter out irrelevant frames from
566 /// the stack trace. Requires formatStacks to be set. 580 /// the stack trace.
581 ///
582 /// Requires [formatStacks] to be set.
567 bool filterStacks = true; 583 bool filterStacks = true;
568 584
569 void _requireNotRunning() { 585 void _requireNotRunning() {
570 if (_currentTestCaseIndex != -1) { 586 if (_currentTestCaseIndex != -1) {
571 throw new StateError('Not allowed when tests are running.'); 587 throw new StateError('Not allowed when tests are running.');
572 } 588 }
573 } 589 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698