Wrap ref creation in elixir

This commit is contained in:
Carlos Martín Nieto
2013-09-04 01:16:50 +02:00
parent ee1d719ef4
commit 72078cb099
3 changed files with 50 additions and 0 deletions

View File

@@ -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

View File

@@ -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
View 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