@@ -541,6 +541,45 @@ test_expect_success 'diff --cached' '
541
541
test_all_match git diff --cached
542
542
'
543
543
544
+ test_expect_success ' diff partially-staged' '
545
+ init_repos &&
546
+
547
+ git -C full-checkout config advice.sparseIndexExpanded false &&
548
+
549
+ write_script edit-contents <<-\EOF &&
550
+ echo text >>$1
551
+ EOF
552
+
553
+ # Add file within cone
554
+ test_all_match git sparse-checkout set deep &&
555
+ run_on_all ../edit-contents deep/testfile &&
556
+ test_all_match git add deep/testfile &&
557
+ run_on_all ../edit-contents deep/testfile &&
558
+
559
+ test_all_match git diff &&
560
+ test_all_match git diff --staged &&
561
+
562
+ # Add file outside cone
563
+ test_all_match git reset --hard &&
564
+ run_on_all mkdir newdirectory &&
565
+ run_on_all ../edit-contents newdirectory/testfile &&
566
+ test_all_match git sparse-checkout set newdirectory &&
567
+ test_all_match git add newdirectory/testfile &&
568
+ run_on_all ../edit-contents newdirectory/testfile &&
569
+ test_all_match git sparse-checkout set &&
570
+
571
+ test_all_match git diff &&
572
+ test_all_match git diff --staged &&
573
+
574
+ # Merge conflict outside cone
575
+ test_all_match git reset --hard &&
576
+ test_all_match git checkout merge-left &&
577
+ test_all_match test_must_fail git merge merge-right &&
578
+
579
+ test_all_match git diff &&
580
+ test_all_match git diff --staged
581
+ '
582
+
544
583
# NEEDSWORK: sparse-checkout behaves differently from full-checkout when
545
584
# running this test with 'df-conflict-2' after 'df-conflict-1'.
546
585
test_expect_success ' diff with renames and conflicts' '
@@ -1482,6 +1521,11 @@ test_expect_success 'sparse-index is not expanded' '
1482
1521
ensure_not_expanded reset --merge update-deep &&
1483
1522
ensure_not_expanded reset --hard &&
1484
1523
1524
+ echo a test change >>sparse-index/README.md &&
1525
+ ensure_not_expanded diff &&
1526
+ git -C sparse-index add README.md &&
1527
+ ensure_not_expanded diff --staged &&
1528
+
1485
1529
ensure_not_expanded reset base -- deep/a &&
1486
1530
ensure_not_expanded reset base -- nonexistent-file &&
1487
1531
ensure_not_expanded reset deepest -- deep &&
0 commit comments