Not updating ospec yet (I lack permissions) [skip ci]
This commit is contained in:
parent
194b767584
commit
2ab559fdd0
2 changed files with 29 additions and 9 deletions
|
|
@ -3,9 +3,6 @@
|
||||||
|
|
||||||
## Upcoming...
|
## Upcoming...
|
||||||
_2019-xx-yy_
|
_2019-xx-yy_
|
||||||
|
|
||||||
## 3.1.0
|
|
||||||
_2019-02-05_
|
|
||||||
- ospec: Test results now include `.message` and `.context` regardless of whether the test passed or failed. (#2227 @robertakarobin)
|
- ospec: Test results now include `.message` and `.context` regardless of whether the test passed or failed. (#2227 @robertakarobin)
|
||||||
<!-- Add new lines here. Version number will be decided later -->
|
<!-- Add new lines here. Version number will be decided later -->
|
||||||
- Add `spy.calls` array property to get the `this` and `arguments` values for any arbitrary call. (#2221 @isiahmeadows)
|
- Add `spy.calls` array property to get the `this` and `arguments` values for any arbitrary call. (#2221 @isiahmeadows)
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,9 @@ export default (function init(name) {
|
||||||
var currentTestError = null
|
var currentTestError = null
|
||||||
if (name != null) spec[name] = ctx = {}
|
if (name != null) spec[name] = ctx = {}
|
||||||
|
|
||||||
|
try {throw new Error} catch (e) {
|
||||||
|
var ospecFileName = e.stack && (/[\/\\](.*?):\d+:\d+/).test(e.stack) ? e.stack.match(/[\/\\](.*?):\d+:\d+/)[1] : null
|
||||||
|
}
|
||||||
function o(subject, predicate) {
|
function o(subject, predicate) {
|
||||||
if (predicate === undefined) {
|
if (predicate === undefined) {
|
||||||
if (!isRunning()) throw new Error("Assertions should not occur outside test definitions")
|
if (!isRunning()) throw new Error("Assertions should not occur outside test definitions")
|
||||||
|
|
@ -45,6 +48,7 @@ export default (function init(name) {
|
||||||
var spy = function() {
|
var spy = function() {
|
||||||
spy.this = this
|
spy.this = this
|
||||||
spy.args = [].slice.call(arguments)
|
spy.args = [].slice.call(arguments)
|
||||||
|
spy.calls.push({this: this, args: spy.args})
|
||||||
spy.callCount++
|
spy.callCount++
|
||||||
|
|
||||||
if (fn) return fn.apply(this, arguments)
|
if (fn) return fn.apply(this, arguments)
|
||||||
|
|
@ -55,6 +59,7 @@ export default (function init(name) {
|
||||||
name: {value: fn.name}
|
name: {value: fn.name}
|
||||||
})
|
})
|
||||||
spy.args = []
|
spy.args = []
|
||||||
|
spy.calls = []
|
||||||
spy.callCount = 0
|
spy.callCount = 0
|
||||||
return spy
|
return spy
|
||||||
}
|
}
|
||||||
|
|
@ -211,6 +216,8 @@ export default (function init(name) {
|
||||||
define("notEquals", "should not equal", function(a, b) {return a !== b})
|
define("notEquals", "should not equal", function(a, b) {return a !== b})
|
||||||
define("deepEquals", "should deep equal", deepEqual)
|
define("deepEquals", "should deep equal", deepEqual)
|
||||||
define("notDeepEquals", "should not deep equal", function(a, b) {return !deepEqual(a, b)})
|
define("notDeepEquals", "should not deep equal", function(a, b) {return !deepEqual(a, b)})
|
||||||
|
define("throws", "should throw a", throws)
|
||||||
|
define("notThrows", "should not throw a", function(a, b) {return !throws(a, b)})
|
||||||
|
|
||||||
function isArguments(a) {
|
function isArguments(a) {
|
||||||
if ("callee" in a) {
|
if ("callee" in a) {
|
||||||
|
|
@ -251,6 +258,18 @@ export default (function init(name) {
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
function throws(a, b){
|
||||||
|
try{
|
||||||
|
a()
|
||||||
|
}catch(e){
|
||||||
|
if(typeof b === "string"){
|
||||||
|
return (e.message === b)
|
||||||
|
}else{
|
||||||
|
return (e instanceof b)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
function isRunning() {return results != null}
|
function isRunning() {return results != null}
|
||||||
function Assert(value) {
|
function Assert(value) {
|
||||||
|
|
@ -264,16 +283,20 @@ export default (function init(name) {
|
||||||
}
|
}
|
||||||
function define(name, verb, compare) {
|
function define(name, verb, compare) {
|
||||||
Assert.prototype[name] = function assert(value) {
|
Assert.prototype[name] = function assert(value) {
|
||||||
if (compare(this.value, value)) succeed(this)
|
|
||||||
else fail(this, serialize(this.value) + "\n " + verb + "\n" + serialize(value))
|
|
||||||
var self = this
|
var self = this
|
||||||
return function(message) {
|
var message = serialize(self.value) + "\n " + verb + "\n" + serialize(value)
|
||||||
if (!self.pass) self.message = message + "\n\n" + self.message
|
if (compare(self.value, value)){
|
||||||
}
|
succeed(self, message)
|
||||||
|
return function(message) {
|
||||||
|
if (!self.pass) self.message = message + "\n\n" + self.message
|
||||||
|
}
|
||||||
|
}else fail(self, message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function succeed(assertion) {
|
function succeed(assertion, message) {
|
||||||
results[assertion.i].pass = true
|
results[assertion.i].pass = true
|
||||||
|
results[assertion.i].context = subjects.join(" > ")
|
||||||
|
results[assertion.i].message = message
|
||||||
}
|
}
|
||||||
function fail(assertion, message, error) {
|
function fail(assertion, message, error) {
|
||||||
results[assertion.i].pass = false
|
results[assertion.i].pass = false
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue