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

     1  #!/usr/bin/env bash
     2  
     3  . "$(dirname "$0")/testlib.sh"
     4  
     5  begin_test "uninstall outside repository"
     6  (
     7    set -e
     8  
     9    mkdir uninstall-test
    10    cd uninstall-test
    11  
    12    smudge="$(git config filter.lfs.smudge)"
    13    clean="$(git config filter.lfs.clean)"
    14    filter="$(git config filter.lfs.process)"
    15  
    16    printf "$smudge" | grep "git-lfs smudge"
    17    printf "$clean" | grep "git-lfs clean"
    18    printf "$filter" | grep "git-lfs filter-process"
    19  
    20    # uninstall multiple times to trigger https://github.com/git-lfs/git-lfs/issues/529
    21    git lfs uninstall
    22  
    23    [ ! -e "lfs" ]
    24  
    25    git lfs install
    26    git lfs uninstall | tee uninstall.log
    27    grep "configuration has been removed" uninstall.log
    28  
    29    [ "" = "$(git config --global filter.lfs.smudge)" ]
    30    [ "" = "$(git config --global filter.lfs.clean)" ]
    31    [ "" = "$(git config --global filter.lfs.process)" ]
    32  
    33    cat $HOME/.gitconfig
    34    [ "$(grep 'filter "lfs"' $HOME/.gitconfig -c)" = "0" ]
    35  )
    36  end_test
    37  
    38  begin_test "uninstall outside repository without access to .git/lfs"
    39  (
    40    set -e
    41  
    42    mkdir uninstall-no-lfs
    43    cd uninstall-no-lfs
    44  
    45    mkdir .git
    46    touch .git/lfs
    47    touch lfs
    48  
    49    [ "" != "$(git config --global filter.lfs.smudge)" ]
    50    [ "" != "$(git config --global filter.lfs.clean)" ]
    51    [ "" != "$(git config --global filter.lfs.process)" ]
    52  
    53    git lfs uninstall
    54  
    55    [ "" = "$(git config --global filter.lfs.smudge)" ]
    56    [ "" = "$(git config --global filter.lfs.clean)" ]
    57    [ "" = "$(git config --global filter.lfs.process)" ]
    58  )
    59  
    60  begin_test "uninstall inside repository with default pre-push hook"
    61  (
    62    set -e
    63  
    64    reponame="$(basename "$0" ".sh")-hook"
    65    mkdir "$reponame"
    66    cd "$reponame"
    67    git init
    68    git lfs install
    69  
    70    [ -f .git/hooks/pre-push ]
    71    grep "git-lfs" .git/hooks/pre-push
    72  
    73    [ "git-lfs smudge -- %f" = "$(git config filter.lfs.smudge)" ]
    74    [ "git-lfs clean -- %f" = "$(git config filter.lfs.clean)" ]
    75    [ "git-lfs filter-process" = "$(git config filter.lfs.process)" ]
    76  
    77    git lfs uninstall
    78  
    79    [ -f .git/hooks/pre-push ] && {
    80      echo "expected .git/hooks/pre-push to be deleted"
    81      exit 1
    82    }
    83    [ "" = "$(git config filter.lfs.smudge)" ]
    84    [ "" = "$(git config filter.lfs.clean)" ]
    85    [ "" = "$(git config filter.lfs.process)" ]
    86  )
    87  end_test
    88  
    89  begin_test "uninstall inside repository without lfs pre-push hook"
    90  (
    91    set -e
    92  
    93    reponame="$(basename "$0" ".sh")-no-hook"
    94    mkdir "$reponame"
    95    cd "$reponame"
    96    git init
    97    git lfs install
    98    echo "something something git-lfs" > .git/hooks/pre-push
    99  
   100  
   101    [ -f .git/hooks/pre-push ]
   102    [ "something something git-lfs" = "$(cat .git/hooks/pre-push)" ]
   103  
   104    [ "git-lfs smudge -- %f" = "$(git config filter.lfs.smudge)" ]
   105    [ "git-lfs clean -- %f" = "$(git config filter.lfs.clean)" ]
   106    [ "git-lfs filter-process" = "$(git config filter.lfs.process)" ]
   107  
   108    git lfs uninstall
   109  
   110    [ -f .git/hooks/pre-push ]
   111    [ "" = "$(git config filter.lfs.smudge)" ]
   112    [ "" = "$(git config filter.lfs.clean)" ]
   113    [ "" = "$(git config filter.lfs.process)" ]
   114  )
   115  end_test
   116  
   117  begin_test "uninstall hooks inside repository"
   118  (
   119    set -e
   120  
   121    reponame="$(basename "$0" ".sh")-only-hook"
   122    mkdir "$reponame"
   123    cd "$reponame"
   124    git init
   125    git lfs install
   126  
   127    [ -f .git/hooks/pre-push ]
   128    grep "git-lfs" .git/hooks/pre-push
   129  
   130    [ "git-lfs smudge -- %f" = "$(git config filter.lfs.smudge)" ]
   131    [ "git-lfs clean -- %f" = "$(git config filter.lfs.clean)" ]
   132    [ "git-lfs filter-process" = "$(git config filter.lfs.process)" ]
   133  
   134    git lfs uninstall hooks
   135  
   136    [ -f .git/hooks/pre-push ] && {
   137      echo "expected .git/hooks/pre-push to be deleted"
   138      exit 1
   139    }
   140  
   141    [ "git-lfs smudge -- %f" = "$(git config filter.lfs.smudge)" ]
   142    [ "git-lfs clean -- %f" = "$(git config filter.lfs.clean)" ]
   143    [ "git-lfs filter-process" = "$(git config filter.lfs.process)" ]
   144  )
   145  end_test
   146  
   147  begin_test "uninstall --local"
   148  (
   149    set -e
   150  
   151    # old values that should be ignored by `uninstall --local`
   152    git config --global filter.lfs.smudge "global smudge"
   153    git config --global filter.lfs.clean "global clean"
   154    git config --global filter.lfs.process "global filter"
   155  
   156    reponame="$(basename "$0" ".sh")-local"
   157    mkdir "$reponame"
   158    cd "$reponame"
   159    git init
   160    git lfs install --local
   161  
   162    # local configs are correct
   163    [ "git-lfs smudge -- %f" = "$(git config --local filter.lfs.smudge)" ]
   164    [ "git-lfs clean -- %f" = "$(git config --local filter.lfs.clean)" ]
   165    [ "git-lfs filter-process" = "$(git config --local filter.lfs.process)" ]
   166  
   167    # global configs
   168    [ "global smudge" = "$(git config --global filter.lfs.smudge)" ]
   169    [ "global clean" = "$(git config --global filter.lfs.clean)" ]
   170    [ "global filter" = "$(git config --global filter.lfs.process)" ]
   171  
   172    git lfs uninstall --local 2>&1 | tee uninstall.log
   173    if [ ${PIPESTATUS[0]} -ne 0 ]; then
   174      echo >&2 "fatal: expected 'git lfs uninstall --local' to succeed"
   175      exit 1
   176    fi
   177    grep -v "Global Git LFS configuration has been removed." uninstall.log
   178  
   179    # global configs
   180    [ "global smudge" = "$(git config --global filter.lfs.smudge)" ]
   181    [ "global clean" = "$(git config --global filter.lfs.clean)" ]
   182    [ "global filter" = "$(git config --global filter.lfs.process)" ]
   183  
   184    # local configs are empty
   185    [ "" = "$(git config --local filter.lfs.smudge)" ]
   186    [ "" = "$(git config --local filter.lfs.clean)" ]
   187    [ "" = "$(git config --local filter.lfs.process)" ]
   188  )
   189  end_test