Wrap ref creation in elixir
This commit is contained in:
@@ -4,6 +4,7 @@ defmodule Geef do
|
||||
quote do
|
||||
alias Geef.Repository
|
||||
alias Geef.Odb
|
||||
alias Geef.Oid
|
||||
alias Geef.Reference
|
||||
alias Geef.Object
|
||||
alias Geef.Commit
|
||||
|
||||
@@ -8,6 +8,19 @@ defrecord Geef.Reference, Record.extract(:geef_reference, from: "src/geef_record
|
||||
defp maybe_ref({:ok, ref}), do: {:ok, Reference.from_erl ref}
|
||||
defp maybe_ref(err = {:error, _}), do: err
|
||||
|
||||
def create(repo, name, target, force // :false) do
|
||||
:geef_ref.create(repo, name, target, force) |> maybe_ref
|
||||
end
|
||||
def create!(repo, name, target, force // :false) do
|
||||
create(repo, name, target, force) |> assert_ok
|
||||
end
|
||||
def create_symbolic(repo, name, target, force // :false) do
|
||||
:geef_ref.create(repo, name, target, force) |> maybe_ref
|
||||
end
|
||||
def create_symbolic!(repo, name, target, force // :false) do
|
||||
create(repo, name, target, force) |> assert_ok
|
||||
end
|
||||
|
||||
def lookup(repo, name), do: :geef_ref.lookup(repo, name) |> maybe_ref
|
||||
def lookup!(repo, name), do: lookup(repo, name) |> assert_ok
|
||||
|
||||
|
||||
36
test/reference_test.exs
Normal file
36
test/reference_test.exs
Normal file
@@ -0,0 +1,36 @@
|
||||
Code.require_file "../test_helper.exs", __FILE__
|
||||
|
||||
defmodule ReferenceTest do
|
||||
use ExUnit.Case
|
||||
use Geef
|
||||
import RepoHelpers
|
||||
|
||||
setup do
|
||||
{{:ok, repo}, path} = tmp_bare()
|
||||
{:ok, [repo: repo, path: path]}
|
||||
end
|
||||
|
||||
teardown meta do
|
||||
Repository.stop(meta[:repo])
|
||||
File.rm_rf!(meta[:path])
|
||||
:ok
|
||||
end
|
||||
|
||||
test "creating and looking up", meta do
|
||||
repo = meta[:repo]
|
||||
{ :ok, odb } = Repository.odb(repo)
|
||||
content = "I'm some content"
|
||||
{:ok, id} = Odb.write(odb, content, :blob)
|
||||
|
||||
refname = "refs/tags/foo"
|
||||
{:ok, ref} = Reference.create(repo, refname, id)
|
||||
{:ok, looked_up} = Reference.lookup(repo, refname)
|
||||
ref == looked_up
|
||||
|
||||
refname = "refs/tags/foo2"
|
||||
{:ok, ref} = Reference.create_symbolic(repo, refname, id)
|
||||
{:ok, looked_up} = Reference.lookup(repo, refname)
|
||||
ref == looked_up
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user