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/runtime_core/ark_config.gni") 15import("$ark_root/tests/test_helper.gni") 16import("$build_root/config/components/ets_frontend/es2abc_config.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] 23 24disasm_test_deps = [ 25 "$ark_root/disassembler:arkdisassembler", 26 "$ark_root/libpandabase:libarkbase_static", 27 "$ark_root/libpandafile:libarkfile_static", 28] 29 30disasm_column_test_js_files = [ 31 "column-number1", 32 "column-number2", 33 "column-number3", 34 "column-number4", 35 "column-number5", 36 "column-number6", 37 "line-number1", 38 "line-number2", 39 "line-number3", 40 "line-number4", 41 "line-number5", 42] 43 44disasm_line_release_test_ts_files = [ "line_number_release" ] 45 46disasm_test_js_files = [ 47 "slot-number-annotation", 48 "script-string1", 49 "script-string2", 50] 51 52test_js_path = "//arkcompiler/runtime_core/disassembler/tests/js/" 53 54foreach(file, disasm_column_test_js_files) { 55 es2abc_gen_abc("gen_${file}_abc") { 56 test_js = "${test_js_path}${file}.js" 57 test_abc = "$target_out_dir/${file}.abc" 58 src_js = rebase_path(test_js) 59 dst_file = rebase_path(test_abc) 60 extra_args = [ 61 "--debug", 62 "--module", 63 ] 64 in_puts = [ test_js ] 65 out_puts = [ test_abc ] 66 } 67} 68 69test_ts_path = "//arkcompiler/runtime_core/disassembler/tests/ts/" 70 71foreach(file, disasm_line_release_test_ts_files) { 72 es2abc_gen_abc("gen_${file}_abc") { 73 test_ts = "${test_ts_path}${file}.ts" 74 test_abc = "$target_out_dir/${file}.abc" 75 src_js = rebase_path(test_ts) 76 dst_file = rebase_path(test_abc) 77 extra_args = [ "--module" ] 78 in_puts = [ test_ts ] 79 out_puts = [ test_abc ] 80 } 81} 82 83disasm_annotation_test_files = [ 84 "declaration-3d-array-boolean", 85 "declaration-3d-array-enum-number", 86 "declaration-3d-array-enum-string", 87 "declaration-3d-array-number", 88 "declaration-3d-array-string", 89 "declaration-array-boolean", 90 "declaration-array-enum-number", 91 "declaration-array-enum-string", 92 "declaration-array-number", 93 "declaration-array-string", 94 "declaration-boolean", 95 "declaration-combination", 96 "declaration-empty", 97 "declaration-enum-number", 98 "declaration-enum-string", 99 "declaration-number", 100 "declaration-string", 101 "declaration-usage-3d-array-boolean", 102 "declaration-usage-3d-array-enum-number", 103 "declaration-usage-3d-array-enum-string", 104 "declaration-usage-3d-array-number", 105 "declaration-usage-3d-array-string", 106 "declaration-usage-array-boolean", 107 "declaration-usage-array-enum-number", 108 "declaration-usage-array-enum-string", 109 "declaration-usage-array-number", 110 "declaration-usage-array-string", 111 "declaration-usage-boolean", 112 "declaration-usage-combination", 113 "declaration-usage-empty", 114 "declaration-usage-enum-number", 115 "declaration-usage-enum-string", 116 "declaration-usage-number", 117 "declaration-usage-string", 118 "export", 119 "import-qualified", 120 "import-unqualified", 121 "multiple-annotations", 122] 123 124test_annotation_path = 125 "//arkcompiler/runtime_core/disassembler/tests/annotations/" 126 127foreach(file, disasm_annotation_test_files) { 128 es2abc_gen_abc("gen_${file}_abc") { 129 test_ts = "${test_annotation_path}${file}.ts" 130 test_abc = "$target_out_dir/${file}.abc" 131 src_js = rebase_path(test_ts) 132 dst_file = rebase_path(test_abc) 133 extra_args = [ 134 "--enable-annotations", 135 "--module", 136 "--merge-abc", 137 ] 138 in_puts = [ test_ts ] 139 out_puts = [ test_abc ] 140 } 141} 142 143disasm_module_test_js_files = [ 144 "module-requests-annotation-import", 145 "module-regular-import", 146 "module-namespace-import", 147 "module-local-export", 148 "module-indirect-export", 149 "module-start-export", 150 "module-regular-import-local-export", 151] 152 153module_test_js_path = "//arkcompiler/runtime_core/disassembler/tests/module/" 154 155foreach(file, disasm_module_test_js_files) { 156 es2abc_gen_abc("gen_${file}_abc") { 157 test_js = "${module_test_js_path}${file}.js" 158 test_abc = "$target_out_dir/${file}.abc" 159 src_js = rebase_path(test_js) 160 161 dst_file = rebase_path(test_abc) 162 extra_args = [ 163 "--module", 164 "--merge-abc", 165 ] 166 in_puts = [ test_js ] 167 out_puts = [ test_abc ] 168 } 169} 170 171foreach(file, disasm_test_js_files) { 172 es2abc_gen_abc("gen_${file}_abc") { 173 test_js = "${test_js_path}${file}.js" 174 test_abc = "$target_out_dir/${file}.abc" 175 src_js = rebase_path(test_js) 176 177 dst_file = rebase_path(test_abc) 178 in_puts = [ test_js ] 179 out_puts = [ test_abc ] 180 } 181} 182 183sourceLang_file = "sourceLang" 184action("gen_filesinfo_action") { 185 script = "handle_fileinfo.py" 186 187 inputs = [ "${sourceLang_file}/filesInfo.txt" ] 188 outputs = [ "${target_out_dir}/${sourceLang_file}/filesInfo.txt" ] 189 args = [ 190 rebase_path("${sourceLang_file}/filesInfo.txt"), 191 rebase_path("${target_out_dir}/${sourceLang_file}/filesInfo.txt"), 192 rebase_path("./"), 193 ] 194} 195 196es2abc_gen_abc("gen_${sourceLang_file}_abc") { 197 test_abc = "$target_out_dir/${sourceLang_file}.abc" 198 fileinfo_path = 199 rebase_path("${target_out_dir}/${sourceLang_file}/filesInfo.txt") 200 src_js = "@${fileinfo_path}" 201 dst_file = rebase_path(test_abc) 202 extra_args = [ 203 "--module", 204 "--merge-abc", 205 "--enable-annotations", 206 ] 207 out_puts = [ test_abc ] 208} 209 210disasm_include_dirs = [ 211 "$ark_root/disassembler", 212 "$ark_root/assembler", 213 "$target_gen_dir", 214 "$target_gen_dir/../", 215 "$target_gen_dir/../../assembler", 216] 217 218script_sources = [ 219 "disassembler_column_number_test.cpp", 220 "disassembler_get_file_name_test.cpp", 221 "disassembler_line_number_test.cpp", 222 "disassembler_source_lang_test.cpp", 223 "disassembler_string_test.cpp", 224 "disassembler_system_annotations_test.cpp", 225] 226 227module_sources = [ 228 "disassembler_module_literal_test.cpp", 229 "disassembler_system_annotations_test.cpp", 230] 231 232disasm_module_test_action_files = [ 233 "module-requests-annotation-import", 234 "module-regular-import", 235 "module-namespace-import", 236 "module-local-export", 237 "module-indirect-export", 238 "module-start-export", 239 "module-regular-import-local-export", 240 "slot-number-annotation", 241] 242 243host_unittest_action("DisasmModuleTest") { 244 module_out_path = module_output_path 245 sources = module_sources 246 include_dirs = disasm_include_dirs 247 configs = disasm_test_configs 248 external_deps = [ sdk_libc_secshared_dep ] 249 deps = disasm_test_deps 250 test_abc_dir = rebase_path(target_out_dir) 251 defines = [ "GRAPH_TEST_ABC_DIR=\"${test_abc_dir}/\"" ] 252 253 foreach(file, disasm_module_test_action_files) { 254 deps += [ ":gen_${file}_abc" ] 255 } 256} 257 258disasm_debug_script_test_action_files = [ 259 "column-number1", 260 "column-number2", 261 "column-number3", 262 "column-number4", 263 "column-number5", 264 "column-number6", 265 "line-number1", 266 "line-number2", 267 "line-number3", 268 "line-number4", 269 "line-number5", 270 "module-requests-annotation-import", 271 "script-string1", 272 "script-string2", 273 "slot-number-annotation", 274] 275 276host_unittest_action("DisasmDebugTest") { 277 module_out_path = module_output_path 278 sources = script_sources 279 include_dirs = disasm_include_dirs 280 configs = disasm_test_configs 281 external_deps = [ sdk_libc_secshared_dep ] 282 deps = disasm_test_deps 283 test_abc_dir = rebase_path(target_out_dir) 284 defines = [ "GRAPH_TEST_ABC_DIR=\"${test_abc_dir}/\"" ] 285 286 foreach(file, disasm_debug_script_test_action_files) { 287 deps += [ ":gen_${file}_abc" ] 288 } 289} 290 291host_unittest_action("DisasmReleaseTest") { 292 module_out_path = module_output_path 293 sources = [ "disassembler_line_number_release_test.cpp" ] 294 include_dirs = disasm_include_dirs 295 configs = disasm_test_configs 296 external_deps = [ sdk_libc_secshared_dep ] 297 deps = disasm_test_deps 298 test_abc_dir = rebase_path(target_out_dir) 299 defines = [ "GRAPH_TEST_ABC_DIR=\"${test_abc_dir}/\"" ] 300 301 foreach(file, disasm_line_release_test_ts_files) { 302 deps += [ ":gen_${file}_abc" ] 303 } 304} 305 306annotations_sources = [ "disassembler_user_annotations_test.cpp" ] 307 308host_unittest_action("DisasmUserAnnotationsTest") { 309 module_out_path = module_output_path 310 sources = annotations_sources 311 include_dirs = disasm_include_dirs 312 configs = disasm_test_configs 313 external_deps = [ sdk_libc_secshared_dep ] 314 deps = disasm_test_deps 315 test_abc_dir = rebase_path(target_out_dir) 316 defines = [ "GRAPH_TEST_ABC_DIR=\"${test_abc_dir}/\"" ] 317 318 foreach(file, disasm_annotation_test_files) { 319 deps += [ ":gen_${file}_abc" ] 320 } 321} 322 323host_unittest_action("DisasmScriptTest") { 324 module_out_path = module_output_path 325 sources = script_sources 326 include_dirs = disasm_include_dirs 327 configs = disasm_test_configs 328 external_deps = [ sdk_libc_secshared_dep ] 329 deps = disasm_test_deps 330 test_abc_dir = rebase_path(target_out_dir) 331 defines = [ "GRAPH_TEST_ABC_DIR=\"${test_abc_dir}/\"" ] 332 333 foreach(file, disasm_debug_script_test_action_files) { 334 deps += [ ":gen_${file}_abc" ] 335 } 336} 337 338host_unittest_action("DisasmImmTest") { 339 module_out_path = module_output_path 340 sources = [ "disassembler_imm_tests.cpp" ] 341 include_dirs = disasm_include_dirs 342 configs = disasm_test_configs 343 external_deps = [ sdk_libc_secshared_dep ] 344 deps = disasm_test_deps 345} 346 347host_unittest_action("DisasmSourceLangTest") { 348 module_out_path = module_output_path 349 sources = [ "disassembler_source_lang_test.cpp" ] 350 include_dirs = disasm_include_dirs 351 configs = disasm_test_configs 352 external_deps = [ sdk_libc_secshared_dep ] 353 deps = disasm_test_deps 354 test_abc_dir = rebase_path(target_out_dir) 355 defines = [ "GRAPH_TEST_ABC_DIR=\"${test_abc_dir}/\"" ] 356 deps += [ 357 ":gen_${sourceLang_file}_abc", 358 ":gen_filesinfo_action", 359 ] 360} 361 362group("host_unittest") { 363 testonly = true 364 deps = [ 365 ":DisasmDebugTestAction", 366 ":DisasmImmTestAction", 367 ":DisasmModuleTestAction", 368 ":DisasmReleaseTestAction", 369 ":DisasmScriptTestAction", 370 ":DisasmSourceLangTestAction", 371 ":DisasmUserAnnotationsTest", 372 ] 373} 374