t / t7007-show.shon commit Merge branch 'mm/color-auto-default' (6a5b9ce)
   1#!/bin/sh
   2
   3test_description='git show'
   4
   5. ./test-lib.sh
   6
   7test_expect_success setup '
   8        echo hello world >foo &&
   9        H=$(git hash-object -w foo) &&
  10        git tag -a foo-tag -m "Tags $H" $H &&
  11        HH=$(expr "$H" : "\(..\)") &&
  12        H38=$(expr "$H" : "..\(.*\)") &&
  13        rm -f .git/objects/$HH/$H38
  14'
  15
  16test_expect_success 'showing a tag that point at a missing object' '
  17        test_must_fail git --no-pager show foo-tag
  18'
  19
  20test_expect_success 'set up a bit of history' '
  21        test_commit main1 &&
  22        test_commit main2 &&
  23        test_commit main3 &&
  24        git tag -m "annotated tag" annotated &&
  25        git checkout -b side HEAD^^ &&
  26        test_commit side2 &&
  27        test_commit side3
  28'
  29
  30test_expect_success 'showing two commits' '
  31        cat >expect <<-EOF &&
  32        commit $(git rev-parse main2)
  33        commit $(git rev-parse main3)
  34        EOF
  35        git show main2 main3 >actual &&
  36        grep ^commit actual >actual.filtered &&
  37        test_cmp expect actual.filtered
  38'
  39
  40test_expect_success 'showing a range walks (linear)' '
  41        cat >expect <<-EOF &&
  42        commit $(git rev-parse main3)
  43        commit $(git rev-parse main2)
  44        EOF
  45        git show main1..main3 >actual &&
  46        grep ^commit actual >actual.filtered &&
  47        test_cmp expect actual.filtered
  48'
  49
  50test_expect_success 'showing a range walks (Y shape, ^ first)' '
  51        cat >expect <<-EOF &&
  52        commit $(git rev-parse main3)
  53        commit $(git rev-parse main2)
  54        EOF
  55        git show ^side3 main3 >actual &&
  56        grep ^commit actual >actual.filtered &&
  57        test_cmp expect actual.filtered
  58'
  59
  60test_expect_success 'showing a range walks (Y shape, ^ last)' '
  61        cat >expect <<-EOF &&
  62        commit $(git rev-parse main3)
  63        commit $(git rev-parse main2)
  64        EOF
  65        git show main3 ^side3 >actual &&
  66        grep ^commit actual >actual.filtered &&
  67        test_cmp expect actual.filtered
  68'
  69
  70test_expect_success 'showing with -N walks' '
  71        cat >expect <<-EOF &&
  72        commit $(git rev-parse main3)
  73        commit $(git rev-parse main2)
  74        EOF
  75        git show -2 main3 >actual &&
  76        grep ^commit actual >actual.filtered &&
  77        test_cmp expect actual.filtered
  78'
  79
  80test_expect_success 'showing annotated tag' '
  81        cat >expect <<-EOF &&
  82        tag annotated
  83        commit $(git rev-parse annotated^{commit})
  84        EOF
  85        git show annotated >actual &&
  86        grep -E "^(commit|tag)" actual >actual.filtered &&
  87        test_cmp expect actual.filtered
  88'
  89
  90test_expect_success 'showing annotated tag plus commit' '
  91        cat >expect <<-EOF &&
  92        tag annotated
  93        commit $(git rev-parse annotated^{commit})
  94        commit $(git rev-parse side3)
  95        EOF
  96        git show annotated side3 >actual &&
  97        grep -E "^(commit|tag)" actual >actual.filtered &&
  98        test_cmp expect actual.filtered
  99'
 100
 101test_expect_success 'showing range' '
 102        cat >expect <<-EOF &&
 103        commit $(git rev-parse main3)
 104        commit $(git rev-parse main2)
 105        EOF
 106        git show ^side3 annotated >actual &&
 107        grep -E "^(commit|tag)" actual >actual.filtered &&
 108        test_cmp expect actual.filtered
 109'
 110
 111test_expect_success '-s suppresses diff' '
 112        echo main3 >expect &&
 113        git show -s --format=%s main3 >actual &&
 114        test_cmp expect actual
 115'
 116
 117test_expect_success '--quiet suppresses diff' '
 118        echo main3 >expect &&
 119        git show --quiet --format=%s main3 >actual &&
 120        test_cmp expect actual
 121'
 122
 123test_done