<div dir="ltr"><br><div class="gmail_quote">On Tue, Mar 17, 2015 at 12:49 AM Victor Ciurel via so <<a href="mailto:so@cursuri.cs.pub.ro">so@cursuri.cs.pub.ro</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000">
On 03/17/2015 12:34 AM, Razvan Crainea wrote:<br>
</div><div bgcolor="#FFFFFF" text="#000000"><blockquote type="cite"><div dir="ltr"><div class="gmail_quote">On Mon, Mar 16, 2015 at 10:37 PM Victor
Ciurel via so <<a href="mailto:so@cursuri.cs.pub.ro" target="_blank">so@cursuri.cs.pub.ro</a>>
wrote:<br>
<div> </div>
</div></div></blockquote></div><div bgcolor="#FFFFFF" text="#000000"><blockquote type="cite"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> De
asemenea, imi poate<br>
explica cineva comportamentul diff de mai sus, pentru ca eu
inteleg ca<br>
rulat cu -B, se vor ignora randurile libere.<br>
</blockquote>
<div><br>
</div>
<div>Dacă folosești opțiunea -B, când diff găsește o linie
goală într-un fișier, verifică dacă în celălalt fișier este
_cel puțin_ o linie goală.</div>
<div>Concret, în cazul tău, diff găsește o linie goală între
True și False în cel de-al doilea fișier, în schimb în
primul fișier nu era niciuna. Deci testul returnează fals.
Dacă erau două sau mai multe linii goale între True și
False, diff returna succes.</div>
</div></div></blockquote></div><div bgcolor="#FFFFFF" text="#000000"><blockquote type="cite"><div dir="ltr"><div class="gmail_quote"></div>
</div>
</blockquote>
<br>
Am un contraexemplu pentru argumentul acesta:<br>
<br>
"True\n\nFalse\n\n" vs "True\nFalse\n\n" </div></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000">
<br>
Comparand cu diff, aceste apar ca fiind identice, desi exista o
linie libera intre True si False in primul caz, dar nu si in al
doilea.<br></div></blockquote><div><br></div><div>Într-adevăr, diff se comportă ciudat în aceste cazuri. Dacă reiei primul exemplu pe care l-ai dat, o să observi că:</div><div><br></div><div>diff "True\nFalse\n\n" vs. "True\n\nFalse\n" -> diferite</div><div>diff "True\n\nFalse\n" vs. "True\nFalse\n\n" -> identice</div><div><br></div><div>Deci dacă le dai fișerele în altă ordine, obții rezultate diferite. Nu mi-e clar de ce are acest comportament și nici nu am găsit nicăieri documentat. Ar merita întrebată echipa de maintaineri de ce se comportă așa. Din punctul meu de vedere este un bug.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000">
<br>
As vrea sa mai inteleg cum anume au fost generat fisierul de
referinta pentru urmatoarele bucati de input (<a href="http://test20.in" target="_blank">test20.in</a>):<br>
<br>
find brady<br>
find into _test/outputs/test20.out.1<br>
find jamie<br>
<br>
Ce au ca output la stdout (test20.ref):<br>
<br>
"True\n\nFalse\n"<br>
<br>
Nu inteleg din ce motiv ar aparea o linie libera intre True si
False. Pentru fiecare comanda ce afiseaza in fisier, ar trebui sa
apara o linie libera si la stdout? Sau dupa fiecare comanda rulata
vom afisa o linie goala?<br><br></div></blockquote><div>Implementarea de referință lasă după fiecare True și False câte o linie liberă. De asta output-ul apare așa. Ideal ar fi fost ca astfel de cazuri să fie eliminate de diff, dar din păcate nu face mereu ce vrem noi :(. </div></div></div>