On Fri, Oct 26, 2018 at 09:52:24AM +0900, Junio C Hamano wrote: > Eric Sunshine <sunshine@xxxxxxxxxxxxxx> writes: > > >> + test_when_finished "git tag -d branch-and-tag-name" && > >> + git tag branch-and-tag-name && > > > > If git-tag crashes before actually creating the new tag, then "git tag > > -d", passed to test_when_finished(), will error out too, which is > > probably undesirable since "cleanup code" isn't expected to error out. > > Ah, I somehow thought that clean-up actions set up via when_finished > are allowed to fail without affecting the outcome, but apparently I > was mistaken. If a when_finished block fails, we consider that a test failure. But if we failed to create the tag, the test is failing anyway. Do we actually care at that point? We would still want to make sure we run the rest of the cleanup, but looking at the definition of test_when_finished(), I think we do. > I haven't gone through the list of when_finished clean-up actions > that do not end with "|| :"; I suspect some of them are simply being > sloppy and would want to have "|| :", but what I want to find out > out of such an audit is if there is a legitimate case where it helps > to catch failures in the clean-up actions. If there is none, then > ... I think in the success case it is legitimately helpful. If that "tag -d" failed above (after the tag creation and the rest of the test succeeded), it would certainly be unexpected and we would want to know that it happened. So I think "|| :" in this case is not just unnecessary, but actively bad. -Peff