mirror of
https://github.com/git/git.git
synced 2025-01-10 17:43:31 +08:00
a48e12ef7a
Make the behavior when diff options (e.g. "--stat") are passed consistent with how "diff" behaves. Before73a834e9e2
("range-diff: relieve callers of low-level configuration burden", 2018-07-22) running range-diff with "--stat" would produce stat output and the diff output, as opposed to how "diff" behaves where once "--stat" is specified "--patch" also needs to be provided to emit the patch output. As noted in a previous change ("range-diff doc: add a section about output stability", 2018-11-07) the "--stat" output with "range-diff" is useless at the moment. But we should behave consistently with "diff" in anticipation of such output being useful in the future, because it would make for confusing UI if "diff" and "range-diff" behaved differently when it came to how they interpret diff options. The new behavior is also consistent with the existing documentation added inba931edd28
("range-diff: populate the man page", 2018-08-13). See "[...]also accepts the regular diff options[...]" in git-range-diff(1). Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
188 lines
4.7 KiB
Bash
Executable File
188 lines
4.7 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='range-diff tests'
|
|
|
|
. ./test-lib.sh
|
|
|
|
# Note that because of the range-diff's heuristics, test_commit does more
|
|
# harm than good. We need some real history.
|
|
|
|
test_expect_success 'setup' '
|
|
git fast-import < "$TEST_DIRECTORY"/t3206/history.export
|
|
'
|
|
|
|
test_expect_success 'simple A..B A..C (unmodified)' '
|
|
git range-diff --no-color master..topic master..unmodified \
|
|
>actual &&
|
|
cat >expected <<-EOF &&
|
|
1: 4de457d = 1: 35b9b25 s/5/A/
|
|
2: fccce22 = 2: de345ab s/4/A/
|
|
3: 147e64e = 3: 9af6654 s/11/B/
|
|
4: a63e992 = 4: 2901f77 s/12/B/
|
|
EOF
|
|
test_cmp expected actual
|
|
'
|
|
|
|
test_expect_success 'simple B...C (unmodified)' '
|
|
git range-diff --no-color topic...unmodified >actual &&
|
|
# same "expected" as above
|
|
test_cmp expected actual
|
|
'
|
|
|
|
test_expect_success 'simple A B C (unmodified)' '
|
|
git range-diff --no-color master topic unmodified >actual &&
|
|
# same "expected" as above
|
|
test_cmp expected actual
|
|
'
|
|
|
|
test_expect_success 'trivial reordering' '
|
|
git range-diff --no-color master topic reordered >actual &&
|
|
cat >expected <<-EOF &&
|
|
1: 4de457d = 1: aca177a s/5/A/
|
|
3: 147e64e = 2: 14ad629 s/11/B/
|
|
4: a63e992 = 3: ee58208 s/12/B/
|
|
2: fccce22 = 4: 307b27a s/4/A/
|
|
EOF
|
|
test_cmp expected actual
|
|
'
|
|
|
|
test_expect_success 'removed a commit' '
|
|
git range-diff --no-color master topic removed >actual &&
|
|
cat >expected <<-EOF &&
|
|
1: 4de457d = 1: 7657159 s/5/A/
|
|
2: fccce22 < -: ------- s/4/A/
|
|
3: 147e64e = 2: 43d84d3 s/11/B/
|
|
4: a63e992 = 3: a740396 s/12/B/
|
|
EOF
|
|
test_cmp expected actual
|
|
'
|
|
|
|
test_expect_success 'added a commit' '
|
|
git range-diff --no-color master topic added >actual &&
|
|
cat >expected <<-EOF &&
|
|
1: 4de457d = 1: 2716022 s/5/A/
|
|
2: fccce22 = 2: b62accd s/4/A/
|
|
-: ------- > 3: df46cfa s/6/A/
|
|
3: 147e64e = 4: 3e64548 s/11/B/
|
|
4: a63e992 = 5: 12b4063 s/12/B/
|
|
EOF
|
|
test_cmp expected actual
|
|
'
|
|
|
|
test_expect_success 'new base, A B C' '
|
|
git range-diff --no-color master topic rebased >actual &&
|
|
cat >expected <<-EOF &&
|
|
1: 4de457d = 1: cc9c443 s/5/A/
|
|
2: fccce22 = 2: c5d9641 s/4/A/
|
|
3: 147e64e = 3: 28cc2b6 s/11/B/
|
|
4: a63e992 = 4: 5628ab7 s/12/B/
|
|
EOF
|
|
test_cmp expected actual
|
|
'
|
|
|
|
test_expect_success 'new base, B...C' '
|
|
# this syntax includes the commits from master!
|
|
git range-diff --no-color topic...rebased >actual &&
|
|
cat >expected <<-EOF &&
|
|
-: ------- > 1: a31b12e unrelated
|
|
1: 4de457d = 2: cc9c443 s/5/A/
|
|
2: fccce22 = 3: c5d9641 s/4/A/
|
|
3: 147e64e = 4: 28cc2b6 s/11/B/
|
|
4: a63e992 = 5: 5628ab7 s/12/B/
|
|
EOF
|
|
test_cmp expected actual
|
|
'
|
|
|
|
test_expect_success 'changed commit' '
|
|
git range-diff --no-color topic...changed >actual &&
|
|
cat >expected <<-EOF &&
|
|
1: 4de457d = 1: a4b3333 s/5/A/
|
|
2: fccce22 = 2: f51d370 s/4/A/
|
|
3: 147e64e ! 3: 0559556 s/11/B/
|
|
@@ -10,7 +10,7 @@
|
|
9
|
|
10
|
|
-11
|
|
-+B
|
|
++BB
|
|
12
|
|
13
|
|
14
|
|
4: a63e992 ! 4: d966c5c s/12/B/
|
|
@@ -8,7 +8,7 @@
|
|
@@
|
|
9
|
|
10
|
|
- B
|
|
+ BB
|
|
-12
|
|
+B
|
|
13
|
|
EOF
|
|
test_cmp expected actual
|
|
'
|
|
|
|
test_expect_success 'changed commit with --no-patch diff option' '
|
|
git range-diff --no-color --no-patch topic...changed >actual &&
|
|
cat >expected <<-EOF &&
|
|
1: 4de457d = 1: a4b3333 s/5/A/
|
|
2: fccce22 = 2: f51d370 s/4/A/
|
|
3: 147e64e ! 3: 0559556 s/11/B/
|
|
4: a63e992 ! 4: d966c5c s/12/B/
|
|
EOF
|
|
test_cmp expected actual
|
|
'
|
|
|
|
test_expect_success 'changed commit with --stat diff option' '
|
|
git range-diff --no-color --stat topic...changed >actual &&
|
|
cat >expected <<-EOF &&
|
|
1: 4de457d = 1: a4b3333 s/5/A/
|
|
a => b | 0
|
|
1 file changed, 0 insertions(+), 0 deletions(-)
|
|
2: fccce22 = 2: f51d370 s/4/A/
|
|
a => b | 0
|
|
1 file changed, 0 insertions(+), 0 deletions(-)
|
|
3: 147e64e ! 3: 0559556 s/11/B/
|
|
a => b | 0
|
|
1 file changed, 0 insertions(+), 0 deletions(-)
|
|
4: a63e992 ! 4: d966c5c s/12/B/
|
|
a => b | 0
|
|
1 file changed, 0 insertions(+), 0 deletions(-)
|
|
EOF
|
|
test_cmp expected actual
|
|
'
|
|
|
|
test_expect_success 'changed message' '
|
|
git range-diff --no-color topic...changed-message >actual &&
|
|
sed s/Z/\ /g >expected <<-EOF &&
|
|
1: 4de457d = 1: f686024 s/5/A/
|
|
2: fccce22 ! 2: 4ab067d s/4/A/
|
|
@@ -2,6 +2,8 @@
|
|
Z
|
|
Z s/4/A/
|
|
Z
|
|
+ Also a silly comment here!
|
|
+
|
|
Zdiff --git a/file b/file
|
|
Z--- a/file
|
|
Z+++ b/file
|
|
3: 147e64e = 3: b9cb956 s/11/B/
|
|
4: a63e992 = 4: 8add5f1 s/12/B/
|
|
EOF
|
|
test_cmp expected actual
|
|
'
|
|
|
|
for prev in topic master..topic
|
|
do
|
|
test_expect_success "format-patch --range-diff=$prev" '
|
|
git format-patch --stdout --cover-letter --range-diff=$prev \
|
|
master..unmodified >actual &&
|
|
grep "= 1: .* s/5/A" actual &&
|
|
grep "= 2: .* s/4/A" actual &&
|
|
grep "= 3: .* s/11/B" actual &&
|
|
grep "= 4: .* s/12/B" actual
|
|
'
|
|
done
|
|
|
|
test_done
|