Skip to content

Commit 904307a

Browse files
committed
tests: add tests for the mempack ODB backend
Our mempack ODB backend has no test coverage at all right now. Add a simple test suite to at least have some coverage of the most basic operations on the ODB.
1 parent 72e6034 commit 904307a

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

tests/odb/backend/mempack.c

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#include "clar_libgit2.h"
2+
#include "repository.h"
3+
#include "backend_helpers.h"
4+
#include "git2/sys/mempack.h"
5+
6+
static git_odb *_odb;
7+
static git_oid _oid;
8+
static git_odb_object *_obj;
9+
static git_repository *_repo;
10+
11+
void test_odb_backend_mempack__initialize(void)
12+
{
13+
git_odb_backend *backend;
14+
15+
cl_git_pass(git_mempack_new(&backend));
16+
cl_git_pass(git_odb_new(&_odb));
17+
cl_git_pass(git_odb_add_backend(_odb, backend, 10));
18+
cl_git_pass(git_repository_wrap_odb(&_repo, _odb));
19+
}
20+
21+
void test_odb_backend_mempack__cleanup(void)
22+
{
23+
git_odb_object_free(_obj);
24+
git_odb_free(_odb);
25+
git_repository_free(_repo);
26+
}
27+
28+
void test_odb_backend_mempack__write_succeeds(void)
29+
{
30+
const char *data = "data";
31+
cl_git_pass(git_odb_write(&_oid, _odb, data, strlen(data) + 1, GIT_OBJ_BLOB));
32+
cl_git_pass(git_odb_read(&_obj, _odb, &_oid));
33+
}
34+
35+
void test_odb_backend_mempack__read_of_missing_object_fails(void)
36+
{
37+
cl_git_pass(git_oid_fromstr(&_oid, "f6ea0495187600e7b2288c8ac19c5886383a4633"));
38+
cl_git_fail_with(GIT_ENOTFOUND, git_odb_read(&_obj, _odb, &_oid));
39+
}
40+
41+
void test_odb_backend_mempack__exists_of_missing_object_fails(void)
42+
{
43+
cl_git_pass(git_oid_fromstr(&_oid, "f6ea0495187600e7b2288c8ac19c5886383a4633"));
44+
cl_assert(git_odb_exists(_odb, &_oid) == 0);
45+
}
46+
47+
void test_odb_backend_mempack__exists_with_existing_objects_succeeds(void)
48+
{
49+
const char *data = "data";
50+
cl_git_pass(git_odb_write(&_oid, _odb, data, strlen(data) + 1, GIT_OBJ_BLOB));
51+
cl_assert(git_odb_exists(_odb, &_oid) == 1);
52+
}

0 commit comments

Comments
 (0)