t4041 (diff-submodule-option): parse digests sensibly
[git.git] / t / t4041-diff-submodule-option.sh
index 6c01d0c056e2608393ed16eea29dd45fc79d786c..08d549a7b02e65aab1912fe6e8fbc6db1494de19 100755 (executable)
@@ -21,7 +21,7 @@ add_file () {
                test_tick &&
                git commit -m "Add $name"
        done >/dev/null
-       git rev-parse --verify HEAD | cut -c1-7
+       git rev-parse --short --verify HEAD
        cd "$owd"
 }
 commit_file () {
@@ -33,6 +33,7 @@ test_create_repo sm1 &&
 add_file . foo >/dev/null
 
 head1=$(add_file sm1 foo1 foo2)
+fullhead1=$(cd sm1; git rev-parse --verify HEAD)
 
 test_expect_success 'added submodule' "
        git add sm1 &&
@@ -43,6 +44,48 @@ EOF
        test_cmp expected actual
 "
 
+test_expect_success 'added submodule, set diff.submodule' "
+       git config diff.submodule log &&
+       git add sm1 &&
+       git diff --cached >actual &&
+       cat >expected <<-EOF &&
+Submodule sm1 0000000...$head1 (new submodule)
+EOF
+       git config --unset diff.submodule &&
+       test_cmp expected actual
+"
+
+test_expect_success '--submodule=short overrides diff.submodule' "
+       test_config diff.submodule log &&
+       git add sm1 &&
+       git diff --submodule=short --cached >actual &&
+       cat >expected <<-EOF &&
+diff --git a/sm1 b/sm1
+new file mode 160000
+index 0000000..$head1
+--- /dev/null
++++ b/sm1
+@@ -0,0 +1 @@
++Subproject commit $fullhead1
+EOF
+       test_cmp expected actual
+"
+
+test_expect_success 'diff.submodule does not affect plumbing' '
+       test_config diff.submodule log &&
+       git diff-index -p HEAD >actual &&
+       cat >expected <<-EOF &&
+       diff --git a/sm1 b/sm1
+       new file mode 160000
+       index 0000000..$head1
+       --- /dev/null
+       +++ b/sm1
+       @@ -0,0 +1 @@
+       +Subproject commit $fullhead1
+       EOF
+       test_cmp expected actual
+'
+
 commit_file sm1 &&
 head2=$(add_file sm1 foo3)
 
@@ -73,9 +116,8 @@ EOF
        test_cmp expected actual
 "
 
-fullhead1=$(cd sm1; git rev-list --max-count=1 $head1)
-fullhead2=$(cd sm1; git rev-list --max-count=1 $head2)
 test_expect_success 'modified submodule(forward) --submodule=short' "
+fullhead2=$(cd sm1; git rev-parse --verify HEAD)
        git diff --submodule=short >actual &&
        cat >expected <<-EOF &&
 diff --git a/sm1 b/sm1
@@ -93,7 +135,7 @@ commit_file sm1 &&
 head3=$(
        cd sm1 &&
        git reset --hard HEAD~2 >/dev/null &&
-       git rev-parse --verify HEAD | cut -c1-7
+       git rev-parse --short --verify HEAD
 )
 
 test_expect_success 'modified submodule(backward)' "
@@ -131,10 +173,10 @@ mv sm1-bak sm1
 test_expect_success 'typechanged submodule(submodule->blob), --cached' "
        git diff --submodule=log --cached >actual &&
        cat >expected <<-EOF &&
-Submodule sm1 41fbea9...0000000 (submodule deleted)
+Submodule sm1 $head4...0000000 (submodule deleted)
 diff --git a/sm1 b/sm1
 new file mode 100644
-index 0000000..9da5fb8
+index 0000000..$head5
 --- /dev/null
 +++ b/sm1
 @@ -0,0 +1 @@
@@ -148,7 +190,7 @@ test_expect_success 'typechanged submodule(submodule->blob)' "
        cat >expected <<-EOF &&
 diff --git a/sm1 b/sm1
 deleted file mode 100644
-index 9da5fb8..0000000
+index $head5..0000000
 --- a/sm1
 +++ /dev/null
 @@ -1 +0,0 @@
@@ -178,8 +220,8 @@ EOF
 rm -f sm1 &&
 test_create_repo sm1 &&
 head6=$(add_file sm1 foo6 foo7)
-fullhead6=$(cd sm1; git rev-list --max-count=1 $head6)
 test_expect_success 'nonexistent commit' "
+fullhead6=$(cd sm1; git rev-parse --verify HEAD)
        git diff-index -p --submodule=log HEAD >actual &&
        cat >expected <<-EOF &&
 Submodule sm1 $head4...$head6 (commits not present)
@@ -276,8 +318,8 @@ EOF
 "
 
 (cd sm1; git commit -mchange foo6 >/dev/null) &&
-head8=$(cd sm1; git rev-parse --verify HEAD | cut -c1-7) &&
 test_expect_success 'submodule is modified' "
+head8=$(cd sm1; git rev-parse --short --verify HEAD) &&
        git diff-index -p --submodule=log HEAD >actual &&
        cat >expected <<-EOF &&
 Submodule sm1 $head6..$head8:
@@ -419,7 +461,7 @@ EOF
        test_cmp expected actual
 "
 
-fullhead7=$(cd sm2; git rev-list --max-count=1 $head7)
+fullhead7=$(cd sm2; git rev-parse --verify HEAD)
 
 test_expect_success 'given commit --submodule=short' "
        git diff-index -p --submodule=short HEAD^ >actual &&