diff options
author | Björn Gustavsson <[email protected]> | 2013-01-28 13:18:08 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2013-01-31 11:14:47 +0100 |
commit | e26788bf716eab7dfbfc6a1ea000b5d428a99c40 (patch) | |
tree | 2aa05ddc33b8e71c31bbe0d9c7f64599ee138268 /lib/stdlib | |
parent | 68b804f34d4ec420d86953e3f519179a40fbee8f (diff) | |
download | otp-e26788bf716eab7dfbfc6a1ea000b5d428a99c40.tar.gz otp-e26788bf716eab7dfbfc6a1ea000b5d428a99c40.tar.bz2 otp-e26788bf716eab7dfbfc6a1ea000b5d428a99c40.zip |
Provoke basic semantic errors to improve test coverage
Diffstat (limited to 'lib/stdlib')
-rw-r--r-- | lib/stdlib/test/erl_lint_SUITE.erl | 52 |
1 files changed, 50 insertions, 2 deletions
diff --git a/lib/stdlib/test/erl_lint_SUITE.erl b/lib/stdlib/test/erl_lint_SUITE.erl index 564f27a512..056021b8aa 100644 --- a/lib/stdlib/test/erl_lint_SUITE.erl +++ b/lib/stdlib/test/erl_lint_SUITE.erl @@ -58,7 +58,8 @@ otp_8051/1, format_warn/1, on_load_successful/1, on_load_failing/1, - too_many_arguments/1 + too_many_arguments/1, + basic_errors/1 ]). % Default timetrap timeout (set in init_per_testcase). @@ -84,7 +85,7 @@ all() -> otp_5878, otp_5917, otp_6585, otp_6885, otp_10436, export_all, bif_clash, behaviour_basic, behaviour_multiple, otp_7550, otp_8051, format_warn, {group, on_load}, - too_many_arguments]. + too_many_arguments, basic_errors]. groups() -> [{unused_vars_warn, [], @@ -2971,6 +2972,53 @@ too_many_arguments(Config) when is_list(Config) -> ok. +%% Test some basic errors to improve coverage. +basic_errors(Config) -> + Ts = [{redefine_module, + <<"-module(redefine_module).">>, + [], + {errors,[{1,erl_lint,redefine_module}],[]}}, + + {attr_after_function, + <<"f() -> ok. + -attr(x).">>, + [], + {errors,[{2,erl_lint,{attribute,attr}}],[]}}, + + {redefine_function, + <<"f() -> ok. + f() -> ok.">>, + [], + {errors,[{2,erl_lint,{redefine_function,{f,0}}}],[]}}, + + {redefine_record, + <<"-record(r, {a}). + -record(r, {a}). + f(#r{}) -> ok.">>, + [], + {errors,[{2,erl_lint,{redefine_record,r}}],[]}}, + + {illegal_record_info, + <<"f1() -> record_info(42, record). + f2() -> record_info(shoe_size, record).">>, + [], + {errors,[{1,erl_lint,illegal_record_info}, + {2,erl_lint,illegal_record_info}],[]}}, + + {illegal_expr, + <<"f() -> a:b.">>, + [], + {errors,[{1,erl_lint,illegal_expr}],[]}}, + + {illegal_pattern, + <<"f(A+B) -> ok.">>, + [], + {errors,[{1,erl_lint,illegal_pattern}],[]}} + ], + [] = run(Config, Ts), + ok. + + run(Config, Tests) -> F = fun({N,P,Ws,E}, BadL) -> case catch run_test(Config, P, Ws) of |