t / t7502-status.shon commit merge-recursive: do not clobber untracked working tree garbage (c5ab03f)
   1#!/bin/sh
   2#
   3# Copyright (c) 2007 Johannes E. Schindelin
   4#
   5
   6test_description='git status'
   7
   8. ./test-lib.sh
   9
  10test_expect_success 'setup' '
  11        : > tracked &&
  12        : > modified &&
  13        mkdir dir1 &&
  14        : > dir1/tracked &&
  15        : > dir1/modified &&
  16        mkdir dir2 &&
  17        : > dir1/tracked &&
  18        : > dir1/modified &&
  19        git add . &&
  20
  21        git status >output &&
  22
  23        test_tick &&
  24        git commit -m initial &&
  25        : > untracked &&
  26        : > dir1/untracked &&
  27        : > dir2/untracked &&
  28        echo 1 > dir1/modified &&
  29        echo 2 > dir2/modified &&
  30        echo 3 > dir2/added &&
  31        git add dir2/added
  32'
  33
  34test_expect_success 'status (1)' '
  35
  36        grep "use \"git rm --cached <file>\.\.\.\" to unstage" output
  37
  38'
  39
  40cat > expect << \EOF
  41# On branch master
  42# Changes to be committed:
  43#   (use "git reset HEAD <file>..." to unstage)
  44#
  45#       new file:   dir2/added
  46#
  47# Changed but not updated:
  48#   (use "git add <file>..." to update what will be committed)
  49#
  50#       modified:   dir1/modified
  51#
  52# Untracked files:
  53#   (use "git add <file>..." to include in what will be committed)
  54#
  55#       dir1/untracked
  56#       dir2/modified
  57#       dir2/untracked
  58#       expect
  59#       output
  60#       untracked
  61EOF
  62
  63test_expect_success 'status (2)' '
  64
  65        git status > output &&
  66        test_cmp expect output
  67
  68'
  69
  70cat >expect <<EOF
  71# On branch master
  72# Changes to be committed:
  73#   (use "git reset HEAD <file>..." to unstage)
  74#
  75#       new file:   dir2/added
  76#
  77# Changed but not updated:
  78#   (use "git add <file>..." to update what will be committed)
  79#
  80#       modified:   dir1/modified
  81#
  82# Untracked files not listed (use -u option to show untracked files)
  83EOF
  84test_expect_success 'status -uno' '
  85        mkdir dir3 &&
  86        : > dir3/untracked1 &&
  87        : > dir3/untracked2 &&
  88        git status -uno >output &&
  89        test_cmp expect output
  90'
  91
  92test_expect_success 'status (status.showUntrackedFiles no)' '
  93        git config status.showuntrackedfiles no
  94        git status >output &&
  95        test_cmp expect output
  96'
  97
  98cat >expect <<EOF
  99# On branch master
 100# Changes to be committed:
 101#   (use "git reset HEAD <file>..." to unstage)
 102#
 103#       new file:   dir2/added
 104#
 105# Changed but not updated:
 106#   (use "git add <file>..." to update what will be committed)
 107#
 108#       modified:   dir1/modified
 109#
 110# Untracked files:
 111#   (use "git add <file>..." to include in what will be committed)
 112#
 113#       dir1/untracked
 114#       dir2/modified
 115#       dir2/untracked
 116#       dir3/
 117#       expect
 118#       output
 119#       untracked
 120EOF
 121test_expect_success 'status -unormal' '
 122        git status -unormal >output &&
 123        test_cmp expect output
 124'
 125
 126test_expect_success 'status (status.showUntrackedFiles normal)' '
 127        git config status.showuntrackedfiles normal
 128        git status >output &&
 129        test_cmp expect output
 130'
 131
 132cat >expect <<EOF
 133# On branch master
 134# Changes to be committed:
 135#   (use "git reset HEAD <file>..." to unstage)
 136#
 137#       new file:   dir2/added
 138#
 139# Changed but not updated:
 140#   (use "git add <file>..." to update what will be committed)
 141#
 142#       modified:   dir1/modified
 143#
 144# Untracked files:
 145#   (use "git add <file>..." to include in what will be committed)
 146#
 147#       dir1/untracked
 148#       dir2/modified
 149#       dir2/untracked
 150#       dir3/untracked1
 151#       dir3/untracked2
 152#       expect
 153#       output
 154#       untracked
 155EOF
 156test_expect_success 'status -uall' '
 157        git status -uall >output &&
 158        test_cmp expect output
 159'
 160test_expect_success 'status (status.showUntrackedFiles all)' '
 161        git config status.showuntrackedfiles all
 162        git status >output &&
 163        rm -rf dir3 &&
 164        git config --unset status.showuntrackedfiles &&
 165        test_cmp expect output
 166'
 167
 168cat > expect << \EOF
 169# On branch master
 170# Changes to be committed:
 171#   (use "git reset HEAD <file>..." to unstage)
 172#
 173#       new file:   ../dir2/added
 174#
 175# Changed but not updated:
 176#   (use "git add <file>..." to update what will be committed)
 177#
 178#       modified:   modified
 179#
 180# Untracked files:
 181#   (use "git add <file>..." to include in what will be committed)
 182#
 183#       untracked
 184#       ../dir2/modified
 185#       ../dir2/untracked
 186#       ../expect
 187#       ../output
 188#       ../untracked
 189EOF
 190
 191test_expect_success 'status with relative paths' '
 192
 193        (cd dir1 && git status) > output &&
 194        test_cmp expect output
 195
 196'
 197
 198cat > expect << \EOF
 199# On branch master
 200# Changes to be committed:
 201#   (use "git reset HEAD <file>..." to unstage)
 202#
 203#       new file:   dir2/added
 204#
 205# Changed but not updated:
 206#   (use "git add <file>..." to update what will be committed)
 207#
 208#       modified:   dir1/modified
 209#
 210# Untracked files:
 211#   (use "git add <file>..." to include in what will be committed)
 212#
 213#       dir1/untracked
 214#       dir2/modified
 215#       dir2/untracked
 216#       expect
 217#       output
 218#       untracked
 219EOF
 220
 221test_expect_success 'status without relative paths' '
 222
 223        git config status.relativePaths false
 224        (cd dir1 && git status) > output &&
 225        test_cmp expect output
 226
 227'
 228
 229cat <<EOF >expect
 230# On branch master
 231# Changes to be committed:
 232#   (use "git reset HEAD <file>..." to unstage)
 233#
 234#       modified:   dir1/modified
 235#
 236# Untracked files:
 237#   (use "git add <file>..." to include in what will be committed)
 238#
 239#       dir1/untracked
 240#       dir2/
 241#       expect
 242#       output
 243#       untracked
 244EOF
 245test_expect_success 'status of partial commit excluding new file in index' '
 246        git status dir1/modified >output &&
 247        test_cmp expect output
 248'
 249
 250test_expect_success 'setup status submodule summary' '
 251        test_create_repo sm && (
 252                cd sm &&
 253                >foo &&
 254                git add foo &&
 255                git commit -m "Add foo"
 256        ) &&
 257        git add sm
 258'
 259
 260cat >expect <<EOF
 261# On branch master
 262# Changes to be committed:
 263#   (use "git reset HEAD <file>..." to unstage)
 264#
 265#       new file:   dir2/added
 266#       new file:   sm
 267#
 268# Changed but not updated:
 269#   (use "git add <file>..." to update what will be committed)
 270#
 271#       modified:   dir1/modified
 272#
 273# Untracked files:
 274#   (use "git add <file>..." to include in what will be committed)
 275#
 276#       dir1/untracked
 277#       dir2/modified
 278#       dir2/untracked
 279#       expect
 280#       output
 281#       untracked
 282EOF
 283test_expect_success 'status submodule summary is disabled by default' '
 284        git status >output &&
 285        test_cmp expect output
 286'
 287
 288# we expect the same as the previous test
 289test_expect_success 'status --untracked-files=all does not show submodule' '
 290        git status --untracked-files=all >output &&
 291        test_cmp expect output
 292'
 293
 294head=$(cd sm && git rev-parse --short=7 --verify HEAD)
 295
 296cat >expect <<EOF
 297# On branch master
 298# Changes to be committed:
 299#   (use "git reset HEAD <file>..." to unstage)
 300#
 301#       new file:   dir2/added
 302#       new file:   sm
 303#
 304# Changed but not updated:
 305#   (use "git add <file>..." to update what will be committed)
 306#
 307#       modified:   dir1/modified
 308#
 309# Modified submodules:
 310#
 311# * sm 0000000...$head (1):
 312#   > Add foo
 313#
 314# Untracked files:
 315#   (use "git add <file>..." to include in what will be committed)
 316#
 317#       dir1/untracked
 318#       dir2/modified
 319#       dir2/untracked
 320#       expect
 321#       output
 322#       untracked
 323EOF
 324test_expect_success 'status submodule summary' '
 325        git config status.submodulesummary 10 &&
 326        git status >output &&
 327        test_cmp expect output
 328'
 329
 330
 331cat >expect <<EOF
 332# On branch master
 333# Changed but not updated:
 334#   (use "git add <file>..." to update what will be committed)
 335#
 336#       modified:   dir1/modified
 337#
 338# Untracked files:
 339#   (use "git add <file>..." to include in what will be committed)
 340#
 341#       dir1/untracked
 342#       dir2/modified
 343#       dir2/untracked
 344#       expect
 345#       output
 346#       untracked
 347no changes added to commit (use "git add" and/or "git commit -a")
 348EOF
 349test_expect_success 'status submodule summary (clean submodule)' '
 350        git commit -m "commit submodule" &&
 351        git config status.submodulesummary 10 &&
 352        test_must_fail git status >output &&
 353        test_cmp expect output
 354'
 355
 356cat >expect <<EOF
 357# On branch master
 358# Changes to be committed:
 359#   (use "git reset HEAD^1 <file>..." to unstage)
 360#
 361#       new file:   dir2/added
 362#       new file:   sm
 363#
 364# Changed but not updated:
 365#   (use "git add <file>..." to update what will be committed)
 366#
 367#       modified:   dir1/modified
 368#
 369# Modified submodules:
 370#
 371# * sm 0000000...$head (1):
 372#   > Add foo
 373#
 374# Untracked files:
 375#   (use "git add <file>..." to include in what will be committed)
 376#
 377#       dir1/untracked
 378#       dir2/modified
 379#       dir2/untracked
 380#       expect
 381#       output
 382#       untracked
 383EOF
 384test_expect_success 'status submodule summary (--amend)' '
 385        git config status.submodulesummary 10 &&
 386        git status --amend >output &&
 387        test_cmp expect output
 388'
 389
 390test_done