]>
git.proxmox.com Git - libgit2.git/blob - tests/odb/backend/nonrefreshing.c
ede48ade66e586cb19ba211f33c43e466068e2e1
1 #include "clar_libgit2.h"
2 #include "repository.h"
3 #include "backend_helpers.h"
5 static git_repository
*_repo
;
6 static fake_backend
*_fake
;
8 #define NONEXISTING_HASH "deadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
9 #define EXISTING_HASH "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"
11 static const fake_object _objects
[] = {
12 { EXISTING_HASH
, "" },
16 static git_oid _nonexisting_oid
;
17 static git_oid _existing_oid
;
19 static void setup_repository_and_backend(void)
22 git_odb_backend
*backend
= NULL
;
24 _repo
= cl_git_sandbox_init("testrepo.git");
26 cl_git_pass(build_fake_backend(&backend
, _objects
));
28 cl_git_pass(git_repository_odb__weakptr(&odb
, _repo
));
29 cl_git_pass(git_odb_add_backend(odb
, backend
, 10));
31 _fake
= (fake_backend
*)backend
;
34 void test_odb_backend_nonrefreshing__initialize(void)
36 git_oid_fromstr(&_nonexisting_oid
, NONEXISTING_HASH
);
37 git_oid_fromstr(&_existing_oid
, EXISTING_HASH
);
38 setup_repository_and_backend();
41 void test_odb_backend_nonrefreshing__cleanup(void)
43 cl_git_sandbox_cleanup();
46 void test_odb_backend_nonrefreshing__exists_is_invoked_once_on_failure(void)
50 cl_git_pass(git_repository_odb__weakptr(&odb
, _repo
));
51 cl_assert_equal_b(false, git_odb_exists(odb
, &_nonexisting_oid
));
53 cl_assert_equal_i(1, _fake
->exists_calls
);
56 void test_odb_backend_nonrefreshing__read_is_invoked_once_on_failure(void)
61 git_object_lookup(&obj
, _repo
, &_nonexisting_oid
, GIT_OBJECT_ANY
),
64 cl_assert_equal_i(1, _fake
->read_calls
);
67 void test_odb_backend_nonrefreshing__readprefix_is_invoked_once_on_failure(void)
72 git_object_lookup_prefix(&obj
, _repo
, &_nonexisting_oid
, 7, GIT_OBJECT_ANY
),
75 cl_assert_equal_i(1, _fake
->read_prefix_calls
);
78 void test_odb_backend_nonrefreshing__readheader_is_invoked_once_on_failure(void)
84 cl_git_pass(git_repository_odb__weakptr(&odb
, _repo
));
87 git_odb_read_header(&len
, &type
, odb
, &_nonexisting_oid
),
90 cl_assert_equal_i(1, _fake
->read_header_calls
);
93 void test_odb_backend_nonrefreshing__exists_is_invoked_once_on_success(void)
97 cl_git_pass(git_repository_odb__weakptr(&odb
, _repo
));
98 cl_assert_equal_b(true, git_odb_exists(odb
, &_existing_oid
));
100 cl_assert_equal_i(1, _fake
->exists_calls
);
103 void test_odb_backend_nonrefreshing__read_is_invoked_once_on_success(void)
107 cl_git_pass(git_object_lookup(&obj
, _repo
, &_existing_oid
, GIT_OBJECT_ANY
));
109 cl_assert_equal_i(1, _fake
->read_calls
);
111 git_object_free(obj
);
114 void test_odb_backend_nonrefreshing__readprefix_is_invoked_once_on_success(void)
118 cl_git_pass(git_object_lookup_prefix(&obj
, _repo
, &_existing_oid
, 7, GIT_OBJECT_ANY
));
120 cl_assert_equal_i(1, _fake
->read_prefix_calls
);
122 git_object_free(obj
);
125 void test_odb_backend_nonrefreshing__readheader_is_invoked_once_on_success(void)
131 cl_git_pass(git_repository_odb__weakptr(&odb
, _repo
));
133 cl_git_pass(git_odb_read_header(&len
, &type
, odb
, &_existing_oid
));
135 cl_assert_equal_i(1, _fake
->read_header_calls
);
138 void test_odb_backend_nonrefreshing__read_is_invoked_once_when_revparsing_a_full_oid(void)
143 git_revparse_single(&obj
, _repo
, "deadbeefdeadbeefdeadbeefdeadbeefdeadbeef"),
146 cl_assert_equal_i(1, _fake
->read_calls
);