28b7d957a5268837e2789e2b490d552fbceae5cc
   1#!/bin/sh
   2
   3test_description='git-status ignored files'
   4
   5. ./test-lib.sh
   6
   7cat >expected <<\EOF
   8?? .gitignore
   9?? actual
  10?? expected
  11?? untracked/
  12EOF
  13
  14test_expect_success 'status untracked directory with --ignored' '
  15        echo "ignored" >.gitignore &&
  16        mkdir untracked &&
  17        : >untracked/ignored &&
  18        : >untracked/uncommitted &&
  19        git status --porcelain --ignored >actual &&
  20        test_cmp expected actual
  21'
  22
  23cat >expected <<\EOF
  24?? .gitignore
  25?? actual
  26?? expected
  27?? untracked/uncommitted
  28!! untracked/ignored
  29EOF
  30
  31test_expect_success 'status untracked directory with --ignored -u' '
  32        git status --porcelain --ignored -u >actual &&
  33        test_cmp expected actual
  34'
  35
  36cat >expected <<\EOF
  37?? .gitignore
  38?? actual
  39?? expected
  40!! ignored/
  41EOF
  42
  43test_expect_success 'status ignored directory with --ignore' '
  44        rm -rf untracked &&
  45        mkdir ignored &&
  46        : >ignored/uncommitted &&
  47        git status --porcelain --ignored >actual &&
  48        test_cmp expected actual
  49'
  50
  51cat >expected <<\EOF
  52?? .gitignore
  53?? actual
  54?? expected
  55!! ignored/uncommitted
  56EOF
  57
  58test_expect_success 'status ignored directory with --ignore -u' '
  59        git status --porcelain --ignored -u >actual &&
  60        test_cmp expected actual
  61'
  62
  63cat >expected <<\EOF
  64?? .gitignore
  65?? actual
  66?? expected
  67!! untracked-ignored/
  68EOF
  69
  70test_expect_success 'status untracked directory with ignored files with --ignore' '
  71        rm -rf ignored &&
  72        mkdir untracked-ignored &&
  73        mkdir untracked-ignored/test &&
  74        : >untracked-ignored/ignored &&
  75        : >untracked-ignored/test/ignored &&
  76        git status --porcelain --ignored >actual &&
  77        test_cmp expected actual
  78'
  79
  80cat >expected <<\EOF
  81?? .gitignore
  82?? actual
  83?? expected
  84!! untracked-ignored/ignored
  85!! untracked-ignored/test/ignored
  86EOF
  87
  88test_expect_success 'status untracked directory with ignored files with --ignore -u' '
  89        git status --porcelain --ignored -u >actual &&
  90        test_cmp expected actual
  91'
  92
  93cat >expected <<\EOF
  94?? .gitignore
  95?? actual
  96?? expected
  97EOF
  98
  99test_expect_success 'status ignored tracked directory with --ignore' '
 100        rm -rf untracked-ignored &&
 101        mkdir tracked &&
 102        : >tracked/committed &&
 103        git add tracked/committed &&
 104        git commit -m. &&
 105        echo "tracked" >.gitignore &&
 106        git status --porcelain --ignored >actual &&
 107        test_cmp expected actual
 108'
 109
 110cat >expected <<\EOF
 111?? .gitignore
 112?? actual
 113?? expected
 114EOF
 115
 116test_expect_success 'status ignored tracked directory with --ignore -u' '
 117        git status --porcelain --ignored -u >actual &&
 118        test_cmp expected actual
 119'
 120
 121cat >expected <<\EOF
 122?? .gitignore
 123?? actual
 124?? expected
 125EOF
 126
 127test_expect_success 'status ignored tracked directory and ignored file with --ignore' '
 128        echo "committed" >>.gitignore &&
 129        git status --porcelain --ignored >actual &&
 130        test_cmp expected actual
 131'
 132
 133cat >expected <<\EOF
 134?? .gitignore
 135?? actual
 136?? expected
 137EOF
 138
 139test_expect_success 'status ignored tracked directory and ignored file with --ignore -u' '
 140        git status --porcelain --ignored -u >actual &&
 141        test_cmp expected actual
 142'
 143
 144cat >expected <<\EOF
 145?? .gitignore
 146?? actual
 147?? expected
 148!! tracked/
 149EOF
 150
 151test_expect_success 'status ignored tracked directory and uncommitted file with --ignore' '
 152        echo "tracked" >.gitignore &&
 153        : >tracked/uncommitted &&
 154        git status --porcelain --ignored >actual &&
 155        test_cmp expected actual
 156'
 157
 158cat >expected <<\EOF
 159?? .gitignore
 160?? actual
 161?? expected
 162!! tracked/uncommitted
 163EOF
 164
 165test_expect_success 'status ignored tracked directory and uncommitted file with --ignore -u' '
 166        git status --porcelain --ignored -u >actual &&
 167        test_cmp expected actual
 168'
 169
 170cat >expected <<\EOF
 171?? .gitignore
 172?? actual
 173?? expected
 174!! tracked/
 175EOF
 176
 177test_expect_success 'status ignored tracked directory with uncommitted file in untracked subdir with --ignore' '
 178        rm -rf tracked/uncommitted &&
 179        mkdir tracked/ignored &&
 180        : >tracked/ignored/uncommitted &&
 181        git status --porcelain --ignored >actual &&
 182        test_cmp expected actual
 183'
 184
 185cat >expected <<\EOF
 186?? .gitignore
 187?? actual
 188?? expected
 189!! tracked/ignored/uncommitted
 190EOF
 191
 192test_expect_success 'status ignored tracked directory with uncommitted file in untracked subdir with --ignore -u' '
 193        git status --porcelain --ignored -u >actual &&
 194        test_cmp expected actual
 195'
 196
 197cat >expected <<\EOF
 198?? .gitignore
 199?? actual
 200?? expected
 201!! tracked/
 202EOF
 203
 204test_expect_success 'status ignored tracked directory with uncommitted file in tracked subdir with --ignore' '
 205        : >tracked/ignored/committed &&
 206        git add -f tracked/ignored/committed &&
 207        git commit -m. &&
 208        git status --porcelain --ignored >actual &&
 209        test_cmp expected actual
 210'
 211
 212cat >expected <<\EOF
 213?? .gitignore
 214?? actual
 215?? expected
 216!! tracked/ignored/uncommitted
 217EOF
 218
 219test_expect_success 'status ignored tracked directory with uncommitted file in tracked subdir with --ignore -u' '
 220        git status --porcelain --ignored -u >actual &&
 221        test_cmp expected actual
 222'
 223
 224test_done