diff options
-rw-r--r-- | src/rebar_prv_unlock.erl | 13 | ||||
-rw-r--r-- | test/rebar_unlock_SUITE.erl | 7 |
2 files changed, 13 insertions, 7 deletions
diff --git a/src/rebar_prv_unlock.erl b/src/rebar_prv_unlock.erl index 51c57ab..8480991 100644 --- a/src/rebar_prv_unlock.erl +++ b/src/rebar_prv_unlock.erl @@ -49,8 +49,8 @@ do(State) -> {ok, _} -> Locks = rebar_config:consult_lock_file(LockFile), case handle_unlocks(State, Locks, LockFile) of - ok -> - {ok, State}; + {ok, NewLocks} -> + {ok, rebar_state:set(State, {locks, default}, NewLocks)}; {error, Reason} -> ?PRV_ERROR({file,Reason}) end @@ -69,11 +69,14 @@ handle_unlocks(State, Locks, LockFile) -> Names = parse_names(rebar_utils:to_binary(proplists:get_value(package, Args, <<"">>))), case [Lock || Lock = {Name, _, _} <- Locks, not lists:member(Name, Names)] of [] -> - file:delete(LockFile); + file:delete(LockFile), + {ok, []}; _ when Names =:= [] -> % implicitly all locks - file:delete(LockFile); + file:delete(LockFile), + {ok, []}; NewLocks -> - rebar_config:write_lock_file(LockFile, NewLocks) + rebar_config:write_lock_file(LockFile, NewLocks), + {ok, NewLocks} end. parse_names(Bin) -> diff --git a/test/rebar_unlock_SUITE.erl b/test/rebar_unlock_SUITE.erl index 8dbdb3a..b2c0205 100644 --- a/test/rebar_unlock_SUITE.erl +++ b/test/rebar_unlock_SUITE.erl @@ -42,8 +42,10 @@ unlock(Config) -> Locks = read_locks(Config), rebar_test_utils:run_and_check(Config, [], ["unlock", "fakeapp"], {ok, []}), Locks = read_locks(Config), - rebar_test_utils:run_and_check(Config, [], ["unlock", "uuid"], {ok, []}), + {ok, State} = rebar_test_utils:run_and_check(Config, [], ["unlock", "uuid"], return), ?assertEqual(Locks -- ["uuid"], read_locks(Config)), + ?assert(false =:= lists:keyfind(<<"uuid">>, 1, rebar_state:get(State, {locks, default}))), + ?assert(false =/= lists:keyfind(<<"itc">>, 1, rebar_state:get(State, {locks, default}))), rebar_test_utils:run_and_check(Config, [], ["unlock", "gproc,itc"], {ok, []}), ?assertEqual(Locks -- ["uuid","gproc","itc"], read_locks(Config)), rebar_test_utils:run_and_check(Config, [], ["unlock", string:join(Locks,",")], {ok, []}), @@ -52,8 +54,9 @@ unlock(Config) -> unlock_all(Config) -> [_|_] = read_locks(Config), - rebar_test_utils:run_and_check(Config, [], ["unlock"], {ok, []}), + {ok, State} = rebar_test_utils:run_and_check(Config, [], ["unlock"], return), ?assertEqual({error, enoent}, read_locks(Config)), + ?assertEqual([], rebar_state:get(State, {locks, default})), ok. read_locks(Config) -> |