W moim modułu, mam ten kod:
croak("unable to parse file: $!");
Następnie w moich testach, chcę sprawdzić, czy mam odpowiedni komunikat o błędzie, gdy próbuję analizować pliku, który nie istnieje:
like(
exception { HTML::Tree->new_from_file("t/non_existent.html") },
qr!^unable to parse file: No such file !,
"opening missing file failed"
);
Działa to dobrze, o ile testy są przeprowadzane w angielskiej lokalizacji. Ale jeśli uruchomisz testy w niemieckim języku, komunikat błędu powróci unable to parse file: Datei oder Verzeichnis nicht gefunden
, a test się nie powiedzie. Inne lokalizacje mają podobne problemy.
Nie mogę uwierzyć, że to pierwszy raz, ale nie mogę znaleźć modułów na CPAN, które rozwiązałyby ten problem. Czy ludzie po prostu nigdy nie testują części komunikatu o błędzie? Czy istnieje lepsze rozwiązanie niż zmiana testu, aby sprawdzić tylko pod kątem qr!^unable to parse file: !
?
Uwaga: to jest RT#77823 in HTML-Tree.
Byłoby o wiele mniej przydatne posiadanie tylko numeru, ale przypuszczam, że mógłbym uwzględnić zarówno numer, jak i wersję ciąg. Innym problemem jest to, że ENOENT nie ma gwarantowanej wartości numerycznej na każdym systemie. Wygląda na to, że powinno być lepsze rozwiązanie niż to. – cjm