From 72078cb099a42f63ce00d4d0a291d736fa500578 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Wed, 4 Sep 2013 01:16:50 +0200 Subject: [PATCH] Wrap ref creation in elixir --- lib/geef.ex | 1 + lib/geef/reference.ex | 13 +++++++++++++ test/reference_test.exs | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 test/reference_test.exs diff --git a/lib/geef.ex b/lib/geef.ex index 4442097..7c231aa 100644 --- a/lib/geef.ex +++ b/lib/geef.ex @@ -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 diff --git a/lib/geef/reference.ex b/lib/geef/reference.ex index d4775f7..1cce3fb 100644 --- a/lib/geef/reference.ex +++ b/lib/geef/reference.ex @@ -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 diff --git a/test/reference_test.exs b/test/reference_test.exs new file mode 100644 index 0000000..3eab212 --- /dev/null +++ b/test/reference_test.exs @@ -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