Как я могу проверить сообщения об ошибках, включая $!, без проблем с локалью?

В моем модуле у меня есть следующий код:

croak("unable to parse file: $!");

Затем в своих тестах я хочу проверить, что я получаю правильное сообщение об ошибке, когда пытаюсь разобрать несуществующий файл:

like(
    exception { HTML::Tree->new_from_file( "t/non_existent.html" ) },
    qr!^unable to parse file: No such file !,
    "opening missing file failed"
);

Это работает нормально, пока тесты выполняются на английском языке. Но если вы запустите тесты в немецкой локали, появится сообщение об ошибке , невозможность анализа файла: Datei oder Verzeichnis nicht gefunden, и тест завершится неудачно. Аналогичные проблемы есть и в других локациях.

Не могу поверить, что это впервые, но я не могу найти в CPAN никаких модулей, решающих эту проблему. Люди просто никогда не проверяют $! часть сообщения об ошибке? Есть ли лучшее решение, чем изменение теста только для проверки qr!^unable to parse file: ! ?

Примечание: это RT#77823 в дереве HTML.

9
задан cjm 16 June 2012 в 19:50
поделиться