aboutsummaryrefslogtreecommitdiffstats
path: root/lib/compiler/test/compile_SUITE.erl
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2012-01-11 08:23:36 +0100
committerBjörn Gustavsson <[email protected]>2012-01-11 08:23:36 +0100
commitbb312f5fb5748fef90f57ccb387f1c32a729f086 (patch)
tree18a43561160eba91005cf3f34c6c211ed3bc8c98 /lib/compiler/test/compile_SUITE.erl
parent3ee63ae7b498a1d7d232b0dcdcffb7f7f30c9579 (diff)
parent3a6963f4f79adf75adc098a8e7e5ed7ac5fff46b (diff)
downloadotp-bb312f5fb5748fef90f57ccb387f1c32a729f086.tar.gz
otp-bb312f5fb5748fef90f57ccb387f1c32a729f086.tar.bz2
otp-bb312f5fb5748fef90f57ccb387f1c32a729f086.zip
Merge branch 'bjorn/compiler/tests' into maint
* bjorn/compiler/tests: compile_SUITE: Add test of 'sys_pre_attributes' Correct syntax in compiler.cover Cover v3_kernel:get_line/1 core_SUITE: Cover the nomatch_shadow warning in v3_kernel core_SUITE: Cover v3_kernel:build_match/2 bs_match_SUITE: Add a test case to cover bsm_ensure_no_partition_2/5 core_fold_SUITE: Cover sys_core_fold:is_safe_bool_expr_1/3 core_SUITE: Cover sys_core_fold:eval_is_boolean/2 core_SUITE: Cover sys_core_fold:make_effect_seq/2 beam_validator_SUITE:beam_files/1: Validate modules in parallel compilation_SUITE: Compile compiler modules in parallel compilation_SUITE: Prevent cover from being run on slave nodes test_lib:p_run/2: Be careful about how many parallel processes we use Remove part_eval_SUITE
Diffstat (limited to 'lib/compiler/test/compile_SUITE.erl')
-rw-r--r--lib/compiler/test/compile_SUITE.erl37
1 files changed, 35 insertions, 2 deletions
diff --git a/lib/compiler/test/compile_SUITE.erl b/lib/compiler/test/compile_SUITE.erl
index fedbd98f71..32d53add53 100644
--- a/lib/compiler/test/compile_SUITE.erl
+++ b/lib/compiler/test/compile_SUITE.erl
@@ -29,7 +29,8 @@
binary/1, makedep/1, cond_and_ifdef/1, listings/1, listings_big/1,
other_output/1, package_forms/1, encrypted_abstr/1,
bad_record_use1/1, bad_record_use2/1, strict_record/1,
- missing_testheap/1, cover/1, env/1, core/1, asm/1]).
+ missing_testheap/1, cover/1, env/1, core/1, asm/1,
+ sys_pre_attributes/1]).
-export([init/3]).
@@ -45,7 +46,8 @@ all() ->
binary, makedep, cond_and_ifdef, listings, listings_big,
other_output, package_forms, encrypted_abstr,
{group, bad_record_use}, strict_record,
- missing_testheap, cover, env, core, asm].
+ missing_testheap, cover, env, core, asm,
+ sys_pre_attributes].
groups() ->
[{bad_record_use, [],
@@ -785,6 +787,37 @@ do_asm(Beam, Outdir) ->
error
end.
+sys_pre_attributes(Config) ->
+ DataDir = ?config(data_dir, Config),
+ File = filename:join(DataDir, "attributes.erl"),
+ Mod = attributes,
+ CommonOpts = [binary,report,verbose,
+ {parse_transform,sys_pre_attributes}],
+ PreOpts = [{attribute,delete,deleted}],
+ PostOpts = [{attribute,insert,inserted,"value"}],
+ PrePostOpts = [{attribute,replace,replaced,42},
+ {attribute,replace,replace_nonexisting,new}],
+ {ok,Mod,Code} = compile:file(File, PrePostOpts ++ PreOpts ++
+ PostOpts ++ CommonOpts),
+ code:load_binary(Mod, File, Code),
+ Attr = Mod:module_info(attributes),
+ io:format("~p", [Attr]),
+ {inserted,"value"} = lists:keyfind(inserted, 1, Attr),
+ {replaced,[42]} = lists:keyfind(replaced, 1, Attr),
+ {replace_nonexisting,[new]} = lists:keyfind(replace_nonexisting, 1, Attr),
+ false = lists:keymember(deleted, 1, Attr),
+
+ %% Cover more code.
+ {ok,Mod,_} = compile:file(File, PostOpts ++ CommonOpts),
+ {ok,Mod,_} = compile:file(File, CommonOpts -- [verbose]),
+ {ok,Mod,_} = compile:file(File, PreOpts ++ CommonOpts),
+ {ok,Mod,_} = compile:file(File,
+ [{attribute,replace,replaced,42}|CommonOpts]),
+ {ok,Mod,Code} = compile:file(File, PrePostOpts ++ PreOpts ++
+ PostOpts ++ CommonOpts --
+ [report,verbose]),
+ ok.
+
%%%
%%% Utilities.
%%%