1# Copyright (c) 2023 Huawei Device Co., Ltd. 2# Licensed under the Apache License, Version 2.0 (the "License"); 3# you may not use this file except in compliance with the License. 4# You may obtain a copy of the License at 5# 6# http://www.apache.org/licenses/LICENSE-2.0 7# 8# Unless required by applicable law or agreed to in writing, software 9# distributed under the License is distributed on an "AS IS" BASIS, 10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11# See the License for the specific language governing permissions and 12# limitations under the License. 13 14import("//arkcompiler/ets_frontend/es2panda/es2abc_config.gni") 15import("//arkcompiler/runtime_core/ark_config.gni") 16import("$ark_root/tests/test_helper.gni") 17 18disasm_test_configs = [ 19 "$ark_root:ark_config", 20 "$ark_root/libpandabase:arkbase_public_config", 21 "$ark_root/libpandafile:arkfile_public_config", 22 sdk_libc_secshared_config, 23] 24 25disasm_test_deps = [ 26 "$ark_root/disassembler:arkdisassembler", 27 "$ark_root/libpandabase:libarkbase_static", 28 "$ark_root/libpandafile:libarkfile_static", 29] 30 31disasm_column_test_js_files = [ 32 "column-number1", 33 "column-number2", 34 "column-number3", 35 "column-number4", 36 "column-number5", 37 "column-number6", 38 "line-number1", 39 "line-number2", 40 "line-number3", 41 "line-number4", 42 "line-number5", 43] 44 45disasm_line_release_test_ts_files = [ "line_number_release" ] 46 47disasm_test_js_files = [ 48 "slot-number-annotation", 49 "script-string1", 50 "script-string2", 51] 52 53test_js_path = "//arkcompiler/runtime_core/disassembler/tests/js/" 54 55foreach(file, disasm_column_test_js_files) { 56 es2abc_gen_abc("gen_${file}_abc") { 57 test_js = "${test_js_path}${file}.js" 58 test_abc = "$target_out_dir/${file}.abc" 59 src_js = rebase_path(test_js) 60 dst_file = rebase_path(test_abc) 61 extra_args = [ 62 "--debug", 63 "--module", 64 ] 65 in_puts = [ test_js ] 66 out_puts = [ test_abc ] 67 } 68} 69 70test_ts_path = "//arkcompiler/runtime_core/disassembler/tests/ts/" 71 72foreach(file, disasm_line_release_test_ts_files) { 73 es2abc_gen_abc("gen_${file}_abc") { 74 test_ts = "${test_ts_path}${file}.ts" 75 test_abc = "$target_out_dir/${file}.abc" 76 src_js = rebase_path(test_ts) 77 dst_file = rebase_path(test_abc) 78 extra_args = [ "--module" ] 79 in_puts = [ test_ts ] 80 out_puts = [ test_abc ] 81 } 82} 83 84disasm_annotation_test_files = [ 85 "declaration-3d-array-boolean", 86 "declaration-3d-array-enum-number", 87 "declaration-3d-array-enum-string", 88 "declaration-3d-array-number", 89 "declaration-3d-array-string", 90 "declaration-array-boolean", 91 "declaration-array-enum-number", 92 "declaration-array-enum-string", 93 "declaration-array-number", 94 "declaration-array-string", 95 "declaration-boolean", 96 "declaration-combination", 97 "declaration-empty", 98 "declaration-enum-number", 99 "declaration-enum-string", 100 "declaration-number", 101 "declaration-string", 102 "declaration-usage-3d-array-boolean", 103 "declaration-usage-3d-array-enum-number", 104 "declaration-usage-3d-array-enum-string", 105 "declaration-usage-3d-array-number", 106 "declaration-usage-3d-array-string", 107 "declaration-usage-array-boolean", 108 "declaration-usage-array-enum-number", 109 "declaration-usage-array-enum-string", 110 "declaration-usage-array-number", 111 "declaration-usage-array-string", 112 "declaration-usage-boolean", 113 "declaration-usage-combination", 114 "declaration-usage-empty", 115 "declaration-usage-enum-number", 116 "declaration-usage-enum-string", 117 "declaration-usage-number", 118 "declaration-usage-string", 119 "export", 120 "import-qualified", 121 "import-unqualified", 122 "multiple-annotations", 123] 124 125test_annotation_path = 126 "//arkcompiler/runtime_core/disassembler/tests/annotations/" 127 128foreach(file, disasm_annotation_test_files) { 129 es2abc_gen_abc("gen_${file}_abc") { 130 test_ts = "${test_annotation_path}${file}.ts" 131 test_abc = "$target_out_dir/${file}.abc" 132 src_js = rebase_path(test_ts) 133 dst_file = rebase_path(test_abc) 134 extra_args = [ 135 "--enable-annotations", 136 "--module", 137 "--merge-abc", 138 ] 139 in_puts = [ test_ts ] 140 out_puts = [ test_abc ] 141 } 142} 143 144disasm_module_test_js_files = [ 145 "module-requests-annotation-import", 146 "module-regular-import", 147 "module-namespace-import", 148 "module-local-export", 149 "module-indirect-export", 150 "module-start-export", 151 "module-regular-import-local-export", 152] 153 154module_test_js_path = "//arkcompiler/runtime_core/disassembler/tests/module/" 155 156foreach(file, disasm_module_test_js_files) { 157 es2abc_gen_abc("gen_${file}_abc") { 158 test_js = "${module_test_js_path}${file}.js" 159 test_abc = "$target_out_dir/${file}.abc" 160 src_js = rebase_path(test_js) 161 162 dst_file = rebase_path(test_abc) 163 extra_args = [ 164 "--module", 165 "--merge-abc", 166 ] 167 in_puts = [ test_js ] 168 out_puts = [ test_abc ] 169 } 170} 171 172foreach(file, disasm_test_js_files) { 173 es2abc_gen_abc("gen_${file}_abc") { 174 test_js = "${test_js_path}${file}.js" 175 test_abc = "$target_out_dir/${file}.abc" 176 src_js = rebase_path(test_js) 177 178 dst_file = rebase_path(test_abc) 179 in_puts = [ test_js ] 180 out_puts = [ test_abc ] 181 } 182} 183 184disasm_include_dirs = [ 185 "$ark_root/disassembler", 186 "$ark_root/assembler", 187 "$target_gen_dir", 188 "$target_gen_dir/../", 189 "$target_gen_dir/../../assembler", 190] 191 192script_sources = [ 193 "disassembler_column_number_test.cpp", 194 "disassembler_get_file_name_test.cpp", 195 "disassembler_line_number_test.cpp", 196 "disassembler_string_test.cpp", 197 "disassembler_system_annotations_test.cpp", 198] 199 200module_sources = [ 201 "disassembler_module_literal_test.cpp", 202 "disassembler_system_annotations_test.cpp", 203] 204 205host_unittest_action("DisasmModuleTest") { 206 module_out_path = module_output_path 207 sources = module_sources 208 include_dirs = disasm_include_dirs 209 configs = disasm_test_configs 210 deps = disasm_test_deps 211 test_abc_dir = rebase_path(target_out_dir) 212 defines = [ "GRAPH_TEST_ABC_DIR=\"${test_abc_dir}/\"" ] 213 214 foreach(file, disasm_module_test_js_files) { 215 deps += [ ":gen_${file}_abc" ] 216 } 217} 218 219host_unittest_action("DisasmDebugTest") { 220 module_out_path = module_output_path 221 sources = script_sources 222 include_dirs = disasm_include_dirs 223 configs = disasm_test_configs 224 deps = disasm_test_deps 225 test_abc_dir = rebase_path(target_out_dir) 226 defines = [ "GRAPH_TEST_ABC_DIR=\"${test_abc_dir}/\"" ] 227 228 foreach(file, disasm_column_test_js_files) { 229 deps += [ ":gen_${file}_abc" ] 230 } 231} 232 233host_unittest_action("DisasmReleaseTest") { 234 module_out_path = module_output_path 235 sources = script_sources 236 include_dirs = disasm_include_dirs 237 configs = disasm_test_configs 238 deps = disasm_test_deps 239 test_abc_dir = rebase_path(target_out_dir) 240 defines = [ "GRAPH_TEST_ABC_DIR=\"${test_abc_dir}/\"" ] 241 242 foreach(file, disasm_line_release_test_ts_files) { 243 deps += [ ":gen_${file}_abc" ] 244 } 245} 246 247annotations_sources = [ "disassembler_user_annotations_test.cpp" ] 248 249host_unittest_action("DisasmUserAnnotationsTest") { 250 module_out_path = module_output_path 251 sources = annotations_sources 252 include_dirs = disasm_include_dirs 253 configs = disasm_test_configs 254 deps = disasm_test_deps 255 test_abc_dir = rebase_path(target_out_dir) 256 defines = [ "GRAPH_TEST_ABC_DIR=\"${test_abc_dir}/\"" ] 257 258 foreach(file, disasm_annotation_test_files) { 259 deps += [ ":gen_${file}_abc" ] 260 } 261} 262 263host_unittest_action("DisasmScriptTest") { 264 module_out_path = module_output_path 265 sources = script_sources 266 include_dirs = disasm_include_dirs 267 configs = disasm_test_configs 268 deps = disasm_test_deps 269 test_abc_dir = rebase_path(target_out_dir) 270 defines = [ "GRAPH_TEST_ABC_DIR=\"${test_abc_dir}/\"" ] 271 272 foreach(file, disasm_test_js_files) { 273 deps += [ ":gen_${file}_abc" ] 274 } 275} 276 277host_unittest_action("DisasmImmTest") { 278 module_out_path = module_output_path 279 sources = [ "disassembler_imm_tests.cpp" ] 280 include_dirs = disasm_include_dirs 281 configs = disasm_test_configs 282 deps = disasm_test_deps 283} 284 285group("host_unittest") { 286 testonly = true 287 deps = [ 288 ":DisasmDebugTestAction", 289 ":DisasmImmTestAction", 290 ":DisasmModuleTestAction", 291 ":DisasmReleaseTestAction", 292 ":DisasmScriptTestAction", 293 ":DisasmUserAnnotationsTest", 294 ] 295} 296