t / t1306-xdg-files.shon commit Merge branch 'cw/amend-commit-without-message' (8647b58)
   1#!/bin/sh
   2#
   3# Copyright (c) 2012 Valentin Duperray, Lucien Kong, Franck Jonas,
   4#                    Thomas Nguy, Khoi Nguyen
   5#                    Grenoble INP Ensimag
   6#
   7
   8test_description='Compatibility with $XDG_CONFIG_HOME/git/ files'
   9
  10. ./test-lib.sh
  11
  12test_expect_success 'read config: xdg file exists and ~/.gitconfig doesn'\''t' '
  13        mkdir -p .config/git &&
  14        echo "[alias]" >.config/git/config &&
  15        echo "  myalias = !echo in_config" >>.config/git/config &&
  16        echo in_config >expected &&
  17        git myalias >actual &&
  18        test_cmp expected actual
  19'
  20
  21
  22test_expect_success 'read config: xdg file exists and ~/.gitconfig exists' '
  23        >.gitconfig &&
  24        echo "[alias]" >.gitconfig &&
  25        echo "  myalias = !echo in_gitconfig" >>.gitconfig &&
  26        echo in_gitconfig >expected &&
  27        git myalias >actual &&
  28        test_cmp expected actual
  29'
  30
  31
  32test_expect_success 'read with --get: xdg file exists and ~/.gitconfig doesn'\''t' '
  33        rm .gitconfig &&
  34        echo "[user]" >.config/git/config &&
  35        echo "  name = read_config" >>.config/git/config &&
  36        echo read_config >expected &&
  37        git config --get user.name >actual &&
  38        test_cmp expected actual
  39'
  40
  41
  42test_expect_success 'read with --get: xdg file exists and ~/.gitconfig exists' '
  43        >.gitconfig &&
  44        echo "[user]" >.gitconfig &&
  45        echo "  name = read_gitconfig" >>.gitconfig &&
  46        echo read_gitconfig >expected &&
  47        git config --get user.name >actual &&
  48        test_cmp expected actual
  49'
  50
  51
  52test_expect_success 'read with --list: xdg file exists and ~/.gitconfig doesn'\''t' '
  53        rm .gitconfig &&
  54        echo user.name=read_config >expected &&
  55        git config --global --list >actual &&
  56        test_cmp expected actual
  57'
  58
  59
  60test_expect_success 'read with --list: xdg file exists and ~/.gitconfig exists' '
  61        >.gitconfig &&
  62        echo "[user]" >.gitconfig &&
  63        echo "  name = read_gitconfig" >>.gitconfig &&
  64        echo user.name=read_gitconfig >expected &&
  65        git config --global --list >actual &&
  66        test_cmp expected actual
  67'
  68
  69
  70test_expect_success 'Setup' '
  71        git init git &&
  72        cd git &&
  73        echo foo >to_be_excluded
  74'
  75
  76
  77test_expect_success 'Exclusion of a file in the XDG ignore file' '
  78        mkdir -p "$HOME"/.config/git/ &&
  79        echo to_be_excluded >"$HOME"/.config/git/ignore &&
  80        test_must_fail git add to_be_excluded
  81'
  82
  83
  84test_expect_success 'Exclusion in both XDG and local ignore files' '
  85        echo to_be_excluded >.gitignore &&
  86        test_must_fail git add to_be_excluded
  87'
  88
  89
  90test_expect_success 'Exclusion in a non-XDG global ignore file' '
  91        rm .gitignore &&
  92        echo >"$HOME"/.config/git/ignore &&
  93        echo to_be_excluded >"$HOME"/my_gitignore &&
  94        git config core.excludesfile "$HOME"/my_gitignore &&
  95        test_must_fail git add to_be_excluded
  96'
  97
  98
  99test_expect_success 'Checking attributes in the XDG attributes file' '
 100        echo foo >f &&
 101        git check-attr -a f >actual &&
 102        test_line_count -eq 0 actual &&
 103        echo "f attr_f" >"$HOME"/.config/git/attributes &&
 104        echo "f: attr_f: set" >expected &&
 105        git check-attr -a f >actual &&
 106        test_cmp expected actual
 107'
 108
 109
 110test_expect_success 'Checking attributes in both XDG and local attributes files' '
 111        echo "f -attr_f" >.gitattributes &&
 112        echo "f: attr_f: unset" >expected &&
 113        git check-attr -a f >actual &&
 114        test_cmp expected actual
 115'
 116
 117
 118test_expect_success 'Checking attributes in a non-XDG global attributes file' '
 119        test_might_fail rm .gitattributes &&
 120        echo "f attr_f=test" >"$HOME"/my_gitattributes &&
 121        git config core.attributesfile "$HOME"/my_gitattributes &&
 122        echo "f: attr_f: test" >expected &&
 123        git check-attr -a f >actual &&
 124        test_cmp expected actual
 125'
 126
 127
 128test_expect_success 'write: xdg file exists and ~/.gitconfig doesn'\''t' '
 129        mkdir -p "$HOME"/.config/git &&
 130        >"$HOME"/.config/git/config &&
 131        test_might_fail rm "$HOME"/.gitconfig &&
 132        git config --global user.name "write_config" &&
 133        echo "[user]" >expected &&
 134        echo "  name = write_config" >>expected &&
 135        test_cmp expected "$HOME"/.config/git/config
 136'
 137
 138
 139test_expect_success 'write: xdg file exists and ~/.gitconfig exists' '
 140        >"$HOME"/.gitconfig &&
 141        git config --global user.name "write_gitconfig" &&
 142        echo "[user]" >expected &&
 143        echo "  name = write_gitconfig" >>expected &&
 144        test_cmp expected "$HOME"/.gitconfig
 145'
 146
 147
 148test_expect_success 'write: ~/.config/git/ exists and config file doesn'\''t' '
 149        test_might_fail rm "$HOME"/.gitconfig &&
 150        test_might_fail rm "$HOME"/.config/git/config &&
 151        git config --global user.name "write_gitconfig" &&
 152        echo "[user]" >expected &&
 153        echo "  name = write_gitconfig" >>expected &&
 154        test_cmp expected "$HOME"/.gitconfig
 155'
 156
 157
 158test_done