t4060: make test work with SHA-256
In this test, there are two main types of object IDs we see in the diffs: the ones for the submodules, which we care about, and the ones for the individual files, which are unrelated to what we're testing. Much of the test already computes the former, so extend the rest of the test to do so as well. Add a diff comparison function that normalizes the differences in the latter, since they're not explicitly what we're testing. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
brian m. carlson committed
Feb 7, 2020 at 00:52 UTC
417e45e5e38f824f65259f1c67d3a40b3597e12a
1 file changed
+70
-56
t/t4060-diff-submodule-option-diff-format.sh
+70
-56
@@ -42,6 +42,17 @@ commit_file () {
42
git commit "$@" -m "Commit $*" >/dev/null
43
}
44
45
+diff_cmp () {
46
+ for i in "$1" "$2"
47
+ do
48
+ sed -e 's/^index 0000000\.\.[0-9a-f]*/index 0000000..1234567/' \
49
+ -e 's/^index [0-9a-f]*\.\.[0-9a-f]*/index 1234567..89abcde/' \
50
+ "$i" >"$i.compare" || return 1
51
+ done &&
52
+ test_cmp "$1.compare" "$2.compare" &&
53
+ rm -f "$1.compare" "$2.compare"
54
+}
55
+
56
test_expect_success 'setup repository' '
57
test_create_repo sm1 &&
58
add_file . foo &&
@@ -69,7 +80,7 @@ test_expect_success 'added submodule' '
80
@@ -0,0 +1 @@
81
+foo2
82
EOF
72
- test_cmp expected actual
83
+ diff_cmp expected actual
84
'
85
86
test_expect_success 'added submodule, set diff.submodule' '
@@ -93,7 +104,7 @@ test_expect_success 'added submodule, set diff.submodule' '
104
@@ -0,0 +1 @@
105
+foo2
106
EOF
96
- test_cmp expected actual
107
+ diff_cmp expected actual
108
'
109
110
test_expect_success '--submodule=short overrides diff.submodule' '
@@ -109,7 +120,7 @@ test_expect_success '--submodule=short overrides diff.submodule' '
120
@@ -0,0 +1 @@
121
+Subproject commit $fullhead1
122
EOF
112
- test_cmp expected actual
123
+ diff_cmp expected actual
124
'
125
126
test_expect_success 'diff.submodule does not affect plumbing' '
@@ -124,7 +135,7 @@ test_expect_success 'diff.submodule does not affect plumbing' '
135
@@ -0,0 +1 @@
136
+Subproject commit $fullhead1
137
EOF
127
- test_cmp expected actual
138
+ diff_cmp expected actual
139
'
140
141
commit_file sm1 &&
@@ -142,7 +153,7 @@ test_expect_success 'modified submodule(forward)' '
153
@@ -0,0 +1 @@
154
+foo3
155
EOF
145
- test_cmp expected actual
156
+ diff_cmp expected actual
157
'
158
159
test_expect_success 'modified submodule(forward)' '
@@ -157,7 +168,7 @@ test_expect_success 'modified submodule(forward)' '
168
@@ -0,0 +1 @@
169
+foo3
170
EOF
160
- test_cmp expected actual
171
+ diff_cmp expected actual
172
'
173
174
test_expect_success 'modified submodule(forward) --submodule' '
@@ -166,7 +177,7 @@ test_expect_success 'modified submodule(forward) --submodule' '
177
Submodule sm1 $head1..$head2:
178
> Add foo3 ($added foo3)
179
EOF
169
- test_cmp expected actual
180
+ diff_cmp expected actual
181
'
182
183
fullhead2=$(cd sm1; git rev-parse --verify HEAD)
@@ -181,7 +192,7 @@ test_expect_success 'modified submodule(forward) --submodule=short' '
192
-Subproject commit $fullhead1
193
+Subproject commit $fullhead2
194
EOF
184
- test_cmp expected actual
195
+ diff_cmp expected actual
196
'
197
198
commit_file sm1 &&
@@ -210,7 +221,7 @@ test_expect_success 'modified submodule(backward)' '
221
@@ -1 +0,0 @@
222
-foo3
223
EOF
213
- test_cmp expected actual
224
+ diff_cmp expected actual
225
'
226
227
head4=$(add_file sm1 foo4 foo5)
@@ -247,7 +258,7 @@ test_expect_success 'modified submodule(backward and forward)' '
258
@@ -0,0 +1 @@
259
+foo5
260
EOF
250
- test_cmp expected actual
261
+ diff_cmp expected actual
262
'
263
264
commit_file sm1 &&
@@ -291,7 +302,7 @@ test_expect_success 'typechanged submodule(submodule->blob), --cached' '
302
@@ -0,0 +1 @@
303
+sm1
304
EOF
294
- test_cmp expected actual
305
+ diff_cmp expected actual
306
'
307
308
test_expect_success 'typechanged submodule(submodule->blob)' '
@@ -327,7 +338,7 @@ test_expect_success 'typechanged submodule(submodule->blob)' '
338
@@ -0,0 +1 @@
339
+foo5
340
EOF
330
- test_cmp expected actual
341
+ diff_cmp expected actual
342
'
343
344
rm -rf sm1 &&
@@ -344,7 +355,7 @@ test_expect_success 'typechanged submodule(submodule->blob)' '
355
@@ -0,0 +1 @@
356
+sm1
357
EOF
347
- test_cmp expected actual
358
+ diff_cmp expected actual
359
'
360
361
rm -f sm1 &&
@@ -356,7 +367,7 @@ test_expect_success 'nonexistent commit' '
367
cat >expected <<-EOF &&
368
Submodule sm1 $head4...$head6 (commits not present)
369
EOF
359
- test_cmp expected actual
370
+ diff_cmp expected actual
371
'
372
373
commit_file
@@ -386,11 +397,12 @@ test_expect_success 'typechanged submodule(blob->submodule)' '
397
@@ -0,0 +1 @@
398
+foo7
399
EOF
389
- test_cmp expected actual
400
+ diff_cmp expected actual
401
'
402
403
commit_file sm1 &&
404
test_expect_success 'submodule is up to date' '
405
+ head7=$(git -C sm1 rev-parse --short --verify HEAD) &&
406
git diff-index -p --submodule=diff HEAD >actual &&
407
test_must_be_empty actual
408
'
@@ -401,7 +413,7 @@ test_expect_success 'submodule contains untracked content' '
413
cat >expected <<-EOF &&
414
Submodule sm1 contains untracked content
415
EOF
404
- test_cmp expected actual
416
+ diff_cmp expected actual
417
'
418
419
test_expect_success 'submodule contains untracked content (untracked ignored)' '
@@ -433,7 +445,7 @@ test_expect_success 'submodule contains untracked and modified content' '
445
-foo6
446
+new
447
EOF
436
- test_cmp expected actual
448
+ diff_cmp expected actual
449
'
450
451
# NOT OK
@@ -450,7 +462,7 @@ test_expect_success 'submodule contains untracked and modified content (untracke
462
-foo6
463
+new
464
EOF
453
- test_cmp expected actual
465
+ diff_cmp expected actual
466
'
467
468
test_expect_success 'submodule contains untracked and modified content (dirty ignored)' '
@@ -478,7 +490,7 @@ test_expect_success 'submodule contains modified content' '
490
-foo6
491
+new
492
EOF
481
- test_cmp expected actual
493
+ diff_cmp expected actual
494
'
495
496
(cd sm1; git commit -mchange foo6 >/dev/null) &&
@@ -486,7 +498,7 @@ head8=$(cd sm1; git rev-parse --short --verify HEAD) &&
498
test_expect_success 'submodule is modified' '
499
git diff-index -p --submodule=diff HEAD >actual &&
500
cat >expected <<-EOF &&
489
- Submodule sm1 17243c9..$head8:
501
+ Submodule sm1 $head7..$head8:
502
diff --git a/sm1/foo6 b/sm1/foo6
503
index 462398b..3e75765 100644
504
--- a/sm1/foo6
@@ -495,7 +507,7 @@ test_expect_success 'submodule is modified' '
507
-foo6
508
+new
509
EOF
498
- test_cmp expected actual
510
+ diff_cmp expected actual
511
'
512
513
test_expect_success 'modified submodule contains untracked content' '
@@ -503,7 +515,7 @@ test_expect_success 'modified submodule contains untracked content' '
515
git diff-index -p --submodule=diff HEAD >actual &&
516
cat >expected <<-EOF &&
517
Submodule sm1 contains untracked content
506
- Submodule sm1 17243c9..$head8:
518
+ Submodule sm1 $head7..$head8:
519
diff --git a/sm1/foo6 b/sm1/foo6
520
index 462398b..3e75765 100644
521
--- a/sm1/foo6
@@ -512,13 +524,13 @@ test_expect_success 'modified submodule contains untracked content' '
524
-foo6
525
+new
526
EOF
515
- test_cmp expected actual
527
+ diff_cmp expected actual
528
'
529
530
test_expect_success 'modified submodule contains untracked content (untracked ignored)' '
531
git diff-index -p --ignore-submodules=untracked --submodule=diff HEAD >actual &&
532
cat >expected <<-EOF &&
521
- Submodule sm1 17243c9..$head8:
533
+ Submodule sm1 $head7..$head8:
534
diff --git a/sm1/foo6 b/sm1/foo6
535
index 462398b..3e75765 100644
536
--- a/sm1/foo6
@@ -527,13 +539,13 @@ test_expect_success 'modified submodule contains untracked content (untracked ig
539
-foo6
540
+new
541
EOF
530
- test_cmp expected actual
542
+ diff_cmp expected actual
543
'
544
545
test_expect_success 'modified submodule contains untracked content (dirty ignored)' '
546
git diff-index -p --ignore-submodules=dirty --submodule=diff HEAD >actual &&
547
cat >expected <<-EOF &&
536
- Submodule sm1 17243c9..cfce562:
548
+ Submodule sm1 $head7..$head8:
549
diff --git a/sm1/foo6 b/sm1/foo6
550
index 462398b..3e75765 100644
551
--- a/sm1/foo6
@@ -542,7 +554,7 @@ test_expect_success 'modified submodule contains untracked content (dirty ignore
554
-foo6
555
+new
556
EOF
545
- test_cmp expected actual
557
+ diff_cmp expected actual
558
'
559
560
test_expect_success 'modified submodule contains untracked content (all ignored)' '
@@ -556,7 +568,7 @@ test_expect_success 'modified submodule contains untracked and modified content'
568
cat >expected <<-EOF &&
569
Submodule sm1 contains untracked content
570
Submodule sm1 contains modified content
559
- Submodule sm1 17243c9..cfce562:
571
+ Submodule sm1 $head7..$head8:
572
diff --git a/sm1/foo6 b/sm1/foo6
573
index 462398b..dfda541 100644
574
--- a/sm1/foo6
@@ -566,7 +578,7 @@ test_expect_success 'modified submodule contains untracked and modified content'
578
+new
579
+modification
580
EOF
569
- test_cmp expected actual
581
+ diff_cmp expected actual
582
'
583
584
test_expect_success 'modified submodule contains untracked and modified content (untracked ignored)' '
@@ -574,7 +586,7 @@ test_expect_success 'modified submodule contains untracked and modified content
586
git diff-index -p --ignore-submodules=untracked --submodule=diff HEAD >actual &&
587
cat >expected <<-EOF &&
588
Submodule sm1 contains modified content
577
- Submodule sm1 17243c9..cfce562:
589
+ Submodule sm1 $head7..$head8:
590
diff --git a/sm1/foo6 b/sm1/foo6
591
index 462398b..e20e2d9 100644
592
--- a/sm1/foo6
@@ -585,14 +597,14 @@ test_expect_success 'modified submodule contains untracked and modified content
597
+modification
598
+modification
599
EOF
588
- test_cmp expected actual
600
+ diff_cmp expected actual
601
'
602
603
test_expect_success 'modified submodule contains untracked and modified content (dirty ignored)' '
604
echo modification >> sm1/foo6 &&
605
git diff-index -p --ignore-submodules=dirty --submodule=diff HEAD >actual &&
606
cat >expected <<-EOF &&
595
- Submodule sm1 17243c9..cfce562:
607
+ Submodule sm1 $head7..$head8:
608
diff --git a/sm1/foo6 b/sm1/foo6
609
index 462398b..3e75765 100644
610
--- a/sm1/foo6
@@ -601,7 +613,7 @@ test_expect_success 'modified submodule contains untracked and modified content
613
-foo6
614
+new
615
EOF
604
- test_cmp expected actual
616
+ diff_cmp expected actual
617
'
618
619
test_expect_success 'modified submodule contains untracked and modified content (all ignored)' '
@@ -616,7 +628,7 @@ test_expect_success 'modified submodule contains modified content' '
628
git diff-index -p --submodule=diff HEAD >actual &&
629
cat >expected <<-EOF &&
630
Submodule sm1 contains modified content
619
- Submodule sm1 17243c9..cfce562:
631
+ Submodule sm1 $head7..$head8:
632
diff --git a/sm1/foo6 b/sm1/foo6
633
index 462398b..ac466ca 100644
634
--- a/sm1/foo6
@@ -629,29 +641,29 @@ test_expect_success 'modified submodule contains modified content' '
641
+modification
642
+modification
643
EOF
632
- test_cmp expected actual
644
+ diff_cmp expected actual
645
'
646
647
rm -rf sm1
648
test_expect_success 'deleted submodule' '
649
git diff-index -p --submodule=diff HEAD >actual &&
650
cat >expected <<-EOF &&
639
- Submodule sm1 17243c9...0000000 (submodule deleted)
651
+ Submodule sm1 $head7...0000000 (submodule deleted)
652
EOF
641
- test_cmp expected actual
653
+ diff_cmp expected actual
654
'
655
656
test_expect_success 'create second submodule' '
657
test_create_repo sm2 &&
646
- head7=$(add_file sm2 foo8 foo9) &&
658
+ head9=$(add_file sm2 foo8 foo9) &&
659
git add sm2
660
'
661
662
test_expect_success 'multiple submodules' '
663
git diff-index -p --submodule=diff HEAD >actual &&
664
cat >expected <<-EOF &&
653
- Submodule sm1 17243c9...0000000 (submodule deleted)
654
- Submodule sm2 0000000...a5a65c9 (new submodule)
665
+ Submodule sm1 $head7...0000000 (submodule deleted)
666
+ Submodule sm2 0000000...$head9 (new submodule)
667
diff --git a/sm2/foo8 b/sm2/foo8
668
new file mode 100644
669
index 0000000..db9916b
@@ -667,13 +679,13 @@ test_expect_success 'multiple submodules' '
679
@@ -0,0 +1 @@
680
+foo9
681
EOF
670
- test_cmp expected actual
682
+ diff_cmp expected actual
683
'
684
685
test_expect_success 'path filter' '
686
git diff-index -p --submodule=diff HEAD sm2 >actual &&
687
cat >expected <<-EOF &&
676
- Submodule sm2 0000000...a5a65c9 (new submodule)
688
+ Submodule sm2 0000000...$head9 (new submodule)
689
diff --git a/sm2/foo8 b/sm2/foo8
690
new file mode 100644
691
index 0000000..db9916b
@@ -689,15 +701,15 @@ test_expect_success 'path filter' '
701
@@ -0,0 +1 @@
702
+foo9
703
EOF
692
- test_cmp expected actual
704
+ diff_cmp expected actual
705
'
706
707
commit_file sm2
708
test_expect_success 'given commit' '
709
git diff-index -p --submodule=diff HEAD^ >actual &&
710
cat >expected <<-EOF &&
699
- Submodule sm1 17243c9...0000000 (submodule deleted)
700
- Submodule sm2 0000000...a5a65c9 (new submodule)
711
+ Submodule sm1 $head7...0000000 (submodule deleted)
712
+ Submodule sm2 0000000...$head9 (new submodule)
713
diff --git a/sm2/foo8 b/sm2/foo8
714
new file mode 100644
715
index 0000000..db9916b
@@ -713,7 +725,7 @@ test_expect_success 'given commit' '
725
@@ -0,0 +1 @@
726
+foo9
727
EOF
716
- test_cmp expected actual
728
+ diff_cmp expected actual
729
'
730
731
test_expect_success 'setup .git file for sm2' '
@@ -726,8 +738,8 @@ test_expect_success 'setup .git file for sm2' '
738
test_expect_success 'diff --submodule=diff with .git file' '
739
git diff --submodule=diff HEAD^ >actual &&
740
cat >expected <<-EOF &&
729
- Submodule sm1 17243c9...0000000 (submodule deleted)
730
- Submodule sm2 0000000...a5a65c9 (new submodule)
741
+ Submodule sm1 $head7...0000000 (submodule deleted)
742
+ Submodule sm2 0000000...$head9 (new submodule)
743
diff --git a/sm2/foo8 b/sm2/foo8
744
new file mode 100644
745
index 0000000..db9916b
@@ -743,25 +755,27 @@ test_expect_success 'diff --submodule=diff with .git file' '
755
@@ -0,0 +1 @@
756
+foo9
757
EOF
746
- test_cmp expected actual
758
+ diff_cmp expected actual
759
'
760
761
test_expect_success 'setup nested submodule' '
762
git submodule add -f ./sm2 &&
763
git commit -a -m "add sm2" &&
764
git -C sm2 submodule add ../sm2 nested &&
753
- git -C sm2 commit -a -m "nested sub"
765
+ git -C sm2 commit -a -m "nested sub" &&
766
+ head10=$(git -C sm2 rev-parse --short --verify HEAD)
767
'
768
769
test_expect_success 'move nested submodule HEAD' '
770
echo "nested content" >sm2/nested/file &&
771
git -C sm2/nested add file &&
759
- git -C sm2/nested commit --allow-empty -m "new HEAD"
772
+ git -C sm2/nested commit --allow-empty -m "new HEAD" &&
773
+ head11=$(git -C sm2/nested rev-parse --short --verify HEAD)
774
'
775
776
test_expect_success 'diff --submodule=diff with moved nested submodule HEAD' '
777
cat >expected <<-EOF &&
764
- Submodule nested a5a65c9..b55928c:
778
+ Submodule nested $head9..$head11:
779
diff --git a/nested/file b/nested/file
780
new file mode 100644
781
index 0000000..ca281f5
@@ -772,13 +786,13 @@ test_expect_success 'diff --submodule=diff with moved nested submodule HEAD' '
786
EOF
787
git -C sm2 diff --submodule=diff >actual 2>err &&
788
test_must_be_empty err &&
775
- test_cmp expected actual
789
+ diff_cmp expected actual
790
'
791
792
test_expect_success 'diff --submodule=diff recurses into nested submodules' '
793
cat >expected <<-EOF &&
794
Submodule sm2 contains modified content
781
- Submodule sm2 a5a65c9..280969a:
795
+ Submodule sm2 $head9..$head10:
796
diff --git a/sm2/.gitmodules b/sm2/.gitmodules
797
new file mode 100644
798
index 0000000..3a816b8
@@ -788,7 +802,7 @@ test_expect_success 'diff --submodule=diff recurses into nested submodules' '
802
+[submodule "nested"]
803
+ path = nested
804
+ url = ../sm2
791
- Submodule nested 0000000...b55928c (new submodule)
805
+ Submodule nested 0000000...$head11 (new submodule)
806
diff --git a/sm2/nested/file b/sm2/nested/file
807
new file mode 100644
808
index 0000000..ca281f5
@@ -813,7 +827,7 @@ test_expect_success 'diff --submodule=diff recurses into nested submodules' '
827
EOF
828
git diff --submodule=diff >actual 2>err &&
829
test_must_be_empty err &&
816
- test_cmp expected actual
830
+ diff_cmp expected actual
831
'
832
833
test_done