2014-03-01 70 views
0

我有這樣的事情:Test :: Builder :: Tester任何方式忽略測試失敗的測試診斷?

test_out('not ok 1 - file_mtime_age_ok failure'); 
file_mtime_age_ok($mtime_file, 60*9, 'file_mtime_age_ok failure'); 
test_test('file_mime_age_ok failure works'); 

和file_mtime_age_ok產生一些診斷;如果測試失敗。像:

# Filename [mtime_file] mtime [1393641131] is not 540 seconds within current system time [1393641731]. 
# Failed test 'file_mtime_age_ok failure' 
# at t/file_mtime.t line 42. 

我不想擔心測試診斷。深入探究test_diag的代碼,我發現我傳遞給test_diag的內容最終與\Q...\Ehere錯誤引發,所以沒有正則表達式可以工作。如果沒有使用Test::Builder::Tester測試診斷程序並仍然測試我的測試故障,有沒有辦法解決?我嘗試了一些偷偷摸摸的東西,如open(my $oldout, '>&', STDERR),然後open(STDERR, '>', '/dev/null'),然後恢復,但我不能得到那個工作。 STDERR綁定在Test :: Builder :: Tester中,老實說,我從不使用tie,所以我的工作知識很淺。

感謝您的任何見解。

邁克 -

回答

0

我開始測試,更多的GitHub的問題,周圍挖,因爲一定有人報告過這樣的問題,我碰到issue 387這是有點關係,但不完全是。似乎我可能想要做的是使用test_err來測試STDERR似乎能夠接受正則表達式,至少在Test :: Simple 0.99(這是0.98中斷)接受正則表達式。

所以,我最後不得不這樣的事情:

test_out('not ok 1 - file_mtime_age_ok failure'); 
    test_err(qr/\s*#\s*Filename \[$mtime_file\] [^\n]+\n/); 
    test_fail(+1); 
    file_mtime_age_ok($mtime_file, 60*9, 'file_mtime_age_ok failure'); 
    test_test('file_mime_age_ok failure works'); 

其中一期工程!我仍然認爲test_diag應該能夠處理正則表達式,但是test_err現在可以工作了