wt-status: consistently quote paths in "status --short" output

Tracked paths with SP in them were cquoted in "git status --short"
output, but untracked, ignored, and unmerged paths weren't.

The test was stolen from a patch to fix output for the 'untracked'
paths by brian m. carlson, with similar tests added for 'ignored'
ones.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Junio C Hamano 2020-09-10 10:01:57 -07:00
parent e2773aa45f
commit a361dd3f79
2 changed files with 29 additions and 2 deletions

View File

@ -814,6 +814,33 @@ test_expect_success 'status -s without relative paths' '
' '
cat >expect <<\EOF
M dir1/modified
A dir2/added
A "file with spaces"
?? dir1/untracked
?? dir2/modified
?? dir2/untracked
?? "file with spaces 2"
?? untracked
EOF
test_expect_success 'status -s without relative paths' '
test_when_finished "git rm --cached \"file with spaces\"; rm -f file*" &&
>"file with spaces" &&
>"file with spaces 2" &&
>"expect with spaces" &&
git add "file with spaces" &&
git status -s >output &&
test_cmp expect output &&
git status -s --ignored >output &&
grep "^!! \"expect with spaces\"$" output &&
grep -v "^!! " output >output-wo-ignored &&
test_cmp expect output-wo-ignored
'
test_expect_success 'dry-run of partial commit excluding new file in index' ' test_expect_success 'dry-run of partial commit excluding new file in index' '
cat >expect <<EOF && cat >expect <<EOF &&
On branch master On branch master

View File

@ -1848,7 +1848,7 @@ static void wt_shortstatus_unmerged(struct string_list_item *it,
} else { } else {
struct strbuf onebuf = STRBUF_INIT; struct strbuf onebuf = STRBUF_INIT;
const char *one; const char *one;
one = quote_path(it->string, s->prefix, &onebuf, 0); one = quote_path(it->string, s->prefix, &onebuf, QUOTE_PATH_QUOTE_SP);
printf(" %s\n", one); printf(" %s\n", one);
strbuf_release(&onebuf); strbuf_release(&onebuf);
} }
@ -1896,7 +1896,7 @@ static void wt_shortstatus_other(struct string_list_item *it,
} else { } else {
struct strbuf onebuf = STRBUF_INIT; struct strbuf onebuf = STRBUF_INIT;
const char *one; const char *one;
one = quote_path(it->string, s->prefix, &onebuf, 0); one = quote_path(it->string, s->prefix, &onebuf, QUOTE_PATH_QUOTE_SP);
color_fprintf(s->fp, color(WT_STATUS_UNTRACKED, s), "%s", sign); color_fprintf(s->fp, color(WT_STATUS_UNTRACKED, s), "%s", sign);
printf(" %s\n", one); printf(" %s\n", one);
strbuf_release(&onebuf); strbuf_release(&onebuf);