Skip to content
  • Jonathan Nieder's avatar
    test: errors preparing for a test are not special · 0d164519
    Jonathan Nieder authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    This script uses the following idiom to start each test in a known
    good state:
    
    	test_expect_success 'some commands use a pager' '
    		rm -f paginated.out || cleanup_fail &&
    		test_terminal git log &&
    		test -e paginated.out
    	'
    
    where "cleanup_fail" is a function that prints an error message and
    errors out.
    
    That is bogus on three levels:
    
     - Cleanup commands like "rm -f" and "test_unconfig" are designed not
       to fail, so this logic would never trip.
    
     - If they were to malfunction anyway, it is not useful to set apart
       cleanup commands as a special kind of failure with a special error
       message.  Whichever command fails, the next step is to investigate
       which command that was, for example by running tests with
       "prove -e 'sh -x'", and fix it.
    
     - Relying on left-associativity of mixed &&/|| lists makes the code
       somewhat cryptic.
    
    The fix is simple: drop the "|| cleanup_fail" in each test and the
    definition of the "cleanup_fail" function so no new callers can arise.
    
    Reported-by: default avatarJohannes Sixt <j6t@kdbg.org>
    Signed-off-by: default avatarJonathan Nieder <jrnieder@gmail.com>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    0d164519