あなたの試みの主な問題は、エラーが期待通りのものにならないことです。実際には次のようになります。エラー行が読み込まれ、順番にerrorformat
のルールと一致します。最初のルールマッチが勝つ。次に別のエラー行が読み込まれ、再びerrorformat
の規則と順番に一致します。等々。 %>
のようなルールが試される順番に影響を与える可能性があり、あるルールから別のルールに情報を渡すサポートは限られていますが、基本的に、エラーラインを他と区別することができない場合は、それを与えられたフィールドに割り当てます。
特に、Failed asserting that 1 matches expected 2.
とTime: 177 ms, Memory: 12.50MB
を区別できない場合は、F
とTests: 1, Assertions: 1, Failures: 1.
からエラーメッセージに含めることはできません。この問題を解決するには、おそらくsyntasticのようにエラーを "前処理"する必要があります。1) dummy_test::testController
とFailed asserting that 1 matches expected 2.
を同じ行に解析して解析する必要があります。とにかく
は、念頭に置いてすべてのことで、ここで(this照明柱に基づいて)基本的なフレームワークだ、と等しく粗errorformat
:
let &errorformat =
\ '%-G,' .
\ '%-GPHPUnit %.%#,' .
\ '%-GF,' .
\ '%-GTime: %.%#\, Memory: %.%#,' .
\ '%-GThere was 1 failure:,' .
\ '%-GFAILURES!,' .
\ '%-GTests: %.%#\, Assertions: %.%#\, Failures: %.%#,' .
\ '%E%n) %m,' .
\ '%C%f:%l,' .
\ '%C%m'
cgetexpr [
\ 'PHPUnit 4.8.27 by Sebastian Bergmann and contributors.',
\ '',
\ 'F',
\ '',
\ 'Time: 177 ms, Memory: 12.50MB',
\ '',
\ 'There was 1 failure:',
\ '',
\ '1) dummy_test::testController',
\ 'Failed asserting that 1 matches expected 2.',
\ '',
\ '/Users/david/Sites/apr2/frontend/intranet/tests/unit/dummy_test.php:44',
\ '',
\ 'FAILURES!',
\ 'Tests: 1, Assertions: 1, Failures: 1.',
\ ]
echomsg string(map(getqflist(), '[v:val.text, v:val.valid]'))
echomsg string(getqflist())
copen
wincmd p
上記errorformat
が完全に有用ではない次のように、生成します、どちらかが、完全に役に立たない:
/Users/david/Sites/apr2/frontend/intranet/tests/unit/dummy_test.php|44 error 1| dummy_test::testController
おそらく、あなたは、既知の固定パターンTime:...
、There was 1 failure:
などを殺害した後、gobblingすることによって、これを向上させることができエラーメッセージの残りの行。あなたはまだ空の行を扱う楽しみを持っています。幸運がそれを捜すのを幸運。 :)
編集:errorformat
を変更して、既知の固定パターンを削除しました。あなたはおそらくもう少し手を加える必要があり、結果はまだ壊れやすいでしょう。
ありがとうございます!これはとても役に立ちました!今私は '%m'メッセージに2行目を追加しようとしていますが、私が何をしてもすべてを破ります。 最初の試合の後で(そして、うまくいきませんでしたが)、 '\ '%C%m、' .'を追加しようとしました。 – iovis
私が上に書いたように、あなたは 'errorformat'でそれを直接行うことはできません。エラーを前処理するか、または既知の迷惑メールを削除してその他すべてを含める必要があります。 –
もっと便利な 'errorformat'を追加しました。確実な結果を得るには、おそらくJSON出力を使用し、 'syntaten'チェッカーを書いてください。 –