Skip to content

Commit

Permalink
Merge pull request #157 from jeffhostetler/vfs-222-status-cache-untra…
Browse files Browse the repository at this point in the history
…cked-hint

status: deserialize with -uno does not print correct hint
  • Loading branch information
jeffhostetler authored and dscho committed Aug 17, 2019
2 parents bbfe83c + 5bcf4cd commit bd42007
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 6 deletions.
55 changes: 55 additions & 0 deletions t/t7524-serialized-status.sh
Original file line number Diff line number Diff line change
Expand Up @@ -332,4 +332,59 @@ test_expect_success 'renames' '
test_i18ncmp output.1 output.2
'

test_expect_success 'hint message when cached with u=complete' '
git init hint &&
echo xxx >hint/xxx &&
git -C hint add xxx &&
git -C hint commit -m xxx &&
cat >expect.clean <<EOF &&
On branch master
nothing to commit, working tree clean
EOF
cat >expect.use_u <<EOF &&
On branch master
nothing to commit (use -u to show untracked files)
EOF
# Capture long format output from "no", "normal", and "all"
# (without using status cache) and verify it matches expected
# output.
git -C hint status --untracked-files=normal >hint.output_normal &&
test_i18ncmp expect.clean hint.output_normal &&
git -C hint status --untracked-files=all >hint.output_all &&
test_i18ncmp expect.clean hint.output_all &&
git -C hint status --untracked-files=no >hint.output_no &&
test_i18ncmp expect.use_u hint.output_no &&
# Create long format output for "complete" and create status cache.
git -C hint status --untracked-files=complete --ignored=matching --serialize=../hint.dat >hint.output_complete &&
test_i18ncmp expect.clean hint.output_complete &&
# Capture long format output using the status cache and verify
# that the output matches the non-cached version. There are 2
# ways to specify untracked-files, so do them both.
git -C hint status --deserialize=../hint.dat -unormal >hint.d1_normal &&
test_i18ncmp expect.clean hint.d1_normal &&
git -C hint -c status.showuntrackedfiles=normal status --deserialize=../hint.dat >hint.d2_normal &&
test_i18ncmp expect.clean hint.d2_normal &&
git -C hint status --deserialize=../hint.dat -uall >hint.d1_all &&
test_i18ncmp expect.clean hint.d1_all &&
git -C hint -c status.showuntrackedfiles=all status --deserialize=../hint.dat >hint.d2_all &&
test_i18ncmp expect.clean hint.d2_all &&
git -C hint status --deserialize=../hint.dat -uno >hint.d1_no &&
test_i18ncmp expect.use_u hint.d1_no &&
git -C hint -c status.showuntrackedfiles=no status --deserialize=../hint.dat >hint.d2_no &&
test_i18ncmp expect.use_u hint.d2_no
'

test_done
16 changes: 10 additions & 6 deletions wt-status-deserialize.c
Original file line number Diff line number Diff line change
Expand Up @@ -442,20 +442,24 @@ static int wt_deserialize_v1_ignored_items(struct wt_status *s,
}

static int validate_untracked_files_arg(enum untracked_status_type cmd,
enum untracked_status_type des,
enum untracked_status_type *des,
enum deserialize_parse_strategy *strategy)
{
*strategy = DESERIALIZE_STRATEGY_AS_IS;

if (cmd == des) {
if (cmd == *des) {
*strategy = DESERIALIZE_STRATEGY_AS_IS;
} else if (cmd == SHOW_NO_UNTRACKED_FILES) {
*strategy = DESERIALIZE_STRATEGY_SKIP;
} else if (des == SHOW_COMPLETE_UNTRACKED_FILES) {
if (cmd == SHOW_ALL_UNTRACKED_FILES)
*des = cmd;
} else if (*des == SHOW_COMPLETE_UNTRACKED_FILES) {
if (cmd == SHOW_ALL_UNTRACKED_FILES) {
*strategy = DESERIALIZE_STRATEGY_ALL;
else if (cmd == SHOW_NORMAL_UNTRACKED_FILES)
*des = cmd;
} else if (cmd == SHOW_NORMAL_UNTRACKED_FILES) {
*strategy = DESERIALIZE_STRATEGY_NORMAL;
*des = cmd;
}
} else {
return DESERIALIZE_ERR;
}
Expand Down Expand Up @@ -497,7 +501,7 @@ static int wt_deserialize_v1(const struct wt_status *cmd_s, struct wt_status *s,
* We now have the header parsed. Look at the command args (as passed in), and see how to parse
* the serialized data
*/
if (validate_untracked_files_arg(cmd_s->show_untracked_files, s->show_untracked_files, &untracked_strategy)) {
if (validate_untracked_files_arg(cmd_s->show_untracked_files, &s->show_untracked_files, &untracked_strategy)) {
set_deserialize_reject_reason("args/untracked-files");
trace_printf_key(&trace_deserialize, "reject: show_untracked_file: command: %d, serialized : %d",
cmd_s->show_untracked_files,
Expand Down

0 comments on commit bd42007

Please sign in to comment.