• Show log

    Commit

  • Hash : c7cfa093
    Author : Stefano Lattarini
    Date : 2013-05-21T20:22:17

    tests: run_make: options to do command redirection
    
    Let's improve the API of the 'run_make()' helper shell function by
    adding three new options:
    
      -O   Save the standard output from make on disk, in a regular file
           named 'stdout'.
    
      -E   Save the standard error from make on disk, in a regular file
           named 'stderr'.
    
      -M   Save both the standard output and standard error from make on
           disk, in a regular file named 'output'. This option supersedes
           both the '-O' and '-E' options.
    
    This new API has two main advantages.
    
      1. Its use will allow us to get rid of more cumbersome idioms
         like, e.g.,
    
           $MAKE check >stdout && { cat stdout; exit 1; }
           cat stdout
    
         That can now be substituted with a simpler one:
    
           run_make -e FAIL -O check
    
      2. More importantly, using the new API we will prevent any extra output
         from the shell traces of the code in run_make to be redirected along
         with the make stderr (where that was redirected).  This problem was
         present in usages like, e.g.,
    
           run_make TESTS=foo.test check 2>stderr && exit 1
           grep 'expected error message' stderr
    
         Such usages are now to be rewritten as follows:
    
           run_make -e FAIL -E TESTS=foo.test check
           grep 'expected error message' stderr
    
         ensuring that 'stderr' won't end up containing unrelated stuff.
    
    Note that we do not convert in bulk the old idioms and the use of
    redirected 'run_make' invocations with this patch.  We only convert
    some occurrences, to ensure that the new implementation of 'run_make'
    is sound enough.  More sweeping conversions will likely be done in
    follow-up patches.
    
    * t/ax/am-test-lib.sh (run_make): Enhance and implement the extended API.
    * t/tap-xfail-tests.sh: Use the new 'run_make' API.
    * t/test-driver-cond.sh: Likewise.
    * t/tests-environment-fd-redirect.sh: Likewise.
    * t/uninstall-fail.sh: Likewise.
    * t/yacc-dist-nobuild.sh: Likewise.
    
    Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>