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

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({: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
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