1%% 2%% %CopyrightBegin% 3%% 4%% Copyright Ericsson AB 2006-2020. All Rights Reserved. 5%% 6%% Licensed under the Apache License, Version 2.0 (the "License"); 7%% you may not use this file except in compliance with the License. 8%% You may obtain a copy of the License at 9%% 10%% http://www.apache.org/licenses/LICENSE-2.0 11%% 12%% Unless required by applicable law or agreed to in writing, software 13%% distributed under the License is distributed on an "AS IS" BASIS, 14%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15%% See the License for the specific language governing permissions and 16%% limitations under the License. 17%% 18%% %CopyrightEnd% 19%% 20-module(core_SUITE). 21 22-export([all/0, suite/0,groups/0,init_per_suite/1, end_per_suite/1, 23 init_per_group/2,end_per_group/2, 24 init_per_testcase/2,end_per_testcase/2, 25 dehydrated_itracer/1,nested_tries/1, 26 seq_in_guard/1,make_effect_seq/1,eval_is_boolean/1, 27 unsafe_case/1,nomatch_shadow/1,reversed_annos/1, 28 map_core_test/1,eval_case/1,bad_boolean_guard/1, 29 bs_shadowed_size_var/1, 30 cover_v3_kernel_1/1,cover_v3_kernel_2/1,cover_v3_kernel_3/1, 31 cover_v3_kernel_4/1,cover_v3_kernel_5/1, 32 non_variable_apply/1,name_capture/1,fun_letrec_effect/1, 33 get_map_element/1]). 34 35-include_lib("common_test/include/ct.hrl"). 36 37-define(comp(N), 38 N(Config) when is_list(Config) -> try_it(N, Config)). 39 40init_per_testcase(Case, Config) when is_atom(Case), is_list(Config) -> 41 Config. 42 43end_per_testcase(Case, Config) when is_atom(Case), is_list(Config) -> 44 ok. 45 46suite() -> 47 [{ct_hooks,[ts_install_cth]}, 48 {timetrap,{minutes,5}}]. 49 50all() -> 51 [{group,p}]. 52 53groups() -> 54 [{p,test_lib:parallel(), 55 [dehydrated_itracer,nested_tries,seq_in_guard,make_effect_seq, 56 eval_is_boolean,unsafe_case,nomatch_shadow,reversed_annos, 57 map_core_test,eval_case,bad_boolean_guard, 58 bs_shadowed_size_var, 59 cover_v3_kernel_1,cover_v3_kernel_2,cover_v3_kernel_3, 60 cover_v3_kernel_4,cover_v3_kernel_5, 61 non_variable_apply,name_capture,fun_letrec_effect, 62 get_map_element 63 ]}]. 64 65 66init_per_suite(Config) -> 67 test_lib:recompile(?MODULE), 68 Config. 69 70end_per_suite(_Config) -> 71 ok. 72 73init_per_group(_GroupName, Config) -> 74 Config. 75 76end_per_group(_GroupName, Config) -> 77 Config. 78 79 80?comp(dehydrated_itracer). 81?comp(nested_tries). 82?comp(seq_in_guard). 83?comp(make_effect_seq). 84?comp(eval_is_boolean). 85?comp(unsafe_case). 86?comp(nomatch_shadow). 87?comp(reversed_annos). 88?comp(map_core_test). 89?comp(eval_case). 90?comp(bad_boolean_guard). 91?comp(bs_shadowed_size_var). 92?comp(cover_v3_kernel_1). 93?comp(cover_v3_kernel_2). 94?comp(cover_v3_kernel_3). 95?comp(cover_v3_kernel_4). 96?comp(cover_v3_kernel_5). 97?comp(non_variable_apply). 98?comp(name_capture). 99?comp(fun_letrec_effect). 100?comp(get_map_element). 101 102try_it(Mod, Conf) -> 103 Src = filename:join(proplists:get_value(data_dir, Conf), 104 atom_to_list(Mod)), 105 compile_and_load(Src, []), 106 compile_and_load(Src, [no_copt]). 107 108compile_and_load(Src, Opts) -> 109 {ok,Mod,Bin} = compile:file(Src, [from_core,report,time,binary|Opts]), 110 {module,Mod} = code:load_binary(Mod, Mod, Bin), 111 ok = Mod:Mod(), 112 _ = code:delete(Mod), 113 _ = code:purge(Mod), 114 ok. 115