-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
173da28
commit 9616dde
Showing
3 changed files
with
227 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
'use strict'; | ||
|
||
function validate(title, fn, metadata) { | ||
if (metadata.type !== 'test') { | ||
if (metadata.exclusive) { | ||
return '`only` is only for tests and cannot be used with hooks'; | ||
} | ||
|
||
if (metadata.failing) { | ||
return '`failing` is only for tests and cannot be used with hooks'; | ||
} | ||
|
||
if (metadata.todo) { | ||
return '`todo` is only for documentation of future tests and cannot be used with hooks'; | ||
} | ||
} | ||
|
||
if (metadata.todo) { | ||
if (typeof fn === 'function') { | ||
return '`todo` tests are not allowed to have an implementation. Use ' + | ||
'`test.skip()` for tests with an implementation.'; | ||
} | ||
|
||
if (typeof title !== 'string') { | ||
return '`todo` tests require a title'; | ||
} | ||
|
||
if (metadata.skipped || metadata.failing || metadata.exclusive) { | ||
return '`todo` tests are just for documentation and cannot be used with `skip`, `only`, or `failing`'; | ||
} | ||
} else if (typeof fn !== 'function') { | ||
return 'Expected an implementation. Use `test.todo()` for tests without an implementation.'; | ||
} | ||
|
||
if (metadata.always) { | ||
if (!(metadata.type === 'after' || metadata.type === 'afterEach')) { | ||
return '`always` can only be used with `after` and `afterEach`'; | ||
} | ||
} | ||
|
||
if (metadata.skipped && metadata.exclusive) { | ||
return '`only` tests cannot be skipped'; | ||
} | ||
|
||
return null; | ||
} | ||
|
||
module.exports = validate; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters