Skip to content
This repository has been archived by the owner on Oct 8, 2020. It is now read-only.

Commit

Permalink
Merge 9aecbb8 into f83ccd8
Browse files Browse the repository at this point in the history
  • Loading branch information
scouten committed Jul 23, 2019
2 parents f83ccd8 + 9aecbb8 commit cf04344
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 5 deletions.
19 changes: 14 additions & 5 deletions lib/xgit/repository/on_disk.ex
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,20 @@ defmodule Xgit.Repository.OnDisk do

@impl true
def init(opts) when is_list(opts) do
work_dir = Keyword.get(opts, :work_dir)

if is_binary(work_dir),
do: {:ok, %{work_dir: work_dir}},
else: {:stop, :missing_arguments}
# TO DO: Be smarter about bare repos and non-standard git_dir locations.
# https://github.com/elixir-git/xgit/issues/44

with {:work_dir_arg, work_dir} when is_binary(work_dir) <-
{:work_dir_arg, Keyword.get(opts, :work_dir)},
{:work_dir, true} <- {:work_dir, File.dir?(work_dir)},
git_dir <- Path.join(work_dir, ".git"),
{:git_dir, true} <- {:git_dir, File.dir?(git_dir)} do
{:ok, %{work_dir: work_dir, git_dir: git_dir}}
else
{:work_dir_arg, _} -> {:stop, :missing_arguments}
{:work_dir, _} -> {:stop, :work_dir_doesnt_exist}
{:git_dir, _} -> {:stop, :git_dir_doesnt_exist}
end
end

@doc ~S"""
Expand Down
16 changes: 16 additions & 0 deletions test/xgit/repository/on_disk_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,21 @@ defmodule Xgit.Repository.OnDiskTest do
Process.flag(:trap_exit, true)
assert {:error, :missing_arguments} = OnDisk.start_link([])
end

test "error: work_dir doesn't exist", %{xgit: xgit} do
Process.flag(:trap_exit, true)

assert {:error, :work_dir_doesnt_exist} =
OnDisk.start_link(work_dir: Path.join(xgit, "random"))
end

test "error: git_dir doesn't exist", %{xgit: xgit} do
Process.flag(:trap_exit, true)

temp_dir = Path.join(xgit, "blah")
File.mkdir_p!(temp_dir)

assert {:error, :git_dir_doesnt_exist} = OnDisk.start_link(work_dir: temp_dir)
end
end
end

0 comments on commit cf04344

Please sign in to comment.