2012-03-01 20:26:38 +08:00
|
|
|
#!/bin/sh
|
|
|
|
#
|
|
|
|
# Copyright (c) 2012 Zbigniew Jędrzejewski-Szmek
|
|
|
|
#
|
|
|
|
|
|
|
|
test_description='test --stat output of various commands'
|
|
|
|
|
2020-11-19 07:44:27 +08:00
|
|
|
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
tests: mark tests relying on the current default for `init.defaultBranch`
In addition to the manual adjustment to let the `linux-gcc` CI job run
the test suite with `master` and then with `main`, this patch makes sure
that GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME is set in all test scripts
that currently rely on the initial branch name being `master by default.
To determine which test scripts to mark up, the first step was to
force-set the default branch name to `master` in
- all test scripts that contain the keyword `master`,
- t4211, which expects `t/t4211/history.export` with a hard-coded ref to
initialize the default branch,
- t5560 because it sources `t/t556x_common` which uses `master`,
- t8002 and t8012 because both source `t/annotate-tests.sh` which also
uses `master`)
This trick was performed by this command:
$ sed -i '/^ *\. \.\/\(test-lib\|lib-\(bash\|cvs\|git-svn\)\|gitweb-lib\)\.sh$/i\
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master\
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME\
' $(git grep -l master t/t[0-9]*.sh) \
t/t4211*.sh t/t5560*.sh t/t8002*.sh t/t8012*.sh
After that, careful, manual inspection revealed that some of the test
scripts containing the needle `master` do not actually rely on a
specific default branch name: either they mention `master` only in a
comment, or they initialize that branch specificially, or they do not
actually refer to the current default branch. Therefore, the
aforementioned modification was undone in those test scripts thusly:
$ git checkout HEAD -- \
t/t0027-auto-crlf.sh t/t0060-path-utils.sh \
t/t1011-read-tree-sparse-checkout.sh \
t/t1305-config-include.sh t/t1309-early-config.sh \
t/t1402-check-ref-format.sh t/t1450-fsck.sh \
t/t2024-checkout-dwim.sh \
t/t2106-update-index-assume-unchanged.sh \
t/t3040-subprojects-basic.sh t/t3301-notes.sh \
t/t3308-notes-merge.sh t/t3423-rebase-reword.sh \
t/t3436-rebase-more-options.sh \
t/t4015-diff-whitespace.sh t/t4257-am-interactive.sh \
t/t5323-pack-redundant.sh t/t5401-update-hooks.sh \
t/t5511-refspec.sh t/t5526-fetch-submodules.sh \
t/t5529-push-errors.sh t/t5530-upload-pack-error.sh \
t/t5548-push-porcelain.sh \
t/t5552-skipping-fetch-negotiator.sh \
t/t5572-pull-submodule.sh t/t5608-clone-2gb.sh \
t/t5614-clone-submodules-shallow.sh \
t/t7508-status.sh t/t7606-merge-custom.sh \
t/t9302-fast-import-unpack-limit.sh
We excluded one set of test scripts in these commands, though: the range
of `git p4` tests. The reason? `git p4` stores the (foreign) remote
branch in the branch called `p4/master`, which is obviously not the
default branch. Manual analysis revealed that only five of these tests
actually require a specific default branch name to pass; They were
modified thusly:
$ sed -i '/^ *\. \.\/lib-git-p4\.sh$/i\
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master\
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME\
' t/t980[0167]*.sh t/t9811*.sh
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-11-19 07:44:19 +08:00
|
|
|
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
|
|
|
|
2012-03-01 20:26:38 +08:00
|
|
|
. ./test-lib.sh
|
|
|
|
. "$TEST_DIRECTORY"/lib-terminal.sh
|
|
|
|
|
|
|
|
# 120 character name
|
|
|
|
name=aaaaaaaaaa
|
|
|
|
name=$name$name$name$name$name$name$name$name$name$name$name$name
|
|
|
|
test_expect_success 'preparation' '
|
|
|
|
>"$name" &&
|
|
|
|
git add "$name" &&
|
|
|
|
git commit -m message &&
|
|
|
|
echo a >"$name" &&
|
|
|
|
git commit -m message "$name"
|
|
|
|
'
|
|
|
|
|
2018-02-01 20:47:50 +08:00
|
|
|
cat >expect72 <<-'EOF'
|
|
|
|
...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1 +
|
|
|
|
EOF
|
|
|
|
test_expect_success "format-patch: small change with long name gives more space to the name" '
|
|
|
|
git format-patch -1 --stdout >output &&
|
|
|
|
grep " | " output >actual &&
|
|
|
|
test_cmp expect72 actual
|
|
|
|
'
|
|
|
|
|
2012-03-01 20:26:38 +08:00
|
|
|
while read cmd args
|
|
|
|
do
|
2018-02-01 20:47:50 +08:00
|
|
|
cat >expect80 <<-'EOF'
|
2012-05-01 04:38:58 +08:00
|
|
|
...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1 +
|
2012-03-01 20:26:38 +08:00
|
|
|
EOF
|
2012-03-01 20:26:43 +08:00
|
|
|
test_expect_success "$cmd: small change with long name gives more space to the name" '
|
2012-03-01 20:26:38 +08:00
|
|
|
git $cmd $args >output &&
|
|
|
|
grep " | " output >actual &&
|
2018-02-01 20:47:50 +08:00
|
|
|
test_cmp expect80 actual
|
2012-03-01 20:26:38 +08:00
|
|
|
'
|
2018-02-01 20:47:50 +08:00
|
|
|
done <<\EOF
|
|
|
|
diff HEAD^ HEAD --stat
|
|
|
|
show --stat
|
|
|
|
log -1 --stat
|
|
|
|
EOF
|
2012-03-01 20:26:38 +08:00
|
|
|
|
2018-11-10 13:46:24 +08:00
|
|
|
cat >expect.60 <<-'EOF'
|
|
|
|
...aaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1 +
|
|
|
|
EOF
|
|
|
|
cat >expect.6030 <<-'EOF'
|
|
|
|
...aaaaaaaaaaaaaaaaaaaaaaaaaaa | 1 +
|
|
|
|
EOF
|
|
|
|
cat >expect2.60 <<-'EOF'
|
|
|
|
...aaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1 +
|
|
|
|
...aaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1 +
|
|
|
|
EOF
|
|
|
|
cat >expect2.6030 <<-'EOF'
|
|
|
|
...aaaaaaaaaaaaaaaaaaaaaaaaaaa | 1 +
|
|
|
|
...aaaaaaaaaaaaaaaaaaaaaaaaaaa | 1 +
|
|
|
|
EOF
|
|
|
|
while read expect cmd args
|
2018-02-01 20:47:50 +08:00
|
|
|
do
|
2012-03-01 20:26:43 +08:00
|
|
|
test_expect_success "$cmd --stat=width: a long name is given more room when the bar is short" '
|
2012-03-01 20:26:38 +08:00
|
|
|
git $cmd $args --stat=40 >output &&
|
|
|
|
grep " | " output >actual &&
|
2018-11-10 13:46:24 +08:00
|
|
|
test_cmp $expect.60 actual
|
2012-03-01 20:26:38 +08:00
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success "$cmd --stat-width=width with long name" '
|
|
|
|
git $cmd $args --stat-width=40 >output &&
|
|
|
|
grep " | " output >actual &&
|
2018-11-10 13:46:24 +08:00
|
|
|
test_cmp $expect.60 actual
|
2012-03-01 20:26:38 +08:00
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success "$cmd --stat=...,name-width with long name" '
|
|
|
|
git $cmd $args --stat=60,30 >output &&
|
|
|
|
grep " | " output >actual &&
|
2018-11-10 13:46:24 +08:00
|
|
|
test_cmp $expect.6030 actual
|
2012-03-01 20:26:38 +08:00
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success "$cmd --stat-name-width with long name" '
|
|
|
|
git $cmd $args --stat-name-width=30 >output &&
|
|
|
|
grep " | " output >actual &&
|
2018-11-10 13:46:24 +08:00
|
|
|
test_cmp $expect.6030 actual
|
2012-03-01 20:26:38 +08:00
|
|
|
'
|
|
|
|
done <<\EOF
|
2018-11-10 13:46:24 +08:00
|
|
|
expect2 format-patch --cover-letter -1 --stdout
|
|
|
|
expect diff HEAD^ HEAD --stat
|
|
|
|
expect show --stat
|
|
|
|
expect log -1 --stat
|
2012-03-01 20:26:38 +08:00
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
|
|
test_expect_success 'preparation for big change tests' '
|
|
|
|
>abcd &&
|
|
|
|
git add abcd &&
|
|
|
|
git commit -m message &&
|
|
|
|
i=0 &&
|
|
|
|
while test $i -lt 1000
|
|
|
|
do
|
|
|
|
echo $i && i=$(($i + 1))
|
|
|
|
done >abcd &&
|
|
|
|
git commit -m message abcd
|
|
|
|
'
|
|
|
|
|
2018-11-10 13:46:24 +08:00
|
|
|
cat >expect72 <<'EOF'
|
|
|
|
abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
EOF
|
|
|
|
test_expect_success "format-patch --cover-letter ignores COLUMNS (big change)" '
|
|
|
|
COLUMNS=200 git format-patch -1 --stdout --cover-letter >output &&
|
|
|
|
grep " | " output >actual &&
|
|
|
|
test_cmp expect72 actual
|
|
|
|
'
|
|
|
|
|
2018-02-01 20:47:50 +08:00
|
|
|
cat >expect72 <<'EOF'
|
|
|
|
abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
2012-03-01 20:26:38 +08:00
|
|
|
EOF
|
2018-02-01 20:47:50 +08:00
|
|
|
cat >expect72-graph <<'EOF'
|
|
|
|
| abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
2012-04-16 18:44:49 +08:00
|
|
|
EOF
|
diff --stat: use the full terminal width
Default to the real terminal width for diff --stat output, instead
of the hard-coded 80 columns.
Some projects (especially in Java), have long filename paths, with
nested directories or long individual filenames. When files are
renamed, the filename part in stat output can be almost useless. If
the middle part between { and } is long (because the file was moved to
a completely different directory), then most of the path would be
truncated.
It makes sense to detect and use the full terminal width and display
full filenames if possible.
The are commands like diff, show, and log, which can adapt the output
to the terminal width. There are also commands like format-patch,
whose output should be independent of the terminal width. Since it is
safer to use the 80-column default, the real terminal width is only
used if requested by the calling code by setting diffopts.stat_width=-1.
Normally this value is 0, and can be set by the user only to a
non-negative value, so -1 is safe to use internally.
This patch only changes the diff builtin to use the full terminal width.
Signed-off-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-01 20:26:39 +08:00
|
|
|
cat >expect200 <<'EOF'
|
|
|
|
abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
EOF
|
2012-04-16 18:44:49 +08:00
|
|
|
cat >expect200-graph <<'EOF'
|
2012-04-16 18:44:52 +08:00
|
|
|
| abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
2012-04-16 18:44:49 +08:00
|
|
|
EOF
|
2012-03-01 20:26:38 +08:00
|
|
|
while read verb expect cmd args
|
|
|
|
do
|
|
|
|
test_expect_success "$cmd $verb COLUMNS (big change)" '
|
2015-03-20 18:06:44 +08:00
|
|
|
COLUMNS=200 git $cmd $args >output &&
|
2012-03-01 20:26:38 +08:00
|
|
|
grep " | " output >actual &&
|
|
|
|
test_cmp "$expect" actual
|
|
|
|
'
|
2012-04-16 18:44:49 +08:00
|
|
|
|
2015-03-11 10:13:02 +08:00
|
|
|
case "$cmd" in diff|show) continue;; esac
|
2012-04-16 18:44:49 +08:00
|
|
|
|
|
|
|
test_expect_success "$cmd --graph $verb COLUMNS (big change)" '
|
2015-03-20 18:06:44 +08:00
|
|
|
COLUMNS=200 git $cmd $args --graph >output &&
|
2012-04-16 18:44:49 +08:00
|
|
|
grep " | " output >actual &&
|
|
|
|
test_cmp "$expect-graph" actual
|
|
|
|
'
|
2012-03-01 20:26:38 +08:00
|
|
|
done <<\EOF
|
2018-02-01 20:47:50 +08:00
|
|
|
ignores expect72 format-patch -1 --stdout
|
diff --stat: use the full terminal width
Default to the real terminal width for diff --stat output, instead
of the hard-coded 80 columns.
Some projects (especially in Java), have long filename paths, with
nested directories or long individual filenames. When files are
renamed, the filename part in stat output can be almost useless. If
the middle part between { and } is long (because the file was moved to
a completely different directory), then most of the path would be
truncated.
It makes sense to detect and use the full terminal width and display
full filenames if possible.
The are commands like diff, show, and log, which can adapt the output
to the terminal width. There are also commands like format-patch,
whose output should be independent of the terminal width. Since it is
safer to use the 80-column default, the real terminal width is only
used if requested by the calling code by setting diffopts.stat_width=-1.
Normally this value is 0, and can be set by the user only to a
non-negative value, so -1 is safe to use internally.
This patch only changes the diff builtin to use the full terminal width.
Signed-off-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-01 20:26:39 +08:00
|
|
|
respects expect200 diff HEAD^ HEAD --stat
|
2012-03-01 20:26:40 +08:00
|
|
|
respects expect200 show --stat
|
2012-03-01 20:26:41 +08:00
|
|
|
respects expect200 log -1 --stat
|
2012-03-01 20:26:38 +08:00
|
|
|
EOF
|
|
|
|
|
2012-03-01 20:26:44 +08:00
|
|
|
cat >expect40 <<'EOF'
|
|
|
|
abcd | 1000 ++++++++++++++++++++++++++
|
|
|
|
EOF
|
2012-04-16 18:44:49 +08:00
|
|
|
cat >expect40-graph <<'EOF'
|
2012-04-16 18:44:52 +08:00
|
|
|
| abcd | 1000 ++++++++++++++++++++++++
|
2012-04-16 18:44:49 +08:00
|
|
|
EOF
|
2012-03-01 20:26:44 +08:00
|
|
|
while read verb expect cmd args
|
|
|
|
do
|
|
|
|
test_expect_success "$cmd $verb not enough COLUMNS (big change)" '
|
2015-03-20 18:06:44 +08:00
|
|
|
COLUMNS=40 git $cmd $args >output &&
|
2012-03-01 20:26:44 +08:00
|
|
|
grep " | " output >actual &&
|
|
|
|
test_cmp "$expect" actual
|
|
|
|
'
|
2012-03-01 20:26:46 +08:00
|
|
|
|
2015-03-11 10:13:02 +08:00
|
|
|
case "$cmd" in diff|show) continue;; esac
|
2012-04-16 18:44:49 +08:00
|
|
|
|
|
|
|
test_expect_success "$cmd --graph $verb not enough COLUMNS (big change)" '
|
2015-03-20 18:06:44 +08:00
|
|
|
COLUMNS=40 git $cmd $args --graph >output &&
|
2012-04-16 18:44:49 +08:00
|
|
|
grep " | " output >actual &&
|
|
|
|
test_cmp "$expect-graph" actual
|
|
|
|
'
|
2012-04-16 18:44:52 +08:00
|
|
|
done <<\EOF
|
2018-02-01 20:47:50 +08:00
|
|
|
ignores expect72 format-patch -1 --stdout
|
2012-04-16 18:44:52 +08:00
|
|
|
respects expect40 diff HEAD^ HEAD --stat
|
|
|
|
respects expect40 show --stat
|
|
|
|
respects expect40 log -1 --stat
|
|
|
|
EOF
|
|
|
|
|
|
|
|
cat >expect40 <<'EOF'
|
|
|
|
abcd | 1000 ++++++++++++++++++++++++++
|
|
|
|
EOF
|
|
|
|
cat >expect40-graph <<'EOF'
|
|
|
|
| abcd | 1000 ++++++++++++++++++++++++++
|
|
|
|
EOF
|
|
|
|
while read verb expect cmd args
|
|
|
|
do
|
|
|
|
test_expect_success "$cmd $verb statGraphWidth config" '
|
2015-03-20 18:06:44 +08:00
|
|
|
git -c diff.statGraphWidth=26 $cmd $args >output &&
|
2012-04-16 18:44:52 +08:00
|
|
|
grep " | " output >actual &&
|
|
|
|
test_cmp "$expect" actual
|
|
|
|
'
|
|
|
|
|
2015-03-11 10:13:02 +08:00
|
|
|
case "$cmd" in diff|show) continue;; esac
|
2012-04-16 18:44:49 +08:00
|
|
|
|
|
|
|
test_expect_success "$cmd --graph $verb statGraphWidth config" '
|
2015-03-20 18:06:44 +08:00
|
|
|
git -c diff.statGraphWidth=26 $cmd $args --graph >output &&
|
2012-04-16 18:44:49 +08:00
|
|
|
grep " | " output >actual &&
|
|
|
|
test_cmp "$expect-graph" actual
|
|
|
|
'
|
2012-03-01 20:26:44 +08:00
|
|
|
done <<\EOF
|
2018-02-01 20:47:50 +08:00
|
|
|
ignores expect72 format-patch -1 --stdout
|
2012-03-01 20:26:44 +08:00
|
|
|
respects expect40 diff HEAD^ HEAD --stat
|
|
|
|
respects expect40 show --stat
|
|
|
|
respects expect40 log -1 --stat
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
2012-03-01 20:26:38 +08:00
|
|
|
cat >expect <<'EOF'
|
|
|
|
abcd | 1000 ++++++++++++++++++++++++++
|
|
|
|
EOF
|
2012-04-16 18:44:49 +08:00
|
|
|
cat >expect-graph <<'EOF'
|
|
|
|
| abcd | 1000 ++++++++++++++++++++++++++
|
|
|
|
EOF
|
2012-03-01 20:26:38 +08:00
|
|
|
while read cmd args
|
|
|
|
do
|
|
|
|
test_expect_success "$cmd --stat=width with big change" '
|
2015-03-20 18:06:44 +08:00
|
|
|
git $cmd $args --stat=40 >output &&
|
2012-03-01 20:26:38 +08:00
|
|
|
grep " | " output >actual &&
|
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success "$cmd --stat-width=width with big change" '
|
2015-03-20 18:06:44 +08:00
|
|
|
git $cmd $args --stat-width=40 >output &&
|
2012-03-01 20:26:38 +08:00
|
|
|
grep " | " output >actual &&
|
|
|
|
test_cmp expect actual
|
2012-03-01 20:26:45 +08:00
|
|
|
'
|
|
|
|
|
2012-04-16 18:44:49 +08:00
|
|
|
test_expect_success "$cmd --stat-graph-width with big change" '
|
2015-03-20 18:06:44 +08:00
|
|
|
git $cmd $args --stat-graph-width=26 >output &&
|
2012-03-01 20:26:45 +08:00
|
|
|
grep " | " output >actual &&
|
|
|
|
test_cmp expect actual
|
2012-03-01 20:26:38 +08:00
|
|
|
'
|
2012-04-16 18:44:49 +08:00
|
|
|
|
2015-03-11 10:13:02 +08:00
|
|
|
case "$cmd" in diff|show) continue;; esac
|
2012-04-16 18:44:49 +08:00
|
|
|
|
|
|
|
test_expect_success "$cmd --stat-width=width --graph with big change" '
|
2015-03-20 18:06:44 +08:00
|
|
|
git $cmd $args --stat-width=40 --graph >output &&
|
2012-04-16 18:44:49 +08:00
|
|
|
grep " | " output >actual &&
|
|
|
|
test_cmp expect-graph actual
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success "$cmd --stat-graph-width --graph with big change" '
|
2015-03-20 18:06:44 +08:00
|
|
|
git $cmd $args --stat-graph-width=26 --graph >output &&
|
2012-04-16 18:44:49 +08:00
|
|
|
grep " | " output >actual &&
|
|
|
|
test_cmp expect-graph actual
|
|
|
|
'
|
2012-03-01 20:26:38 +08:00
|
|
|
done <<\EOF
|
|
|
|
format-patch -1 --stdout
|
|
|
|
diff HEAD^ HEAD --stat
|
|
|
|
show --stat
|
|
|
|
log -1 --stat
|
|
|
|
EOF
|
|
|
|
|
|
|
|
test_expect_success 'preparation for long filename tests' '
|
|
|
|
cp abcd aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &&
|
|
|
|
git add aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &&
|
|
|
|
git commit -m message
|
|
|
|
'
|
|
|
|
|
|
|
|
cat >expect <<'EOF'
|
2012-03-01 20:26:43 +08:00
|
|
|
...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 ++++++++++++
|
2012-03-01 20:26:38 +08:00
|
|
|
EOF
|
2012-04-16 18:44:49 +08:00
|
|
|
cat >expect-graph <<'EOF'
|
|
|
|
| ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 ++++++++++++
|
|
|
|
EOF
|
2012-03-01 20:26:38 +08:00
|
|
|
while read cmd args
|
|
|
|
do
|
2012-03-01 20:26:43 +08:00
|
|
|
test_expect_success "$cmd --stat=width with big change is more balanced" '
|
2012-03-01 20:26:38 +08:00
|
|
|
git $cmd $args --stat-width=60 >output &&
|
|
|
|
grep " | " output >actual &&
|
|
|
|
test_cmp expect actual
|
|
|
|
'
|
2012-04-16 18:44:49 +08:00
|
|
|
|
2015-03-11 10:13:02 +08:00
|
|
|
case "$cmd" in diff|show) continue;; esac
|
2012-04-16 18:44:49 +08:00
|
|
|
|
|
|
|
test_expect_success "$cmd --stat=width --graph with big change is balanced" '
|
|
|
|
git $cmd $args --stat-width=60 --graph >output &&
|
|
|
|
grep " | " output >actual &&
|
|
|
|
test_cmp expect-graph actual
|
|
|
|
'
|
2012-03-01 20:26:38 +08:00
|
|
|
done <<\EOF
|
|
|
|
format-patch -1 --stdout
|
|
|
|
diff HEAD^ HEAD --stat
|
|
|
|
show --stat
|
|
|
|
log -1 --stat
|
|
|
|
EOF
|
|
|
|
|
2018-02-01 20:47:50 +08:00
|
|
|
cat >expect72 <<'EOF'
|
|
|
|
...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 +++++++++++++++++
|
2012-03-01 20:26:38 +08:00
|
|
|
EOF
|
2018-02-01 20:47:50 +08:00
|
|
|
cat >expect72-graph <<'EOF'
|
|
|
|
| ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 +++++++++++++++++
|
2012-04-16 18:44:49 +08:00
|
|
|
EOF
|
diff --stat: use the full terminal width
Default to the real terminal width for diff --stat output, instead
of the hard-coded 80 columns.
Some projects (especially in Java), have long filename paths, with
nested directories or long individual filenames. When files are
renamed, the filename part in stat output can be almost useless. If
the middle part between { and } is long (because the file was moved to
a completely different directory), then most of the path would be
truncated.
It makes sense to detect and use the full terminal width and display
full filenames if possible.
The are commands like diff, show, and log, which can adapt the output
to the terminal width. There are also commands like format-patch,
whose output should be independent of the terminal width. Since it is
safer to use the 80-column default, the real terminal width is only
used if requested by the calling code by setting diffopts.stat_width=-1.
Normally this value is 0, and can be set by the user only to a
non-negative value, so -1 is safe to use internally.
This patch only changes the diff builtin to use the full terminal width.
Signed-off-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-01 20:26:39 +08:00
|
|
|
cat >expect200 <<'EOF'
|
2012-03-01 20:26:43 +08:00
|
|
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
diff --stat: use the full terminal width
Default to the real terminal width for diff --stat output, instead
of the hard-coded 80 columns.
Some projects (especially in Java), have long filename paths, with
nested directories or long individual filenames. When files are
renamed, the filename part in stat output can be almost useless. If
the middle part between { and } is long (because the file was moved to
a completely different directory), then most of the path would be
truncated.
It makes sense to detect and use the full terminal width and display
full filenames if possible.
The are commands like diff, show, and log, which can adapt the output
to the terminal width. There are also commands like format-patch,
whose output should be independent of the terminal width. Since it is
safer to use the 80-column default, the real terminal width is only
used if requested by the calling code by setting diffopts.stat_width=-1.
Normally this value is 0, and can be set by the user only to a
non-negative value, so -1 is safe to use internally.
This patch only changes the diff builtin to use the full terminal width.
Signed-off-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-01 20:26:39 +08:00
|
|
|
EOF
|
2012-04-16 18:44:49 +08:00
|
|
|
cat >expect200-graph <<'EOF'
|
2012-04-16 18:44:52 +08:00
|
|
|
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
2012-04-16 18:44:49 +08:00
|
|
|
EOF
|
2012-03-01 20:26:38 +08:00
|
|
|
while read verb expect cmd args
|
|
|
|
do
|
|
|
|
test_expect_success "$cmd $verb COLUMNS (long filename)" '
|
2015-03-20 18:06:44 +08:00
|
|
|
COLUMNS=200 git $cmd $args >output &&
|
2012-03-01 20:26:38 +08:00
|
|
|
grep " | " output >actual &&
|
|
|
|
test_cmp "$expect" actual
|
|
|
|
'
|
2012-04-16 18:44:49 +08:00
|
|
|
|
2015-03-11 10:13:02 +08:00
|
|
|
case "$cmd" in diff|show) continue;; esac
|
2012-04-16 18:44:49 +08:00
|
|
|
|
|
|
|
test_expect_success "$cmd --graph $verb COLUMNS (long filename)" '
|
2015-03-20 18:06:44 +08:00
|
|
|
COLUMNS=200 git $cmd $args --graph >output &&
|
2012-04-16 18:44:49 +08:00
|
|
|
grep " | " output >actual &&
|
|
|
|
test_cmp "$expect-graph" actual
|
|
|
|
'
|
2012-03-01 20:26:38 +08:00
|
|
|
done <<\EOF
|
2018-02-01 20:47:50 +08:00
|
|
|
ignores expect72 format-patch -1 --stdout
|
diff --stat: use the full terminal width
Default to the real terminal width for diff --stat output, instead
of the hard-coded 80 columns.
Some projects (especially in Java), have long filename paths, with
nested directories or long individual filenames. When files are
renamed, the filename part in stat output can be almost useless. If
the middle part between { and } is long (because the file was moved to
a completely different directory), then most of the path would be
truncated.
It makes sense to detect and use the full terminal width and display
full filenames if possible.
The are commands like diff, show, and log, which can adapt the output
to the terminal width. There are also commands like format-patch,
whose output should be independent of the terminal width. Since it is
safer to use the 80-column default, the real terminal width is only
used if requested by the calling code by setting diffopts.stat_width=-1.
Normally this value is 0, and can be set by the user only to a
non-negative value, so -1 is safe to use internally.
This patch only changes the diff builtin to use the full terminal width.
Signed-off-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-01 20:26:39 +08:00
|
|
|
respects expect200 diff HEAD^ HEAD --stat
|
2012-03-01 20:26:40 +08:00
|
|
|
respects expect200 show --stat
|
2012-03-01 20:26:41 +08:00
|
|
|
respects expect200 log -1 --stat
|
2012-03-01 20:26:38 +08:00
|
|
|
EOF
|
|
|
|
|
2012-04-19 05:09:33 +08:00
|
|
|
cat >expect1 <<'EOF'
|
|
|
|
...aaaaaaa | 1000 ++++++
|
|
|
|
EOF
|
|
|
|
cat >expect1-graph <<'EOF'
|
|
|
|
| ...aaaaaaa | 1000 ++++++
|
|
|
|
EOF
|
2012-04-19 05:12:18 +08:00
|
|
|
while read verb expect cmd args
|
2012-04-19 05:09:33 +08:00
|
|
|
do
|
2012-04-27 17:25:25 +08:00
|
|
|
test_expect_success COLUMNS_CAN_BE_1 \
|
|
|
|
"$cmd $verb prefix greater than COLUMNS (big change)" '
|
2015-03-20 18:06:44 +08:00
|
|
|
COLUMNS=1 git $cmd $args >output &&
|
2012-04-19 05:09:33 +08:00
|
|
|
grep " | " output >actual &&
|
|
|
|
test_cmp "$expect" actual
|
|
|
|
'
|
|
|
|
|
2015-03-11 10:13:02 +08:00
|
|
|
case "$cmd" in diff|show) continue;; esac
|
2012-04-19 05:09:33 +08:00
|
|
|
|
2012-04-27 17:25:25 +08:00
|
|
|
test_expect_success COLUMNS_CAN_BE_1 \
|
|
|
|
"$cmd --graph $verb prefix greater than COLUMNS (big change)" '
|
2015-03-20 18:06:44 +08:00
|
|
|
COLUMNS=1 git $cmd $args --graph >output &&
|
2012-04-19 05:09:33 +08:00
|
|
|
grep " | " output >actual &&
|
|
|
|
test_cmp "$expect-graph" actual
|
|
|
|
'
|
|
|
|
done <<\EOF
|
2018-02-01 20:47:50 +08:00
|
|
|
ignores expect72 format-patch -1 --stdout
|
2012-04-19 05:12:18 +08:00
|
|
|
respects expect1 diff HEAD^ HEAD --stat
|
|
|
|
respects expect1 show --stat
|
|
|
|
respects expect1 log -1 --stat
|
2012-04-19 05:09:33 +08:00
|
|
|
EOF
|
|
|
|
|
2012-03-01 20:26:38 +08:00
|
|
|
cat >expect <<'EOF'
|
2012-03-01 20:26:42 +08:00
|
|
|
abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
2012-03-01 20:26:38 +08:00
|
|
|
EOF
|
2012-03-01 20:26:42 +08:00
|
|
|
test_expect_success 'merge --stat respects COLUMNS (big change)' '
|
2012-03-01 20:26:38 +08:00
|
|
|
git checkout -b branch HEAD^^ &&
|
2020-11-19 07:44:27 +08:00
|
|
|
COLUMNS=100 git merge --stat --no-ff main^ >output &&
|
2015-03-20 18:06:44 +08:00
|
|
|
grep " | " output >actual &&
|
2012-03-01 20:26:38 +08:00
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
|
|
|
cat >expect <<'EOF'
|
2012-03-01 20:26:43 +08:00
|
|
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 +++++++++++++++++++++++++++++++++++++++
|
2012-03-01 20:26:38 +08:00
|
|
|
EOF
|
2012-03-01 20:26:42 +08:00
|
|
|
test_expect_success 'merge --stat respects COLUMNS (long filename)' '
|
2020-11-19 07:44:27 +08:00
|
|
|
COLUMNS=100 git merge --stat --no-ff main >output &&
|
2015-03-20 18:06:44 +08:00
|
|
|
grep " | " output >actual &&
|
2012-03-01 20:26:38 +08:00
|
|
|
test_cmp expect actual
|
|
|
|
'
|
|
|
|
|
|
|
|
test_done
|