Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions t/t7524-serialized-status.sh
Original file line number Diff line number Diff line change
Expand Up @@ -333,4 +333,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 &&
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wouldn't test_commit -C hint xxx be more succinct than those three lines? (Of course, the file is then called xxx.t, but it would be easy to adapt the test case to that, no?)


cat >expect.clean <<EOF &&
On branch master
nothing to commit, working tree clean
EOF
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please use <<-\EOF and indent the text.


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 &&
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this line needs to be broken (with a \ continuation)...

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