• J
    test-lib: add in-shell "env" replacement · d2554c72
    Jeff King 提交于
    The one-shot environment variable syntax:
    
      FOO=BAR some-program
    
    is unportable when some-program is actually a shell
    function, like test_must_fail (on some shells FOO remains
    set after the function returns, and on others it does not).
    
    We sometimes get around this by using env, like:
    
      test_must_fail env FOO=BAR some-program
    
    But that only works because test_must_fail's arguments are
    themselves a command which can be run. You can't run:
    
      env FOO=BAR test_must_fail some-program
    
    because env does not know about our shell functions. So
    there is no equivalent for test_commit, for example, and one
    must resort to:
    
      (
        FOO=BAR
        export FOO
        test_commit
      )
    
    which is a bit verbose.  Let's add a version of "env" that
    works _inside_ the shell, by creating a subshell, exporting
    variables from its argument list, and running the command.
    
    Its use is demonstrated on a currently-unportable case in
    t4014.
    Signed-off-by: NJeff King <peff@peff.net>
    Signed-off-by: NJunio C Hamano <gitster@pobox.com>
    d2554c72
t4014-format-patch.sh 39.5 KB