Skip to content
  • Gábor Szeder's avatar
    test-lib: fix non-portable pattern bracket expressions · 7d661e5e
    Gábor Szeder authored and Junio C Hamano's avatar Junio C Hamano committed
    Use a '!' character to start a non-matching pattern bracket
    expression, as specified by POSIX in Shell Command Language section
    2.13.1 Patterns Matching a Single Character [1].
    
    I used '^' instead in three places in the previous three commits, to
    verify that the arguments of the '--stress=' and '--stress-limit='
    options and the values of various '*_PORT' environment variables are
    valid numbers.  With certain shells, at least with dash (upstream and
    in Ubuntu 14.04) and mksh, this led to various undesired behaviors:
    
      # error message in case of a valid number
      $ ~/src/dash/src/dash ./t3903-stash.sh --stress=8
      error: --stress=<N> requires the number of jobs to run
    
      # not the expected error message
      $ ~/src/dash/src/dash ./t3903-stash.sh --stress=foo
      ./t3903-stash.sh: 238: test: Illegal number: foo
    
      # no error message at all?!
      $ mksh ./t3903-stash.sh --stress=foo
      $ echo $?
      0
    
    Some other shells, e.g. Bash (even in posix mode), ksh, dash in Ubuntu
    16.04 or later, are apparently happy to accept '^' just as well.
    
    [1] http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_13
    
    
    
    Signed-off-by: default avatarSZEDER Gábor <szeder.dev@gmail.com>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    7d661e5e