Pracuję nad aplikacją w PHP która ma działać na każdej wersji od 5.6 w górę. Jednym z elementów tej aplikacji jest łapanie błędów przy regexach (php'owe funkcje preg_match()
, preg_replace()
, etc...). Do pewnego czasu istniał bug w php, który sparawiał że niektóre błędy regex'owe nie sprawiały że preg_last_error()
zwracał kod błędu - czyli mimo że był błąd, to i tak preg_last_error() == PREG_NO_ERROR
.
W PHP 7.1.13 poprawili ten bug, tutaj: https://bugs.php.net/bug.php?id=74183
No właśnie, i teraz testy uruchomione na PHP <7.1.12 działają (bo aplikacja którą testują wie o tym bugu), a jeśli uruchomić testy na PHP +7.1.13 to już nie przechodzą. Ponieważ aplikacja myśli że stało się coś złego - preg_last_error()
przestało zwracać PREG_NO_ERROR
.
Noi pytanie co teraz, mam dwa pomysły:
- Albo napisać dwie wersje testów, po jednym na wersje pre-bugfix oraz post-bugfix
- Albo starać się naprawić buga pre 7.1.12, i mimo że
preg_last_error()
zwracaPREG_NO_ERROR
(kiedy nie powinno), jakoś próbować wymyślić co by zwróciło już po bugfixie? Tutaj trzeba by pisać jakąś logikę zgadującą błąd.