t / t7502-status.shon commit revision --simplify-merges: use decoration instead of commit->util field (faf0156)
   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
 288head=$(cd sm && git rev-parse --short=7 --verify HEAD)
 289
 290cat >expect <<EOF
 291# On branch master
 292# Changes to be committed:
 293#   (use "git reset HEAD <file>..." to unstage)
 294#
 295#       new file:   dir2/added
 296#       new file:   sm
 297#
 298# Changed but not updated:
 299#   (use "git add <file>..." to update what will be committed)
 300#
 301#       modified:   dir1/modified
 302#
 303# Modified submodules:
 304#
 305# * sm 0000000...$head (1):
 306#   > Add foo
 307#
 308# Untracked files:
 309#   (use "git add <file>..." to include in what will be committed)
 310#
 311#       dir1/untracked
 312#       dir2/modified
 313#       dir2/untracked
 314#       expect
 315#       output
 316#       untracked
 317EOF
 318test_expect_success 'status submodule summary' '
 319        git config status.submodulesummary 10 &&
 320        git status >output &&
 321        test_cmp expect output
 322'
 323
 324
 325cat >expect <<EOF
 326# On branch master
 327# Changed but not updated:
 328#   (use "git add <file>..." to update what will be committed)
 329#
 330#       modified:   dir1/modified
 331#
 332# Untracked files:
 333#   (use "git add <file>..." to include in what will be committed)
 334#
 335#       dir1/untracked
 336#       dir2/modified
 337#       dir2/untracked
 338#       expect
 339#       output
 340#       untracked
 341no changes added to commit (use "git add" and/or "git commit -a")
 342EOF
 343test_expect_success 'status submodule summary (clean submodule)' '
 344        git commit -m "commit submodule" &&
 345        git config status.submodulesummary 10 &&
 346        test_must_fail git status >output &&
 347        test_cmp expect output
 348'
 349
 350cat >expect <<EOF
 351# On branch master
 352# Changes to be committed:
 353#   (use "git reset HEAD^1 <file>..." to unstage)
 354#
 355#       new file:   dir2/added
 356#       new file:   sm
 357#
 358# Changed but not updated:
 359#   (use "git add <file>..." to update what will be committed)
 360#
 361#       modified:   dir1/modified
 362#
 363# Modified submodules:
 364#
 365# * sm 0000000...$head (1):
 366#   > Add foo
 367#
 368# Untracked files:
 369#   (use "git add <file>..." to include in what will be committed)
 370#
 371#       dir1/untracked
 372#       dir2/modified
 373#       dir2/untracked
 374#       expect
 375#       output
 376#       untracked
 377EOF
 378test_expect_success 'status submodule summary (--amend)' '
 379        git config status.submodulesummary 10 &&
 380        git status --amend >output &&
 381        test_cmp expect output
 382'
 383
 384test_done