t / t2300-cd-to-toplevel.shon commit built-in rebase --autostash: leave the current branch alone if possible (176f5d9)
   1#!/bin/sh
   2
   3test_description='cd_to_toplevel'
   4
   5. ./test-lib.sh
   6
   7EXEC_PATH="$(git --exec-path)"
   8test_have_prereq !MINGW ||
   9case "$EXEC_PATH" in
  10[A-Za-z]:/*)
  11        EXEC_PATH="/${EXEC_PATH%%:*}${EXEC_PATH#?:}"
  12        ;;
  13esac
  14
  15test_cd_to_toplevel () {
  16        test_expect_success $3 "$2" '
  17                (
  18                        cd '"'$1'"' &&
  19                        PATH="$EXEC_PATH:$PATH" &&
  20                        . git-sh-setup &&
  21                        cd_to_toplevel &&
  22                        [ "$(pwd -P)" = "$TOPLEVEL" ]
  23                )
  24        '
  25}
  26
  27TOPLEVEL="$(pwd -P)/repo"
  28mkdir -p repo/sub/dir
  29mv .git repo/
  30SUBDIRECTORY_OK=1
  31
  32test_cd_to_toplevel repo 'at physical root'
  33
  34test_cd_to_toplevel repo/sub/dir 'at physical subdir'
  35
  36ln -s repo symrepo 2>/dev/null
  37test_cd_to_toplevel symrepo 'at symbolic root' SYMLINKS
  38
  39ln -s repo/sub/dir subdir-link 2>/dev/null
  40test_cd_to_toplevel subdir-link 'at symbolic subdir' SYMLINKS
  41
  42cd repo
  43ln -s sub/dir internal-link 2>/dev/null
  44test_cd_to_toplevel internal-link 'at internal symbolic subdir' SYMLINKS
  45
  46test_done