我正在尝试解析单元测试异常消息,并将它们与st-out中的堆栈跟踪分开。输出的格式如下:
function validateDomain($domain)
{
$point = mb_strpos($domain,'.');
$nameLen = mb_strlen(mb_substr($domain,0,$point));
$extLen = mb_strlen(mb_substr($domain,$point+1));
if( ($nameLen >= 2) && ($nameLen <= 100) &&
($extLen >= 2) && ($extLen <= 24) ) return $domain;
else return FALSE;
}
重要的一点是:
Message:
Failed: expected invocation of Session.endDialog(It.isValue("login complete.")) exactly 1 times, invoked 0 times
Configured setups:
Session.endDialog(It.isValue("login complete."))
Performed invocations:
Session.sendTyping()
Session.endDialog("Login complete.")
Stack:
at Object.<anonymous> (<some path>\<some file>.spec.ts:274:19)
at fulfilled (<some path>\<some file>.spec.js:4:57)
at process._tickDomainCallback (internal/process/next_tick.js:228:7)
前面有2个空格,后跟换行符。Message:
后面的内容是1行或更多行,可能带有连续的换行符。Message:
前面有2个空格,后跟换行符。Stack:
后面是一行或多行堆栈跟踪类型文本。解析器有点复杂,因为它基于行,但支持循环,需要不同的RegExp来捕获消息的各个重要部分。
我有一些工作表达式,除了一个。 基本上我需要一个RegEx来匹配Stack:
行后的所有内容,直到Message:
,一次一行。
例如,它必须匹配:
Stack:
和
Failed: expected invocation of Session.endDialog(It.isValue("login complete.")) exactly 1 times, invoked 0 times`
和
Configured setups:
等,但不是
Session.endDialog(It.isValue("login complete."))
我尝试过使用负面预测而没有运气,这是我到目前为止所做的:
Stack:
答案 0 :(得分:1)
我最终找到了所需的模式:
^(?! Stack:)(.*)$