From 3e12630f2342fee628afd3112cc77fd769983ce3 Mon Sep 17 00:00:00 2001 From: Dave Smith Date: Tue, 7 Dec 2010 10:37:29 -0700 Subject: Check for VCS directory before attempting source update. --- src/rebar_deps.erl | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/rebar_deps.erl b/src/rebar_deps.erl index 317814f..794e423 100644 --- a/src/rebar_deps.erl +++ b/src/rebar_deps.erl @@ -297,11 +297,21 @@ download_source(AppDir, {svn, Url, Rev}) -> filename:dirname(AppDir)). update_source(Dep) -> - ?CONSOLE("Updating ~p from ~p\n", [Dep#dep.app, Dep#dep.source]), - require_source_engine(Dep#dep.source), - update_source(filename:join(get_deps_dir(), Dep#dep.app), - Dep#dep.source), - Dep. + %% It's possible when updating a source, that a given dep does not have a + %% VCS directory, such as when a source archive is built of a project, with + %% all deps already downloaded/included. So, verify that the necessary VCS + %% directory exists before attempting to do the update. + AppDir = filename:join(get_deps_dir(), Dep#dep.app), + case has_vcs_dir(element(1, Dep#dep.source), AppDir) of + true -> + ?CONSOLE("Updating ~p from ~p\n", [Dep#dep.app, Dep#dep.source]), + require_source_engine(Dep#dep.source), + update_source(AppDir, Dep#dep.source), + Dep; + false -> + ?WARN("Skipping update for ~p: no VCS directory available!\n", [Dep]), + Dep + end. update_source(AppDir, {git, _Url, {branch, Branch}}) -> rebar_utils:sh(?FMT("git fetch origin", []), [], AppDir), @@ -358,3 +368,10 @@ scm_client_vsn(bzr) -> scm_client_vsn(rebar_utils:find_executable("bzr"), " --version", "Bazaar \\(bzr\\) (\\d+).(\\d+)"); scm_client_vsn(svn) -> scm_client_vsn(rebar_utils:find_executable("svn"), " --version", "svn, version (\\d+).(\\d+)"). + +has_vcs_dir(git, Dir) -> + filelib:is_dir(filename:join(Dir, ".git")); +has_vcs_dir(hg, Dir) -> + filelib:is_dir(filename:join(Dir, ".hg")); +has_vcs_dir(_, _) -> + true. -- cgit v1.1 From 07269ebdb9bf814e454c1bf8333215c3d0282add Mon Sep 17 00:00:00 2001 From: Tuncer Ayaz Date: Tue, 7 Dec 2010 19:32:58 +0100 Subject: Add VCS dir check for bzr and svn --- src/rebar_deps.erl | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src') diff --git a/src/rebar_deps.erl b/src/rebar_deps.erl index 794e423..0852b01 100644 --- a/src/rebar_deps.erl +++ b/src/rebar_deps.erl @@ -373,5 +373,10 @@ has_vcs_dir(git, Dir) -> filelib:is_dir(filename:join(Dir, ".git")); has_vcs_dir(hg, Dir) -> filelib:is_dir(filename:join(Dir, ".hg")); +has_vcs_dir(bzr, Dir) -> + filelib:is_dir(filename:join(Dir, ".bzr")); +has_vcs_dir(svn, Dir) -> + filelib:is_dir(filename:join(Dir, ".svn")) + orelse filelib:is_dir(filename:join(Dir, "_svn")); has_vcs_dir(_, _) -> true. -- cgit v1.1 From ab4e0a32ab33d43520ab2a04cc60606252404d05 Mon Sep 17 00:00:00 2001 From: Benjamin Nortier Date: Wed, 8 Dec 2010 18:12:46 +0000 Subject: Add rebar code path to common test code path --- src/rebar_ct.erl | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/rebar_ct.erl b/src/rebar_ct.erl index fc87dd3..316998f 100644 --- a/src/rebar_ct.erl +++ b/src/rebar_ct.erl @@ -130,13 +130,22 @@ make_cmd(TestDir, Config) -> Include = "" end, + %% Add the code path of the rebar process to the code path. This + %% includes the dependencies in the code path. The directories + %% that are part of the root Erlang install are filtered out to + %% avoid duplication + R = code:root_dir(), + NonLibCodeDirs = [P || P <- code:get_path(), lists:prefix(R, P) == false], + CodeDirs = [io_lib:format("\"~s\"", [Dir]) || + Dir <- [EbinDir|NonLibCodeDirs]], + CodePathString = string:join(CodeDirs, " "), Cmd = ?FMT("erl " % should we expand ERL_PATH? - " -noshell -pa \"~s\" ~s" + " -noshell -pa ~s ~s" " -s ct_run script_start -s erlang halt" " -name test@~s" " -logdir \"~s\"" " -env TEST_DIR \"~s\"", - [EbinDir, + [CodePathString, Include, net_adm:localhost(), LogDir, -- cgit v1.1 From 48ee15c7e7806b85ac16055c2719daf3297cfd9b Mon Sep 17 00:00:00 2001 From: klaar Date: Thu, 9 Dec 2010 22:41:11 +0100 Subject: Fix conversion of boolean atom to string mustache:render("{{banan}}", dict:from_list([{banan, true}])). ** exception error: no function clause matching mustache:escape(true,[]) in function erl_eval:do_apply/5 in call from erl_eval:expr/5 in call from erl_eval:expr/5 in call from mustache:render/3 --- src/mustache.erl | 2 -- 1 file changed, 2 deletions(-) (limited to 'src') diff --git a/src/mustache.erl b/src/mustache.erl index df81aed..86ef53c 100644 --- a/src/mustache.erl +++ b/src/mustache.erl @@ -190,8 +190,6 @@ to_s(Val) when is_integer(Val) -> integer_to_list(Val); to_s(Val) when is_float(Val) -> io_lib:format("~.2f", [Val]); -to_s(Val) when is_boolean(Val) -> - Val; to_s(Val) when is_atom(Val) -> atom_to_list(Val); to_s(Val) -> -- cgit v1.1