t / t7301-clean-interactive.shon commit Merge branch 'rr/rebase-autostash' (c8686e5)
   1#!/bin/sh
   2
   3test_description='git clean -i basic tests'
   4
   5. ./test-lib.sh
   6
   7test_expect_success 'setup' '
   8
   9        mkdir -p src &&
  10        touch src/part1.c Makefile &&
  11        echo build >.gitignore &&
  12        echo \*.o >>.gitignore &&
  13        git add . &&
  14        git commit -m setup &&
  15        touch src/part2.c README &&
  16        git add .
  17
  18'
  19
  20test_expect_success 'git clean -i (clean)' '
  21
  22        mkdir -p build docs &&
  23        touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \
  24        docs/manual.txt obj.o build/lib.so &&
  25        echo c | git clean -i &&
  26        test -f Makefile &&
  27        test -f README &&
  28        test -f src/part1.c &&
  29        test -f src/part2.c &&
  30        test ! -f a.out &&
  31        test -f docs/manual.txt &&
  32        test ! -f src/part3.c &&
  33        test ! -f src/part3.h &&
  34        test ! -f src/part4.c &&
  35        test ! -f src/part4.h &&
  36        test -f obj.o &&
  37        test -f build/lib.so
  38
  39'
  40
  41test_expect_success 'git clean -i (quit)' '
  42
  43        mkdir -p build docs &&
  44        touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \
  45        docs/manual.txt obj.o build/lib.so &&
  46        echo q | git clean -i &&
  47        test -f Makefile &&
  48        test -f README &&
  49        test -f src/part1.c &&
  50        test -f src/part2.c &&
  51        test -f a.out &&
  52        test -f docs/manual.txt &&
  53        test -f src/part3.c &&
  54        test -f src/part3.h &&
  55        test -f src/part4.c &&
  56        test -f src/part4.h &&
  57        test -f obj.o &&
  58        test -f build/lib.so
  59
  60'
  61
  62test_expect_success 'git clean -i (Ctrl+D)' '
  63
  64        mkdir -p build docs &&
  65        touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \
  66        docs/manual.txt obj.o build/lib.so &&
  67        echo "\04" | git clean -i &&
  68        test -f Makefile &&
  69        test -f README &&
  70        test -f src/part1.c &&
  71        test -f src/part2.c &&
  72        test -f a.out &&
  73        test -f docs/manual.txt &&
  74        test -f src/part3.c &&
  75        test -f src/part3.h &&
  76        test -f src/part4.c &&
  77        test -f src/part4.h &&
  78        test -f obj.o &&
  79        test -f build/lib.so
  80
  81'
  82
  83test_expect_success 'git clean -id (filter all)' '
  84
  85        mkdir -p build docs &&
  86        touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \
  87        docs/manual.txt obj.o build/lib.so &&
  88        (echo f; echo "*"; echo; echo c) | \
  89        git clean -id &&
  90        test -f Makefile &&
  91        test -f README &&
  92        test -f src/part1.c &&
  93        test -f src/part2.c &&
  94        test -f a.out &&
  95        test -f docs/manual.txt &&
  96        test -f src/part3.c &&
  97        test -f src/part3.h &&
  98        test -f src/part4.c &&
  99        test -f src/part4.h &&
 100        test -f obj.o &&
 101        test -f build/lib.so
 102
 103'
 104
 105test_expect_success 'git clean -id (filter patterns)' '
 106
 107        mkdir -p build docs &&
 108        touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \
 109        docs/manual.txt obj.o build/lib.so &&
 110        (echo f; echo "part3.* *.out"; echo; echo c) | \
 111        git clean -id &&
 112        test -f Makefile &&
 113        test -f README &&
 114        test -f src/part1.c &&
 115        test -f src/part2.c &&
 116        test -f a.out &&
 117        test ! -f docs/manual.txt &&
 118        test -f src/part3.c &&
 119        test -f src/part3.h &&
 120        test ! -f src/part4.c &&
 121        test ! -f src/part4.h &&
 122        test -f obj.o &&
 123        test -f build/lib.so
 124
 125'
 126
 127test_expect_success 'git clean -id (filter patterns 2)' '
 128
 129        mkdir -p build docs &&
 130        touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \
 131        docs/manual.txt obj.o build/lib.so &&
 132        (echo f; echo "* !*.out"; echo; echo c) | \
 133        git clean -id &&
 134        test -f Makefile &&
 135        test -f README &&
 136        test -f src/part1.c &&
 137        test -f src/part2.c &&
 138        test ! -f a.out &&
 139        test -f docs/manual.txt &&
 140        test -f src/part3.c &&
 141        test -f src/part3.h &&
 142        test -f src/part4.c &&
 143        test -f src/part4.h &&
 144        test -f obj.o &&
 145        test -f build/lib.so
 146
 147'
 148
 149test_expect_success 'git clean -id (select - all)' '
 150
 151        mkdir -p build docs &&
 152        touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \
 153        docs/manual.txt obj.o build/lib.so &&
 154        (echo s; echo "*"; echo; echo c) | \
 155        git clean -id &&
 156        test -f Makefile &&
 157        test -f README &&
 158        test -f src/part1.c &&
 159        test -f src/part2.c &&
 160        test ! -f a.out &&
 161        test ! -f docs/manual.txt &&
 162        test ! -f src/part3.c &&
 163        test ! -f src/part3.h &&
 164        test ! -f src/part4.c &&
 165        test ! -f src/part4.h &&
 166        test -f obj.o &&
 167        test -f build/lib.so
 168
 169'
 170
 171test_expect_success 'git clean -id (select - none)' '
 172
 173        mkdir -p build docs &&
 174        touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \
 175        docs/manual.txt obj.o build/lib.so &&
 176        (echo s; echo; echo c) | \
 177        git clean -id &&
 178        test -f Makefile &&
 179        test -f README &&
 180        test -f src/part1.c &&
 181        test -f src/part2.c &&
 182        test -f a.out &&
 183        test -f docs/manual.txt &&
 184        test -f src/part3.c &&
 185        test -f src/part3.h &&
 186        test -f src/part4.c &&
 187        test -f src/part4.h &&
 188        test -f obj.o &&
 189        test -f build/lib.so
 190
 191'
 192
 193test_expect_success 'git clean -id (select - number)' '
 194
 195        mkdir -p build docs &&
 196        touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \
 197        docs/manual.txt obj.o build/lib.so &&
 198        (echo s; echo 3; echo; echo c) | \
 199        git clean -id &&
 200        test -f Makefile &&
 201        test -f README &&
 202        test -f src/part1.c &&
 203        test -f src/part2.c &&
 204        test -f a.out &&
 205        test -f docs/manual.txt &&
 206        test ! -f src/part3.c &&
 207        test -f src/part3.h &&
 208        test -f src/part4.c &&
 209        test -f src/part4.h &&
 210        test -f obj.o &&
 211        test -f build/lib.so
 212
 213'
 214
 215test_expect_success 'git clean -id (select - number 2)' '
 216
 217        mkdir -p build docs &&
 218        touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \
 219        docs/manual.txt obj.o build/lib.so &&
 220        (echo s; echo 2 3; echo 5; echo; echo c) | \
 221        git clean -id &&
 222        test -f Makefile &&
 223        test -f README &&
 224        test -f src/part1.c &&
 225        test -f src/part2.c &&
 226        test -f a.out &&
 227        test ! -f docs/manual.txt &&
 228        test ! -f src/part3.c &&
 229        test -f src/part3.h &&
 230        test ! -f src/part4.c &&
 231        test -f src/part4.h &&
 232        test -f obj.o &&
 233        test -f build/lib.so
 234
 235'
 236
 237test_expect_success 'git clean -id (select - number 3)' '
 238
 239        mkdir -p build docs &&
 240        touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \
 241        docs/manual.txt obj.o build/lib.so &&
 242        (echo s; echo 3,4 5; echo; echo c) | \
 243        git clean -id &&
 244        test -f Makefile &&
 245        test -f README &&
 246        test -f src/part1.c &&
 247        test -f src/part2.c &&
 248        test -f a.out &&
 249        test -f docs/manual.txt &&
 250        test ! -f src/part3.c &&
 251        test ! -f src/part3.h &&
 252        test ! -f src/part4.c &&
 253        test -f src/part4.h &&
 254        test -f obj.o &&
 255        test -f build/lib.so
 256
 257'
 258
 259test_expect_success 'git clean -id (select - range)' '
 260
 261        mkdir -p build docs &&
 262        touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \
 263        docs/manual.txt obj.o build/lib.so &&
 264        (echo s; echo 1,3-4; echo 2; echo; echo c) | \
 265        git clean -id &&
 266        test -f Makefile &&
 267        test -f README &&
 268        test -f src/part1.c &&
 269        test -f src/part2.c &&
 270        test ! -f a.out &&
 271        test ! -f src/part3.c &&
 272        test ! -f src/part3.h &&
 273        test -f src/part4.c &&
 274        test -f src/part4.h &&
 275        test ! -f docs/manual.txt &&
 276        test -f obj.o &&
 277        test -f build/lib.so
 278
 279'
 280
 281test_expect_success 'git clean -id (select - range 2)' '
 282
 283        mkdir -p build docs &&
 284        touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \
 285        docs/manual.txt obj.o build/lib.so &&
 286        (echo s; echo 4- 1; echo; echo c) | \
 287        git clean -id &&
 288        test -f Makefile &&
 289        test -f README &&
 290        test -f src/part1.c &&
 291        test -f src/part2.c &&
 292        test ! -f a.out &&
 293        test -f docs/manual.txt &&
 294        test -f src/part3.c &&
 295        test ! -f src/part3.h &&
 296        test ! -f src/part4.c &&
 297        test ! -f src/part4.h &&
 298        test -f obj.o &&
 299        test -f build/lib.so
 300
 301'
 302
 303test_expect_success 'git clean -id (inverse select)' '
 304
 305        mkdir -p build docs &&
 306        touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \
 307        docs/manual.txt obj.o build/lib.so &&
 308        (echo s; echo "*"; echo -5- 1 -2; echo; echo c) | \
 309        git clean -id &&
 310        test -f Makefile &&
 311        test -f README &&
 312        test -f src/part1.c &&
 313        test -f src/part2.c &&
 314        test ! -f a.out &&
 315        test -f docs/manual.txt &&
 316        test ! -f src/part3.c &&
 317        test ! -f src/part3.h &&
 318        test -f src/part4.c &&
 319        test -f src/part4.h &&
 320        test -f obj.o &&
 321        test -f build/lib.so
 322
 323'
 324
 325test_expect_success 'git clean -id (ask)' '
 326
 327        mkdir -p build docs &&
 328        touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \
 329        docs/manual.txt obj.o build/lib.so &&
 330        (echo a; echo Y; echo y; echo no; echo yes; echo bad; echo) | \
 331        git clean -id &&
 332        test -f Makefile &&
 333        test -f README &&
 334        test -f src/part1.c &&
 335        test -f src/part2.c &&
 336        test ! -f a.out &&
 337        test ! -f docs/manual.txt &&
 338        test -f src/part3.c &&
 339        test ! -f src/part3.h &&
 340        test -f src/part4.c &&
 341        test -f src/part4.h &&
 342        test -f obj.o &&
 343        test -f build/lib.so
 344
 345'
 346
 347test_expect_success 'git clean -id (ask - Ctrl+D)' '
 348
 349        mkdir -p build docs &&
 350        touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \
 351        docs/manual.txt obj.o build/lib.so &&
 352        (echo a; echo Y; echo no; echo yes; echo "\04") | \
 353        git clean -id &&
 354        test -f Makefile &&
 355        test -f README &&
 356        test -f src/part1.c &&
 357        test -f src/part2.c &&
 358        test ! -f a.out &&
 359        test -f docs/manual.txt &&
 360        test ! -f src/part3.c &&
 361        test -f src/part3.h &&
 362        test -f src/part4.c &&
 363        test -f src/part4.h &&
 364        test -f obj.o &&
 365        test -f build/lib.so
 366
 367'
 368
 369test_expect_success 'git clean -id with prefix and path (filter)' '
 370
 371        mkdir -p build docs &&
 372        touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \
 373        docs/manual.txt obj.o build/lib.so &&
 374        (cd build/ && \
 375         (echo f; echo "docs"; echo "*.h"; echo ; echo c) | \
 376         git clean -id ..) &&
 377        test -f Makefile &&
 378        test -f README &&
 379        test -f src/part1.c &&
 380        test -f src/part2.c &&
 381        test ! -f a.out &&
 382        test -f docs/manual.txt &&
 383        test ! -f src/part3.c &&
 384        test -f src/part3.h &&
 385        test ! -f src/part4.c &&
 386        test -f src/part4.h &&
 387        test -f obj.o &&
 388        test -f build/lib.so
 389
 390'
 391
 392test_expect_success 'git clean -id with prefix and path (select by name)' '
 393
 394        mkdir -p build docs &&
 395        touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \
 396        docs/manual.txt obj.o build/lib.so &&
 397        (cd build/ && \
 398         (echo s; echo "../docs/"; echo "../src/part3.c"; \
 399          echo "../src/part4.c";  echo; echo c) | \
 400         git clean -id ..) &&
 401        test -f Makefile &&
 402        test -f README &&
 403        test -f src/part1.c &&
 404        test -f src/part2.c &&
 405        test -f a.out &&
 406        test ! -f docs/manual.txt &&
 407        test ! -f src/part3.c &&
 408        test -f src/part3.h &&
 409        test ! -f src/part4.c &&
 410        test -f src/part4.h &&
 411        test -f obj.o &&
 412        test -f build/lib.so
 413
 414'
 415
 416test_expect_success 'git clean -id with prefix and path (ask)' '
 417
 418        mkdir -p build docs &&
 419        touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \
 420        docs/manual.txt obj.o build/lib.so &&
 421        (cd build/ && \
 422         (echo a; echo Y; echo y; echo no; echo yes; echo bad; echo) | \
 423         git clean -id ..) &&
 424        test -f Makefile &&
 425        test -f README &&
 426        test -f src/part1.c &&
 427        test -f src/part2.c &&
 428        test ! -f a.out &&
 429        test ! -f docs/manual.txt &&
 430        test -f src/part3.c &&
 431        test ! -f src/part3.h &&
 432        test -f src/part4.c &&
 433        test -f src/part4.h &&
 434        test -f obj.o &&
 435        test -f build/lib.so
 436
 437'
 438
 439test_done