122 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			122 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
| #!/bin/sh
 | |
| #
 | |
| # Copyright (c) 2010 Christian Couder
 | |
| #
 | |
| 
 | |
| test_description='Tests to check that "reset" options follow a known table'
 | |
| 
 | |
| . ./test-lib.sh
 | |
| 
 | |
| 
 | |
| test_expect_success 'creating initial commits' '
 | |
|     test_commit E file1 &&
 | |
|     test_commit D file1 &&
 | |
|     test_commit C file1
 | |
| '
 | |
| 
 | |
| while read W1 I1 H1 T opt W2 I2 H2
 | |
| do
 | |
|     test_expect_success "check: $W1 $I1 $H1 $T --$opt $W2 $I2 $H2" '
 | |
| 	git reset --hard C &&
 | |
| 	if test "$I1" != "$H1"
 | |
| 	then
 | |
| 	    echo "$I1" >file1 &&
 | |
| 	    git add file1
 | |
| 	fi &&
 | |
| 	if test "$W1" != "$I1"
 | |
| 	then
 | |
| 	    echo "$W1" >file1
 | |
| 	fi &&
 | |
| 	if test "$W2" != "XXXXX"
 | |
| 	then
 | |
| 	    git reset --$opt $T &&
 | |
| 	    test "$(cat file1)" = "$W2" &&
 | |
| 	    git checkout-index -f -- file1 &&
 | |
| 	    test "$(cat file1)" = "$I2" &&
 | |
| 	    git checkout -f HEAD -- file1 &&
 | |
| 	    test "$(cat file1)" = "$H2"
 | |
| 	else
 | |
| 	    test_must_fail git reset --$opt $T
 | |
| 	fi
 | |
|     '
 | |
| done <<\EOF
 | |
| A B C D soft   A B D
 | |
| A B C D mixed  A D D
 | |
| A B C D hard   D D D
 | |
| A B C D merge  XXXXX
 | |
| A B C D keep   XXXXX
 | |
| A B C C soft   A B C
 | |
| A B C C mixed  A C C
 | |
| A B C C hard   C C C
 | |
| A B C C merge  XXXXX
 | |
| A B C C keep   A C C
 | |
| B B C D soft   B B D
 | |
| B B C D mixed  B D D
 | |
| B B C D hard   D D D
 | |
| B B C D merge  D D D
 | |
| B B C D keep   XXXXX
 | |
| B B C C soft   B B C
 | |
| B B C C mixed  B C C
 | |
| B B C C hard   C C C
 | |
| B B C C merge  C C C
 | |
| B B C C keep   B C C
 | |
| B C C D soft   B C D
 | |
| B C C D mixed  B D D
 | |
| B C C D hard   D D D
 | |
| B C C D merge  XXXXX
 | |
| B C C D keep   XXXXX
 | |
| B C C C soft   B C C
 | |
| B C C C mixed  B C C
 | |
| B C C C hard   C C C
 | |
| B C C C merge  B C C
 | |
| B C C C keep   B C C
 | |
| EOF
 | |
| 
 | |
| test_expect_success 'setting up branches to test with unmerged entries' '
 | |
|     git reset --hard C &&
 | |
|     git branch branch1 &&
 | |
|     git branch branch2 &&
 | |
|     git checkout branch1 &&
 | |
|     test_commit B1 file1 &&
 | |
|     git checkout branch2 &&
 | |
|     test_commit B file1
 | |
| '
 | |
| 
 | |
| while read W1 I1 H1 T opt W2 I2 H2
 | |
| do
 | |
|     test_expect_success "check: $W1 $I1 $H1 $T --$opt $W2 $I2 $H2" '
 | |
| 	git reset --hard B &&
 | |
| 	test_must_fail git merge branch1 &&
 | |
| 	cat file1 >X_file1 &&
 | |
| 	if test "$W2" != "XXXXX"
 | |
| 	then
 | |
| 	    git reset --$opt $T &&
 | |
| 	    if test "$W2" = "X"
 | |
| 	    then
 | |
| 		test_cmp file1 X_file1
 | |
| 	    else
 | |
| 		test "$(cat file1)" = "$W2"
 | |
| 	    fi &&
 | |
| 	    git checkout-index -f -- file1 &&
 | |
| 	    test "$(cat file1)" = "$I2" &&
 | |
| 	    git checkout -f HEAD -- file1 &&
 | |
| 	    test "$(cat file1)" = "$H2"
 | |
| 	else
 | |
| 	    test_must_fail git reset --$opt $T
 | |
| 	fi
 | |
|     '
 | |
| done <<\EOF
 | |
| X U B C soft   XXXXX
 | |
| X U B C mixed  X C C
 | |
| X U B C hard   C C C
 | |
| X U B C merge  C C C
 | |
| X U B C keep   XXXXX
 | |
| X U B B soft   XXXXX
 | |
| X U B B mixed  X B B
 | |
| X U B B hard   B B B
 | |
| X U B B merge  B B B
 | |
| X U B B keep   XXXXX
 | |
| EOF
 | |
| 
 | |
| test_done
 |