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