revision.c: add BOTTOM flag for commits
[gitweb.git] / t / t6012-rev-list-simplify.sh
index d6d79c467f70b08541be0254b37d0d63ea7da95d..57ce2395d6738617797d0ba270874abd55a3b899 100755 (executable)
@@ -8,30 +8,30 @@ note () {
        git tag "$1"
 }
 
-_x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]'
-_x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40"
-
 unnote () {
        git name-rev --tags --stdin | sed -e "s|$_x40 (tags/\([^)]*\)) |\1 |g"
 }
 
 test_expect_success setup '
        echo "Hi there" >file &&
-       git add file &&
-       test_tick && git commit -m "Initial file" &&
+       echo "initial" >lost &&
+       git add file lost &&
+       test_tick && git commit -m "Initial file and lost" &&
        note A &&
 
        git branch other-branch &&
 
        echo "Hello" >file &&
-       git add file &&
-       test_tick && git commit -m "Modified file" &&
+       echo "second" >lost &&
+       git add file lost &&
+       test_tick && git commit -m "Modified file and lost" &&
        note B &&
 
        git checkout other-branch &&
 
        echo "Hello" >file &&
-       git add file &&
+       >lost &&
+       git add file lost &&
        test_tick && git commit -m "Modified the file identically" &&
        note C &&
 
@@ -40,7 +40,9 @@ test_expect_success setup '
        test_tick && git commit -m "Add another file" &&
        note D &&
 
-       test_tick && git merge -m "merge" master &&
+       test_tick &&
+       test_must_fail git merge -m "merge" master &&
+       >lost && git commit -a -m "merge" &&
        note E &&
 
        echo "Yet another" >elif &&
@@ -80,14 +82,16 @@ test_expect_success setup '
 
 FMT='tformat:%P        %H | %s'
 
-check_result () {
+check_outcome () {
+       outcome=$1
+       shift
        for c in $1
        do
                echo "$c"
        done >expect &&
        shift &&
        param="$*" &&
-       test_expect_success "log $param" '
+       test_expect_$outcome "log $param" '
                git log --pretty="$FMT" --parents $param |
                unnote >actual &&
                sed -e "s/^.*   \([^ ]*\) .*/\1/" >check <actual &&
@@ -98,6 +102,10 @@ check_result () {
        '
 }
 
+check_result () {
+       check_outcome success "$@"
+}
+
 check_result 'L K J I H G F E D C B A' --full-history
 check_result 'K I H E C B A' --full-history -- file
 check_result 'K I H E C B A' --full-history --topo-order -- file
@@ -105,5 +113,18 @@ check_result 'K I H E C B A' --full-history --date-order -- file
 check_result 'I E C B A' --simplify-merges -- file
 check_result 'I B A' -- file
 check_result 'I B A' --topo-order -- file
+check_result 'H' --first-parent -- another-file
+
+check_result 'E C B A' --full-history E -- lost
+test_expect_success 'full history simplification without parent' '
+       printf "%s\n" E C B A >expect &&
+       git log --pretty="$FMT" --full-history E -- lost |
+       unnote >actual &&
+       sed -e "s/^.*   \([^ ]*\) .*/\1/" >check <actual &&
+       test_cmp expect check || {
+               cat actual
+               false
+       }
+'
 
 test_done