t / t5523-push-upstream.shon commit t1500: avoid changing working directory outside of tests (1e043cf)
   1#!/bin/sh
   2
   3test_description='push with --set-upstream'
   4. ./test-lib.sh
   5. "$TEST_DIRECTORY"/lib-terminal.sh
   6
   7ensure_fresh_upstream() {
   8        rm -rf parent && git init --bare parent
   9}
  10
  11test_expect_success 'setup bare parent' '
  12        ensure_fresh_upstream &&
  13        git remote add upstream parent
  14'
  15
  16test_expect_success 'setup local commit' '
  17        echo content >file &&
  18        git add file &&
  19        git commit -m one
  20'
  21
  22check_config() {
  23        (echo $2; echo $3) >expect.$1
  24        (git config branch.$1.remote
  25         git config branch.$1.merge) >actual.$1
  26        test_cmp expect.$1 actual.$1
  27}
  28
  29test_expect_success 'push -u master:master' '
  30        git push -u upstream master:master &&
  31        check_config master upstream refs/heads/master
  32'
  33
  34test_expect_success 'push -u master:other' '
  35        git push -u upstream master:other &&
  36        check_config master upstream refs/heads/other
  37'
  38
  39test_expect_success 'push -u --dry-run master:otherX' '
  40        git push -u --dry-run upstream master:otherX &&
  41        check_config master upstream refs/heads/other
  42'
  43
  44test_expect_success 'push -u master2:master2' '
  45        git branch master2 &&
  46        git push -u upstream master2:master2 &&
  47        check_config master2 upstream refs/heads/master2
  48'
  49
  50test_expect_success 'push -u master2:other2' '
  51        git push -u upstream master2:other2 &&
  52        check_config master2 upstream refs/heads/other2
  53'
  54
  55test_expect_success 'push -u :master2' '
  56        git push -u upstream :master2 &&
  57        check_config master2 upstream refs/heads/other2
  58'
  59
  60test_expect_success 'push -u --all' '
  61        git branch all1 &&
  62        git branch all2 &&
  63        git push -u --all &&
  64        check_config all1 upstream refs/heads/all1 &&
  65        check_config all2 upstream refs/heads/all2
  66'
  67
  68test_expect_success 'push -u HEAD' '
  69        git checkout -b headbranch &&
  70        git push -u upstream HEAD &&
  71        check_config headbranch upstream refs/heads/headbranch
  72'
  73
  74test_expect_success TTY 'progress messages go to tty' '
  75        ensure_fresh_upstream &&
  76
  77        test_terminal git push -u upstream master >out 2>err &&
  78        grep "Writing objects" err
  79'
  80
  81test_expect_success 'progress messages do not go to non-tty' '
  82        ensure_fresh_upstream &&
  83
  84        # skip progress messages, since stderr is non-tty
  85        git push -u upstream master >out 2>err &&
  86        ! grep "Writing objects" err
  87'
  88
  89test_expect_success 'progress messages go to non-tty (forced)' '
  90        ensure_fresh_upstream &&
  91
  92        # force progress messages to stderr, even though it is non-tty
  93        git push -u --progress upstream master >out 2>err &&
  94        grep "Writing objects" err
  95'
  96
  97test_expect_success TTY 'push -q suppresses progress' '
  98        ensure_fresh_upstream &&
  99
 100        test_terminal git push -u -q upstream master >out 2>err &&
 101        ! grep "Writing objects" err
 102'
 103
 104test_expect_success TTY 'push --no-progress suppresses progress' '
 105        ensure_fresh_upstream &&
 106
 107        test_terminal git push -u --no-progress upstream master >out 2>err &&
 108        ! grep "Unpacking objects" err &&
 109        ! grep "Writing objects" err
 110'
 111
 112test_expect_success TTY 'quiet push' '
 113        ensure_fresh_upstream &&
 114
 115        test_terminal git push --quiet --no-progress upstream master 2>&1 | tee output &&
 116        test_cmp /dev/null output
 117'
 118
 119test_done