github.com/2lambda123/git-lfs@v2.5.2+incompatible/t/testenv.sh (about)

     1  #!/usr/bin/env bash
     2  # Including in script/integration and every t/t-*.sh file.
     3  
     4  set -e
     5  
     6  UNAME=$(uname -s)
     7  IS_WINDOWS=0
     8  IS_MAC=0
     9  SHASUM="shasum -a 256"
    10  PATH_SEPARATOR="/"
    11  
    12  if [[ $UNAME == MINGW* || $UNAME == MSYS* || $UNAME == CYGWIN* ]]
    13  then
    14    IS_WINDOWS=1
    15  
    16    # Windows might be MSYS2 which does not have the shasum Perl wrapper
    17    # script by default, so use sha256sum directly. MacOS on the other hand
    18    # does not have sha256sum, so still use shasum as the default.
    19    SHASUM="sha256sum"
    20    PATH_SEPARATOR="\\"
    21  elif [[ $UNAME == *Darwin* ]]
    22  then
    23    IS_MAC=1
    24  fi
    25  
    26  resolve_symlink() {
    27    local arg=$1
    28    if [ $IS_WINDOWS -eq 1 ]; then
    29      printf '%s' "$arg"
    30    elif [ $IS_MAC -eq 1 ]; then
    31      # no readlink -f on Mac
    32      local oldwd=$(pwd)
    33      local target=$arg
    34  
    35      cd `dirname $target`
    36      target=`basename $target`
    37      while [ -L "$target" ]
    38      do
    39          target=`readlink $target`
    40          cd `dirname $target`
    41          target=`basename $target`
    42      done
    43  
    44      local resolveddir=`pwd -P`
    45      cd "$oldwd"
    46      printf '%s' "$resolveddir/$target"
    47  
    48    else
    49      readlink -f "$arg"
    50    fi
    51  
    52  }
    53  
    54  # The root directory for the git-lfs repository by default.
    55  if [ -z "$ROOTDIR" ]; then
    56    ROOTDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P)"
    57  fi
    58  
    59  # Where Git LFS outputs the compiled binaries
    60  BINPATH="$ROOTDIR/bin"
    61  
    62  # Put bin path on PATH
    63  PATH="$BINPATH:$PATH"
    64  
    65  # Always provide a test dir outside our git repo if not specified
    66  TEMPDIR_PREFIX="git-lfs_TEMP.XXXXXX"
    67  if [ -z "$GIT_LFS_TEST_DIR" ]; then
    68      GIT_LFS_TEST_DIR=$(mktemp -d -t "$TEMPDIR_PREFIX")
    69      GIT_LFS_TEST_DIR=$(resolve_symlink $GIT_LFS_TEST_DIR)
    70      # cleanup either after single test or at end of integration (except on fail)
    71      RM_GIT_LFS_TEST_DIR=yes
    72  fi
    73  # create a temporary work space
    74  TMPDIR=$GIT_LFS_TEST_DIR
    75  
    76  # This is unique to every test file, and cleared after every test run.
    77  TRASHDIR="$TMPDIR/$(basename "$0")-$$"
    78  
    79  # The directory that the test Git server works from.  This cleared at the
    80  # beginning of every test run.
    81  REMOTEDIR="$ROOTDIR/t/remote"
    82  
    83  # The directory that stores credentials. Credentials are stored in files with
    84  # the username:password with filenames identifying the host (port numbers are
    85  # ignored).
    86  #
    87  #   # stores the credentials for http://127.0.0.1:*
    88  #   $CREDSDIR/127.0.0.1
    89  #
    90  #   # stores the credentials for http://git-server.com
    91  #   $CREDSDIR/git-server.com
    92  #
    93  CREDSDIR="$REMOTEDIR/creds"
    94  
    95  # This is the prefix for Git config files.  See the "Test Suite" section in
    96  # t/README.md
    97  LFS_CONFIG="$REMOTEDIR/config"
    98  
    99  # This file contains the URL of the test Git server. See the "Test Suite"
   100  # section in t/README.md
   101  LFS_URL_FILE="$REMOTEDIR/url"
   102  
   103  # This file contains the SSL URL of the test Git server. See the "Test Suite"
   104  # section in t/README.md
   105  LFS_SSL_URL_FILE="$REMOTEDIR/sslurl"
   106  
   107  # This file contains the client cert SSL URL of the test Git server. See the "Test Suite"
   108  # section in t/README.md
   109  LFS_CLIENT_CERT_URL_FILE="$REMOTEDIR/clientcerturl"
   110  
   111  # This file contains the self-signed SSL cert of the TLS endpoint of the test Git server.
   112  LFS_CERT_FILE="$REMOTEDIR/cert"
   113  
   114  # This file contains the client certificate of the client cert endpoint of the test Git server.
   115  LFS_CLIENT_CERT_FILE="$REMOTEDIR/client.crt"
   116  
   117  # This file contains the client key of the client cert endpoint of the test Git server.
   118  LFS_CLIENT_KEY_FILE="$REMOTEDIR/client.key"
   119  
   120  # the fake home dir used for the initial setup
   121  TESTHOME="$REMOTEDIR/home"
   122  
   123  GIT_CONFIG_NOSYSTEM=1
   124  GIT_TERMINAL_PROMPT=0
   125  GIT_SSH=lfs-ssh-echo
   126  APPVEYOR_REPO_COMMIT_MESSAGE="test: env test should look for GIT_SSH too"
   127  
   128  export CREDSDIR
   129  export GIT_CONFIG_NOSYSTEM
   130  export GIT_SSH
   131  export APPVEYOR_REPO_COMMIT_MESSAGE
   132  
   133  mkdir -p "$TMPDIR"
   134  mkdir -p "$TRASHDIR"
   135  
   136  if [ $IS_WINDOWS -eq 1 ]; then
   137    # prevent Windows OpenSSH from opening GUI prompts
   138    SSH_ASKPASS=""
   139  fi
   140  
   141  . "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/testhelpers.sh"