]> git.proxmox.com Git - libgit2.git/blame - tests/libgit2/status/status_helpers.c
Merge https://salsa.debian.org/debian/libgit2 into proxmox/bullseye
[libgit2.git] / tests / libgit2 / status / status_helpers.c
CommitLineData
dc13f1f7
RB
1#include "clar_libgit2.h"
2#include "status_helpers.h"
3
4int cb_status__normal(
5 const char *path, unsigned int status_flags, void *payload)
6{
7 status_entry_counts *counts = payload;
8
22b6b82f
RB
9 if (counts->debug)
10 cb_status__print(path, status_flags, NULL);
11
6a0956e5 12 if (counts->entry_count >= counts->expected_entry_count)
dc13f1f7 13 counts->wrong_status_flags_count++;
6a0956e5 14 else if (strcmp(path, counts->expected_paths[counts->entry_count]))
dc13f1f7 15 counts->wrong_sorted_path++;
6a0956e5 16 else if (status_flags != counts->expected_statuses[counts->entry_count])
dc13f1f7
RB
17 counts->wrong_status_flags_count++;
18
dc13f1f7
RB
19 counts->entry_count++;
20 return 0;
21}
22
23int cb_status__count(const char *p, unsigned int s, void *payload)
24{
25 volatile int *count = (int *)payload;
26
27 GIT_UNUSED(p);
28 GIT_UNUSED(s);
29
30 (*count)++;
31
32 return 0;
33}
34
35int cb_status__single(const char *p, unsigned int s, void *payload)
36{
37 status_entry_single *data = (status_entry_single *)payload;
38
e26b14c0
RB
39 if (data->debug)
40 fprintf(stderr, "%02d: %s (%04x)\n", data->count, p, s);
dc13f1f7
RB
41
42 data->count++;
43 data->status = s;
44
45 return 0;
46}
ccfa6805
RB
47
48int cb_status__print(
49 const char *path, unsigned int status_flags, void *payload)
50{
51 char istatus = ' ', wstatus = ' ';
52 int icount = 0, wcount = 0;
53
54 if (status_flags & GIT_STATUS_INDEX_NEW) {
55 istatus = 'A'; icount++;
56 }
57 if (status_flags & GIT_STATUS_INDEX_MODIFIED) {
58 istatus = 'M'; icount++;
59 }
60 if (status_flags & GIT_STATUS_INDEX_DELETED) {
61 istatus = 'D'; icount++;
62 }
63 if (status_flags & GIT_STATUS_INDEX_RENAMED) {
64 istatus = 'R'; icount++;
65 }
66 if (status_flags & GIT_STATUS_INDEX_TYPECHANGE) {
67 istatus = 'T'; icount++;
68 }
69
70 if (status_flags & GIT_STATUS_WT_NEW) {
71 wstatus = 'A'; wcount++;
72 }
73 if (status_flags & GIT_STATUS_WT_MODIFIED) {
74 wstatus = 'M'; wcount++;
75 }
76 if (status_flags & GIT_STATUS_WT_DELETED) {
77 wstatus = 'D'; wcount++;
78 }
79 if (status_flags & GIT_STATUS_WT_TYPECHANGE) {
80 wstatus = 'T'; wcount++;
81 }
82 if (status_flags & GIT_STATUS_IGNORED) {
83 wstatus = 'I'; wcount++;
84 }
59fcebaa
AR
85 if (status_flags & GIT_STATUS_WT_UNREADABLE) {
86 wstatus = 'X'; wcount++;
87 }
ccfa6805
RB
88
89 fprintf(stderr, "%c%c %s (%d/%d%s)\n",
90 istatus, wstatus, path, icount, wcount,
91 (icount > 1 || wcount > 1) ? " INVALID COMBO" : "");
92
93 if (payload)
94 *((int *)payload) += 1;
95
96 return 0;
97}