Wrap ref creation in elixir
This commit is contained in:
@@ -4,6 +4,7 @@ defmodule Geef do
|
|||||||
quote do
|
quote do
|
||||||
alias Geef.Repository
|
alias Geef.Repository
|
||||||
alias Geef.Odb
|
alias Geef.Odb
|
||||||
|
alias Geef.Oid
|
||||||
alias Geef.Reference
|
alias Geef.Reference
|
||||||
alias Geef.Object
|
alias Geef.Object
|
||||||
alias Geef.Commit
|
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({:ok, ref}), do: {:ok, Reference.from_erl ref}
|
||||||
defp maybe_ref(err = {:error, _}), do: err
|
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: :geef_ref.lookup(repo, name) |> maybe_ref
|
||||||
def lookup!(repo, name), do: lookup(repo, name) |> assert_ok
|
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