t / t4055-diff-context.shon commit Post 2.3 cycle (batch #3) (f3f4077)
   1#!/bin/sh
   2#
   3# Copyright (c) 2012 Mozilla Foundation
   4#
   5
   6test_description='diff.context configuration'
   7
   8. ./test-lib.sh
   9
  10test_expect_success 'setup' '
  11        cat >template <<-\EOF &&
  12        firstline
  13        b
  14        c
  15        d
  16        e
  17        f
  18        preline
  19        TARGET
  20        postline
  21        i
  22        j
  23        k
  24        l
  25        m
  26        n
  27        EOF
  28        sed "/TARGET/d" >x <template &&
  29        git update-index --add x &&
  30        git commit -m initial &&
  31
  32        sed "s/TARGET/ADDED/" >x <template &&
  33        git update-index --add x &&
  34        git commit -m next &&
  35
  36        sed "s/TARGET/MODIFIED/" >x <template
  37'
  38
  39test_expect_success 'the default number of context lines is 3' '
  40        git diff >output &&
  41        ! grep "^ d" output &&
  42        grep "^ e" output &&
  43        grep "^ j" output &&
  44        ! grep "^ k" output
  45'
  46
  47test_expect_success 'diff.context honored by "log"' '
  48        git log -1 -p >output &&
  49        ! grep firstline output &&
  50        git config diff.context 8 &&
  51        git log -1 -p >output &&
  52        grep "^ firstline" output
  53'
  54
  55test_expect_success 'The -U option overrides diff.context' '
  56        git config diff.context 8 &&
  57        git log -U4 -1 >output &&
  58        ! grep "^ firstline" output
  59'
  60
  61test_expect_success 'diff.context honored by "diff"' '
  62        git config diff.context 8 &&
  63        git diff >output &&
  64        grep "^ firstline" output
  65'
  66
  67test_expect_success 'plumbing not affected' '
  68        git config diff.context 8 &&
  69        git diff-files -p >output &&
  70        ! grep "^ firstline" output
  71'
  72
  73test_expect_success 'non-integer config parsing' '
  74        git config diff.context no &&
  75        test_must_fail git diff 2>output &&
  76        test_i18ngrep "bad numeric config value" output
  77'
  78
  79test_expect_success 'negative integer config parsing' '
  80        git config diff.context -1 &&
  81        test_must_fail git diff 2>output &&
  82        test_i18ngrep "bad config variable" output
  83'
  84
  85test_expect_success '-U0 is valid, so is diff.context=0' '
  86        git config diff.context 0 &&
  87        git diff >output &&
  88        grep "^-ADDED" output &&
  89        grep "^+MODIFIED" output
  90'
  91
  92test_done