Merge branch 'update-22'
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -5,3 +5,5 @@
|
||||
rebar
|
||||
ebin/
|
||||
.eunit
|
||||
.rebar/
|
||||
_build/
|
||||
@@ -30,7 +30,7 @@ geef_commit_tree(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[])
|
||||
{
|
||||
ErlNifBinary bin;
|
||||
geef_object *obj, *tree;
|
||||
ERL_NIF_TERM term_obj;
|
||||
ERL_NIF_TERM term_tree;
|
||||
|
||||
if (!enif_get_resource(env, argv[0], geef_object_type, (void **) &obj))
|
||||
return enif_make_badarg(env);
|
||||
@@ -40,13 +40,16 @@ geef_commit_tree(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[])
|
||||
if (git_commit_tree((git_tree **) &tree->obj, (git_commit *) obj->obj) < 0)
|
||||
return geef_error(env);
|
||||
|
||||
term_obj = enif_make_resource(env, obj);
|
||||
enif_release_resource(obj);
|
||||
term_tree = enif_make_resource(env, tree);
|
||||
enif_release_resource(tree);
|
||||
|
||||
if (geef_oid_bin(&bin, git_object_id(tree->obj)) < 0)
|
||||
return geef_oom(env);
|
||||
|
||||
return enif_make_tuple3(env, atoms.ok, enif_make_binary(env, &bin), term_obj);
|
||||
tree->repo = obj->repo;
|
||||
enif_keep_resource(tree->repo);
|
||||
|
||||
return enif_make_tuple3(env, atoms.ok, enif_make_binary(env, &bin), term_tree);
|
||||
}
|
||||
|
||||
ERL_NIF_TERM
|
||||
|
||||
@@ -31,7 +31,7 @@ geef_atoms atoms;
|
||||
|
||||
static int load(ErlNifEnv *env, void **priv, ERL_NIF_TERM load_info)
|
||||
{
|
||||
git_threads_init();
|
||||
git_libgit2_init();
|
||||
|
||||
geef_repository_type = enif_open_resource_type(env, NULL,
|
||||
"repository_type", geef_repository_free, ERL_NIF_RT_CREATE, NULL);
|
||||
@@ -99,7 +99,7 @@ int upgrade(ErlNifEnv* env, void** priv_data, void** old_priv_data, ERL_NIF_TERM
|
||||
|
||||
static void unload(ErlNifEnv* env, void* priv_data)
|
||||
{
|
||||
git_threads_shutdown();
|
||||
git_libgit2_shutdown();
|
||||
}
|
||||
|
||||
ERL_NIF_TERM
|
||||
|
||||
@@ -7,7 +7,8 @@ repo_test_() ->
|
||||
{foreach, fun start/0, fun stop/1, [fun bare_test/1, fun odb_write_test/1,
|
||||
fun ref_test/1, fun index_add_test/1,
|
||||
fun ref_iter_test/1, fun revparse_test/1,
|
||||
fun commit_create_test/1, fun commit_message_test/1]}.
|
||||
fun commit_create_test/1, fun commit_message_test/1,
|
||||
fun commit_tree_test/1]}.
|
||||
|
||||
start() ->
|
||||
{A, B, C} = now(),
|
||||
@@ -111,6 +112,13 @@ commit_message_test(Repo) ->
|
||||
Resp = geef_commit:message(Commit),
|
||||
[?_assertMatch({ok, <<"Commit message">>}, Resp)].
|
||||
|
||||
commit_tree_test(Repo) ->
|
||||
commit_create_test(Repo),
|
||||
CommitId = geef_oid:parse("bf968373f95f8fed2a24f9d25ebf06521359c6bc"),
|
||||
{ok, Commit} = geef_commit:lookup(Repo, CommitId),
|
||||
Resp = geef_commit:tree(Commit),
|
||||
[?_assertMatch({ok, _}, Resp)].
|
||||
|
||||
rm_r(Path) ->
|
||||
case filelib:is_dir(Path) of
|
||||
false ->
|
||||
|
||||
Reference in New Issue
Block a user