[ospec] o.defaultTimeout => o.specTimeout, and documentation.
The timeout parameter is deprecated but will still work for now
This commit is contained in:
parent
25975c5ce4
commit
aa0f9eae98
3 changed files with 50 additions and 24 deletions
|
|
@ -164,30 +164,54 @@ o("promise test", async function() {
|
|||
})
|
||||
```
|
||||
|
||||
By default, asynchronous tests time out after 20ms. This can be changed on a per-test basis using the `timeout` argument:
|
||||
#### Timeout delays
|
||||
|
||||
By default, asynchronous tests time out after 200ms. You can change that default for the current test suite and
|
||||
its children by using the `o.specTimeout(delay)` function.
|
||||
|
||||
```javascript
|
||||
o.spec("a spec that must timeout quickly", function(done, timeout) {
|
||||
// wait 20ms before bailing out of the tests of this suite and
|
||||
// its descendants
|
||||
o.specTimeout(20)
|
||||
o("some test", function(done) {
|
||||
setTimeout(done, 10) // this will pass
|
||||
})
|
||||
|
||||
o.spec("a child suite where the delay also applies", function () {
|
||||
o("some test", function(done) {
|
||||
setTimeout(done, 30) // this will time out.
|
||||
})
|
||||
})
|
||||
})
|
||||
o.spec("a spec that uses the default delay", function() {
|
||||
// ...
|
||||
})
|
||||
```
|
||||
|
||||
This can also be changed on a per-test basis using the `o.timeout(delay)` function from within a test:
|
||||
|
||||
```javascript
|
||||
o("setTimeout calls callback", function(done, timeout) {
|
||||
timeout(50) //wait 50ms before bailing out of the test
|
||||
o.timeout(500) //wait 50ms before bailing out of the test
|
||||
|
||||
setTimeout(done, 30)
|
||||
setTimeout(done, 300)
|
||||
})
|
||||
```
|
||||
|
||||
Note that the `timeout` function call must be the first statement in its test. This currently does not work for promise tests. You can combine both methods to do this:
|
||||
Note that the `o.timeout` function call must be the first statement in its test. It also works with Promise-returning tests:
|
||||
|
||||
```javascript
|
||||
o("promise test", function(done, timeout) {
|
||||
timeout(1000)
|
||||
someOtherAsyncFunctionThatTakes900ms().then(done)
|
||||
o("promise test", function() {
|
||||
o.timeout(1000)
|
||||
return someOtherAsyncFunctionThatTakes900ms()
|
||||
})
|
||||
```
|
||||
|
||||
```javascript
|
||||
o("promise test", async function(done, timeout) {
|
||||
timeout(1000)
|
||||
o("promise test", async function() {
|
||||
o.timeout(1000)
|
||||
await someOtherAsyncFunctionThatTakes900ms()
|
||||
done()
|
||||
})
|
||||
```
|
||||
|
||||
|
|
|
|||
|
|
@ -25,11 +25,11 @@ else window.o = m()
|
|||
o.after = hook("\x01after")
|
||||
o.beforeEach = hook("\x01beforeEach")
|
||||
o.afterEach = hook("\x01afterEach")
|
||||
o.defaultTimeout = function (t) {
|
||||
if (isRunning()) throw new Error("o.defaultTimeout() can only be called before o.run()")
|
||||
if (hasOwn.call(ctx, "\x01defaultTimeout")) throw new Error("A default timeout has already been defined in this context")
|
||||
if (typeof t !== "number") throw new Error("o.defaultTimeout() expects a number as argument")
|
||||
ctx["\x01defaultTimeout"] = t
|
||||
o.specTimeout = function (t) {
|
||||
if (isRunning()) throw new Error("o.specTimeout() can only be called before o.run()")
|
||||
if (hasOwn.call(ctx, "\x01specTimeout")) throw new Error("A default timeout has already been defined in this context")
|
||||
if (typeof t !== "number") throw new Error("o.specTimeout() expects a number as argument")
|
||||
ctx["\x01specTimeout"] = t
|
||||
}
|
||||
o.new = init
|
||||
o.spec = function(subject, predicate) {
|
||||
|
|
@ -97,7 +97,7 @@ else window.o = m()
|
|||
}, null), 200 /*default timeout delay*/)
|
||||
|
||||
function test(spec, pre, post, finalize, defaultDelay) {
|
||||
if (hasOwn.call(spec, "\x01defaultTimeout")) defaultDelay = spec["\x01defaultTimeout"]
|
||||
if (hasOwn.call(spec, "\x01specTimeout")) defaultDelay = spec["\x01specTimeout"]
|
||||
pre = [].concat(pre, spec["\x01beforeEach"] || [])
|
||||
post = [].concat(spec["\x01afterEach"] || [], post)
|
||||
series([].concat(spec["\x01before"] || [], Object.keys(spec).reduce(function(tasks, key) {
|
||||
|
|
|
|||
|
|
@ -360,12 +360,12 @@ o.spec("ospec", function() {
|
|||
})
|
||||
})
|
||||
})
|
||||
o.spec("o.defaultTimeout", function() {
|
||||
o.spec("o.specTimeout", function() {
|
||||
o("throws when called inside of test definitions", function(done) {
|
||||
var err
|
||||
var oo = o.new()
|
||||
oo("", function() {
|
||||
try { oo.defaultTimeout(5) } catch (e) {err = e}
|
||||
try { oo.specTimeout(5) } catch (e) {err = e}
|
||||
return {then: function(f) {setTimeout(f)}}
|
||||
})
|
||||
oo.run(function(){
|
||||
|
|
@ -378,7 +378,7 @@ o.spec("ospec", function() {
|
|||
var oo = o.new()
|
||||
var t
|
||||
|
||||
oo.defaultTimeout(10)
|
||||
oo.specTimeout(10)
|
||||
oo.beforeEach(function () {
|
||||
t = new Date
|
||||
})
|
||||
|
|
@ -405,7 +405,7 @@ o.spec("ospec", function() {
|
|||
var oo = o.new()
|
||||
var t
|
||||
|
||||
oo.defaultTimeout(10)
|
||||
oo.specTimeout(10)
|
||||
oo.beforeEach(function () {
|
||||
t = new Date
|
||||
})
|
||||
|
|
@ -418,7 +418,7 @@ o.spec("ospec", function() {
|
|||
oo.spec("nested 1", function () {
|
||||
var t
|
||||
|
||||
oo.defaultTimeout(30)
|
||||
oo.specTimeout(30)
|
||||
oo.beforeEach(function () {
|
||||
t = new Date
|
||||
})
|
||||
|
|
@ -445,7 +445,7 @@ o.spec("ospec", function() {
|
|||
oo.spec("deeply", function() {
|
||||
var t
|
||||
|
||||
oo.defaultTimeout(20)
|
||||
oo.specTimeout(20)
|
||||
oo.beforeEach(function () {
|
||||
t = new Date
|
||||
})
|
||||
|
|
@ -489,7 +489,8 @@ o.spec("ospec", function() {
|
|||
o(err.message).equals("`oodone()` should only be called once")
|
||||
})
|
||||
oo.run(function(results) {
|
||||
o(results.length).equals(0)
|
||||
o(results.length).equals(1)
|
||||
o(results[0].pass).equals(true)
|
||||
done()
|
||||
})
|
||||
})
|
||||
|
|
@ -507,7 +508,8 @@ o.spec("ospec", function() {
|
|||
o(err.message).equals("`oodone()` should only be called once")
|
||||
})
|
||||
oo.run(function(results) {
|
||||
o(results.length).equals(0)
|
||||
o(results.length).equals(1)
|
||||
o(results[0].pass).equals(true)
|
||||
done()
|
||||
})
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue