t / t4214-log-graph-octopus.shon commit Merge branch 'jk/tree-walk-overflow' (1b01cdb)
   1#!/bin/sh
   2
   3test_description='git log --graph of skewed left octopus merge.'
   4
   5. ./test-lib.sh
   6
   7test_expect_success 'set up merge history' '
   8        cat >expect.uncolored <<-\EOF &&
   9        * left
  10        | *---.   octopus-merge
  11        | |\ \ \
  12        |/ / / /
  13        | | | * 4
  14        | | * | 3
  15        | | |/
  16        | * | 2
  17        | |/
  18        * | 1
  19        |/
  20        * initial
  21        EOF
  22        cat >expect.colors <<-\EOF &&
  23        * left
  24        <RED>|<RESET> *<BLUE>-<RESET><BLUE>-<RESET><MAGENTA>-<RESET><MAGENTA>.<RESET>   octopus-merge
  25        <RED>|<RESET> <RED>|<RESET><YELLOW>\<RESET> <BLUE>\<RESET> <MAGENTA>\<RESET>
  26        <RED>|<RESET><RED>/<RESET> <YELLOW>/<RESET> <BLUE>/<RESET> <MAGENTA>/<RESET>
  27        <RED>|<RESET> <YELLOW>|<RESET> <BLUE>|<RESET> * 4
  28        <RED>|<RESET> <YELLOW>|<RESET> * <MAGENTA>|<RESET> 3
  29        <RED>|<RESET> <YELLOW>|<RESET> <MAGENTA>|<RESET><MAGENTA>/<RESET>
  30        <RED>|<RESET> * <MAGENTA>|<RESET> 2
  31        <RED>|<RESET> <MAGENTA>|<RESET><MAGENTA>/<RESET>
  32        * <MAGENTA>|<RESET> 1
  33        <MAGENTA>|<RESET><MAGENTA>/<RESET>
  34        * initial
  35        EOF
  36        test_commit initial &&
  37        for i in 1 2 3 4 ; do
  38                git checkout master -b $i || return $?
  39                # Make tag name different from branch name, to avoid
  40                # ambiguity error when calling checkout.
  41                test_commit $i $i $i tag$i || return $?
  42        done &&
  43        git checkout 1 -b merge &&
  44        test_tick &&
  45        git merge -m octopus-merge 1 2 3 4 &&
  46        git checkout 1 -b L &&
  47        test_commit left
  48'
  49
  50test_expect_success 'log --graph with tricky octopus merge with colors' '
  51        test_config log.graphColors red,green,yellow,blue,magenta,cyan &&
  52        git log --color=always --graph --date-order --pretty=tformat:%s --all >actual.colors.raw &&
  53        test_decode_color <actual.colors.raw | sed "s/ *\$//" >actual.colors &&
  54        test_cmp expect.colors actual.colors
  55'
  56
  57test_expect_success 'log --graph with tricky octopus merge, no color' '
  58        git log --color=never --graph --date-order --pretty=tformat:%s --all >actual.raw &&
  59        sed "s/ *\$//" actual.raw >actual &&
  60        test_cmp expect.uncolored actual
  61'
  62
  63# Repeat the previous two tests with "normal" octopus merge (i.e.,
  64# without the first parent skewing to the "left" branch column).
  65
  66test_expect_success 'log --graph with normal octopus merge, no color' '
  67        cat >expect.uncolored <<-\EOF &&
  68        *---.   octopus-merge
  69        |\ \ \
  70        | | | * 4
  71        | | * | 3
  72        | | |/
  73        | * | 2
  74        | |/
  75        * | 1
  76        |/
  77        * initial
  78        EOF
  79        git log --color=never --graph --date-order --pretty=tformat:%s merge >actual.raw &&
  80        sed "s/ *\$//" actual.raw >actual &&
  81        test_cmp expect.uncolored actual
  82'
  83
  84test_expect_success 'log --graph with normal octopus merge with colors' '
  85        cat >expect.colors <<-\EOF &&
  86        *<YELLOW>-<RESET><YELLOW>-<RESET><BLUE>-<RESET><BLUE>.<RESET>   octopus-merge
  87        <RED>|<RESET><GREEN>\<RESET> <YELLOW>\<RESET> <BLUE>\<RESET>
  88        <RED>|<RESET> <GREEN>|<RESET> <YELLOW>|<RESET> * 4
  89        <RED>|<RESET> <GREEN>|<RESET> * <BLUE>|<RESET> 3
  90        <RED>|<RESET> <GREEN>|<RESET> <BLUE>|<RESET><BLUE>/<RESET>
  91        <RED>|<RESET> * <BLUE>|<RESET> 2
  92        <RED>|<RESET> <BLUE>|<RESET><BLUE>/<RESET>
  93        * <BLUE>|<RESET> 1
  94        <BLUE>|<RESET><BLUE>/<RESET>
  95        * initial
  96        EOF
  97        test_config log.graphColors red,green,yellow,blue,magenta,cyan &&
  98        git log --color=always --graph --date-order --pretty=tformat:%s merge >actual.colors.raw &&
  99        test_decode_color <actual.colors.raw | sed "s/ *\$//" >actual.colors &&
 100        test_cmp expect.colors actual.colors
 101'
 102test_done