assert throw line number on failure. close #42
This commit is contained in:
@@ -309,11 +309,11 @@ class Macros {
|
|||||||
wholeExp.checkNumArgs(1, 2, "(assert [expression] [message])");
|
wholeExp.checkNumArgs(1, 2, "(assert [expression] [message])");
|
||||||
var b = wholeExp.expBuilder();
|
var b = wholeExp.expBuilder();
|
||||||
var expression = exps[0];
|
var expression = exps[0];
|
||||||
var basicMessage = 'Assertion ${expression.def.toString()} failed';
|
var failureError = KissError.fromExp(wholeExp, "").toString(AssertionFail);
|
||||||
var messageExp = if (exps.length > 1) {
|
var messageExp = if (exps.length > 1) {
|
||||||
b.callSymbol("+", [b.str(basicMessage + ": "), exps[1]]);
|
exps[1];
|
||||||
} else {
|
} else {
|
||||||
b.str(basicMessage);
|
b.str("");
|
||||||
};
|
};
|
||||||
var letVal = b.symbol();
|
var letVal = b.symbol();
|
||||||
b.callSymbol("let", [
|
b.callSymbol("let", [
|
||||||
@@ -324,7 +324,9 @@ class Macros {
|
|||||||
b.callSymbol("if", [
|
b.callSymbol("if", [
|
||||||
letVal,
|
letVal,
|
||||||
letVal,
|
letVal,
|
||||||
b.callSymbol("throw", [messageExp])
|
b.callSymbol("throw", [
|
||||||
|
b.callSymbol("kiss.Prelude.runtimeInsertAssertionMessage", [messageExp, b.str(failureError)])
|
||||||
|
])
|
||||||
])
|
])
|
||||||
]);
|
]);
|
||||||
};
|
};
|
||||||
|
@@ -691,6 +691,15 @@ class Prelude {
|
|||||||
return str.substr(negIdx(startIdx), negIdx(endIdx));
|
return str.substr(negIdx(startIdx), negIdx(endIdx));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function runtimeInsertAssertionMessage(message:String, error:String) {
|
||||||
|
var colonIdx = 0;
|
||||||
|
for (_ in 0...4) {
|
||||||
|
colonIdx = error.indexOf(":", colonIdx) + 1;
|
||||||
|
}
|
||||||
|
colonIdx += 1;
|
||||||
|
return error.substr(0, colonIdx) + message + error.substr(colonIdx);
|
||||||
|
}
|
||||||
|
|
||||||
public static var newLine = "\n";
|
public static var newLine = "\n";
|
||||||
public static var backSlash = "\\";
|
public static var backSlash = "\\";
|
||||||
public static var doubleQuote = "\"";
|
public static var doubleQuote = "\"";
|
||||||
|
@@ -327,7 +327,8 @@
|
|||||||
(try
|
(try
|
||||||
(assert false (+ "false " "should " "have " "been " "true"))
|
(assert false (+ "false " "should " "have " "been " "true"))
|
||||||
(catch [:String message]
|
(catch [:String message]
|
||||||
(Assert.equals "Assertion false failed: false should have been true" message)))
|
(Assert.equals "kiss/src/test/cases/BasicTestCase.kiss:328:13: Assertion failed: false should have been true
|
||||||
|
From:[(assert false (+ \"false \" \"should \" \"have \" \"been \" \"true\"))]" message)))
|
||||||
|
|
||||||
(assert true)
|
(assert true)
|
||||||
(assert ![]))
|
(assert ![]))
|
||||||
|
Reference in New Issue
Block a user