assert throw line number on failure. close #42

This commit is contained in:
2022-06-04 18:10:02 +00:00
parent 70379cf36b
commit 8dd7f62c8a
3 changed files with 17 additions and 5 deletions

View File

@@ -309,11 +309,11 @@ class Macros {
wholeExp.checkNumArgs(1, 2, "(assert [expression] [message])");
var b = wholeExp.expBuilder();
var expression = exps[0];
var basicMessage = 'Assertion ${expression.def.toString()} failed';
var failureError = KissError.fromExp(wholeExp, "").toString(AssertionFail);
var messageExp = if (exps.length > 1) {
b.callSymbol("+", [b.str(basicMessage + ": "), exps[1]]);
exps[1];
} else {
b.str(basicMessage);
b.str("");
};
var letVal = b.symbol();
b.callSymbol("let", [
@@ -324,7 +324,9 @@ class Macros {
b.callSymbol("if", [
letVal,
letVal,
b.callSymbol("throw", [messageExp])
b.callSymbol("throw", [
b.callSymbol("kiss.Prelude.runtimeInsertAssertionMessage", [messageExp, b.str(failureError)])
])
])
]);
};

View File

@@ -691,6 +691,15 @@ class Prelude {
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 backSlash = "\\";
public static var doubleQuote = "\"";

View File

@@ -327,7 +327,8 @@
(try
(assert false (+ "false " "should " "have " "been " "true"))
(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 ![]))