mini wtf - tego jeszcze nie mockowałem

13

Nic specjalnego. Tak się dziele ciekawostką - na gorąco.

Po różnych złych doświadczeniach mam tak pokonfigurowane CI , że projekty kompilują się zawsze przynajmniej raz w tygodniu, nawet jak nikt do nich nie zagląda .

I właśnie dostałem info, że jeden z wielu starych projektów javowych nie przechodzi testów. Projekt spadkowy - nie ja pisałem, czasem coś w nim sprzątam (♋).
Otóż wywala się EmailValidatorTest ... o ciekawe.
Czyżby zmieniły się reguły walidacji email, jakieś zależności czasowe, nowy upgrade javy coś zmienił?
Nie.
Stack trace szybko wyjaśnia sprawę:

javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '...........TO_JEST_NAZWA_TEGO_HOSTA....'
	at com.sun.jndi.dns.DnsClient.checkResponseCode(DnsClient.java:660)
	at com.sun.jndi.dns.DnsClient.isMatchResponse(DnsClient.java:578)
	at com.sun.jndi.dns.DnsClient.doUdpQuery(DnsClient.java:426)
	at com.sun.jndi.dns.DnsClient.query(DnsClient.java:211)

Część EmailValidatora to sprawdzanie hosta... w DNSach (efektywnie publicznych ...)
Właśnie jednak taka domena (jakaś dość standardowa - akademicka) wyparowała.

No i co teraz?

test_fails.jpg

Może zmokuje DNSy. Zobaczymy. Tego jeszcze nie mockowałem.

2

@Charles_Ray:
Właśnie chyba dziś, albo wczoraj pisałem, że prawie wszystkie metody z Object to błąd. Dełeś linka na chyba idealny (ale i ekstremalny) przykład - wystarczy, że ktoś zrobi HashSet URLi i można się nieźle zdziwić (i długo szukać co się dzieje).

0

Ignore I cyk, wszystko zielone.

0

A ja się zacząłem zastanawiać na ile taki filtr na literówki jest skuteczny w XXI wieku:

$ dig @8.8.8.8 +noall +answer gmail.com gmeil.com gmiil.com gimail.com not-existing-fucking-domain-gmail.com 
gmail.com.		220	IN	A	172.217.20.197
gmeil.com.		303	IN	A	109.201.135.46
gmiil.com.		3472	IN	A	103.224.182.238
gimail.com.		227	IN	A	91.195.241.136

Może na jakiś powaznybank.pl działa, no na GMaila wykupione wszystko co się rusza...

6

To jeszcze wstawię jak to zrobiłem
Po pooglądaniu tego kodu, testów i wszystkiego dookoła stwierdziłem, że dobrym rozwiązaniem będzie ...
@Ignore,

a jeszcze lepszym - po prostu skasowanie testu. Poszedł.

Ze smaczków kodu, to w tym samym pliku był taki @Junit (pisze bez kopiowania i z pamięci).

@Test(expected = ValidatorException.class)
public void testValidationFailure () {
    emailValidator.validate("one%veri_wrong_email");
    emailValidator.validate("strongly wrong_wrong_email@");
    emailValidator.validate(null);
    emailValidator.validate("admin jbzd (wiadomo co)");
}

Znajdź WTF to chyba dobre zadanie na rozmowę rekrutacyjną do javowego korpo.

Poza tym, projekt nie dość, że korzysta z JSF - to jeszcze oczywiście zawiera wszelkie typowe antypaterny jakie się spotyka w JSF.
Ale to akurat nie jest nietypowe, każdy projekt w JSF jaki widziałem, większy niż TODO List, działał tylko przez przypadek, bo zgodnie ze specyfikacją to nie powinien.

1 użytkowników online, w tym zalogowanych: 0, gości: 1