]> git.ipfire.org Git - thirdparty/git.git/blobdiff - t/t4045-diff-relative.sh
Merge branch 'js/cmake-vs'
[thirdparty/git.git] / t / t4045-diff-relative.sh
index 258808708e1093819a32e68dfc76b6faf506f388..7be1de736d86c90ac9c36ff68c0e8f4535e9bafd 100755 (executable)
@@ -8,7 +8,8 @@ test_expect_success 'setup' '
        echo content >file1 &&
        mkdir subdir &&
        echo other content >subdir/file2 &&
-       blob=$(git hash-object subdir/file2) &&
+       blob_file1=$(git hash-object file1) &&
+       blob_file2=$(git hash-object subdir/file2) &&
        git add . &&
        git commit -m one
 '
@@ -18,7 +19,7 @@ check_diff () {
        shift
        expect=$1
        shift
-       short_blob=$(git rev-parse --short $blob)
+       short_blob=$(git rev-parse --short $blob_file2)
        cat >expected <<-EOF
        diff --git a/$expect b/$expect
        new file mode 100644
@@ -70,7 +71,7 @@ check_raw () {
        expect=$1
        shift
        cat >expected <<-EOF
-       :000000 100644 $ZERO_OID $blob A        $expect
+       :000000 100644 $ZERO_OID $blob_file2 A  $expect
        EOF
        test_expect_success "--raw $*" "
                git -C '$dir' diff --no-abbrev --raw $* HEAD^ >actual &&
@@ -86,4 +87,79 @@ do
        check_$type . dir/file2 --relative=sub
 done
 
+check_diff_relative_option () {
+       dir=$1
+       shift
+       expect=$1
+       shift
+       relative_opt=$1
+       shift
+       test_expect_success "config diff.relative $relative_opt -p $*" "
+               short_blob=\$(git rev-parse --short $blob_file2) &&
+               cat >expected <<-EOF &&
+               diff --git a/$expect b/$expect
+               new file mode 100644
+               index 0000000..\$short_blob
+               --- /dev/null
+               +++ b/$expect
+               @@ -0,0 +1 @@
+               +other content
+               EOF
+               test_config -C $dir diff.relative $relative_opt &&
+               git -C '$dir' diff -p $* HEAD^ >actual &&
+               test_cmp expected actual
+       "
+}
+
+check_diff_no_relative_option () {
+       dir=$1
+       shift
+       expect=$1
+       shift
+       relative_opt=$1
+       shift
+       test_expect_success "config diff.relative $relative_opt -p $*" "
+               short_blob_file1=\$(git rev-parse --short $blob_file1) &&
+               short_blob_file2=\$(git rev-parse --short $blob_file2) &&
+               cat >expected <<-EOF &&
+               diff --git a/file1 b/file1
+               new file mode 100644
+               index 0000000..\$short_blob_file1
+               --- /dev/null
+               +++ b/file1
+               @@ -0,0 +1 @@
+               +content
+               diff --git a/$expect b/$expect
+               new file mode 100644
+               index 0000000..\$short_blob_file2
+               --- /dev/null
+               +++ b/$expect
+               @@ -0,0 +1 @@
+               +other content
+               EOF
+               test_config -C $dir diff.relative $relative_opt &&
+               git -C '$dir' diff -p $* HEAD^ >actual &&
+               test_cmp expected actual
+       "
+}
+
+check_diff_no_relative_option . subdir/file2 false
+check_diff_no_relative_option . subdir/file2 true --no-relative
+check_diff_no_relative_option . subdir/file2 false --no-relative
+check_diff_no_relative_option subdir subdir/file2 false
+check_diff_no_relative_option subdir subdir/file2 true --no-relative
+check_diff_no_relative_option subdir subdir/file2 false --no-relative
+
+check_diff_relative_option . file2 false --relative=subdir/
+check_diff_relative_option . file2 false --relative=subdir
+check_diff_relative_option . file2 true --relative=subdir/
+check_diff_relative_option . file2 true --relative=subdir
+check_diff_relative_option subdir file2 false --relative
+check_diff_relative_option subdir file2 true --relative
+check_diff_relative_option subdir file2 true
+check_diff_relative_option subdir file2 false --no-relative --relative
+check_diff_relative_option subdir file2 true --no-relative --relative
+check_diff_relative_option . file2 false --no-relative --relative=subdir
+check_diff_relative_option . file2 true --no-relative --relative=subdir
+
 test_done