Skip to content

Commit

Permalink
Merge pull request #156 from inaka/jfacorro.142.rock_return_only_fail…
Browse files Browse the repository at this point in the history
…ures

[Closes #142] Removed all files and rules that don't fail from rock/1 return value
  • Loading branch information
Brujo Benavides committed Oct 23, 2014
2 parents 72771eb + d6d2e4b commit ba838f5
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 8 deletions.
2 changes: 1 addition & 1 deletion src/elvis.erl
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ do_rock(Config0) ->
Results = [apply_rules(Config, File) || File <- LoadedFiles],

case elvis_result:status(Results) of
fail -> {fail, Results};
fail -> {fail, elvis_result:clean(Results)};
ok -> ok
end.

Expand Down
27 changes: 26 additions & 1 deletion src/elvis_result.erl
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
new/3,
new/4,
status/1,
clean/1,
print/1
]).

Expand Down Expand Up @@ -122,7 +123,7 @@ print(#{message := Msg, info := Info}) ->
print(#{error_msg := Msg, info := Info}) ->
elvis_utils:error_prn(Msg, Info).

-spec status([rule()]) -> ok | fail.
-spec status([file() | rule()]) -> ok | fail.
status([]) ->
ok;
status([#{rules := Rules} | Files]) ->
Expand All @@ -134,3 +135,27 @@ status([#{items := []} | Rules]) ->
status(Rules);
status(_Rules) ->
fail.


%% @doc Removes files that don't have any failures.
-spec clean([file() | rule()]) -> [file() | rule()].
clean(Files)->
clean(Files, []).

%% @private
-spec clean([file() | rule()], [file() | rule()]) -> [file() | rule()].
clean([], Result) ->
lists:reverse(Result);
clean([#{rules := []} | Files], Result) ->
clean(Files, Result);
clean([File = #{rules := Rules, file := FileInfo} | Files], Result) ->
CleanRules = clean(Rules),
FileInfo1 = maps:remove(content, FileInfo),
FileInfo2 = maps:remove(parse_tree, FileInfo1),
NewFile = File#{rules => CleanRules,
file => FileInfo2},
clean(Files, [NewFile | Result]);
clean([#{items := []} | Rules], Result) ->
clean(Rules, Result);
clean([Rule | Rules], Result) ->
clean(Rules, [Rule | Result]).
6 changes: 0 additions & 6 deletions test/elvis_SUITE.erl
Original file line number Diff line number Diff line change
Expand Up @@ -361,12 +361,6 @@ check_some_line_output(Fun, Expected, FilterFun) ->
ListFun = fun(Line) -> FilterFun(Line, Expected) end,
[_ | _] = lists:filter(ListFun, Lines).

check_first_line_output(Fun, Expected) ->
Equals = fun(Result, Exp) ->
Result == Exp
end,
check_first_line_output(Fun, Expected, Equals).

check_first_line_output(Fun, Expected, FilterFun) ->
ct:capture_start(),
Fun(),
Expand Down

0 comments on commit ba838f5

Please sign in to comment.