# Copyright (c) 2025 Huawei Device Co., Ltd.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import("//build/config/components/ets_frontend/es2abc_config.gni")
import("//build/test.gni")
if (!defined(ark_standalone_build)) {
ark_standalone_build = false
}
if (is_standard_system || ark_standalone_build) {
_icu_path_ = "thirdparty/icu"
} else {
_icu_path_ = "global/i18n"
}
common_options = ""
if (defined(disable_force_gc) && disable_force_gc) {
common_options += " --enable-force-gc=false"
}
if (defined(timeout)) {
_timeout_ = timeout
} else {
_timeout_ = 1200
}
template("host_unittest_action") {
_target_name_ = "${target_name}"
# unittest for phone running
ohos_unittest(_target_name_) {
resource_config_file =
"//arkcompiler/ets_runtime/common_components/tests/ohos_test.xml"
forward_variables_from(invoker, "*")
}
_module_out_path_ = invoker.module_out_path
# unittest for host running
action("${_target_name_}ActionWithoutQemu") {
testonly = true
_host_test_target_ = ":${_target_name_}(${host_toolchain})"
_root_out_dir_ = get_label_info(_host_test_target_, "root_out_dir")
deps = [ _host_test_target_ ]
script = "//arkcompiler/ets_runtime/script/run_ark_executable.py"
args = [
"--script-file",
rebase_path(_root_out_dir_) +
"/tests/unittest/${_module_out_path_}/${_target_name_}",
"--expect-output",
"0",
"--env-path",
rebase_path(_root_out_dir_) + "/arkcompiler/ets_runtime:" +
rebase_path(_root_out_dir_) + "/arkcompiler/runtime_core:" +
rebase_path(_root_out_dir_) + "/${_icu_path_}:" +
rebase_path(_root_out_dir_) + "/thirdparty/zlib:" +
rebase_path(_root_out_dir_) + "/resourceschedule/frame_aware_sched:" +
rebase_path(_root_out_dir_) + "/hiviewdfx/hilog:" +
rebase_path(_root_out_dir_) +
"/thirdparty/bounds_checking_function:" +
rebase_path("//prebuilts/clang/ohos/linux-x86_64/llvm/lib:") +
rebase_path(_root_out_dir_) + "/hmosbundlemanager/zlib_override/",
"--timeout-limit",
"${_timeout_}",
]
inputs = [
"$_root_out_dir_/tests/unittest/${_module_out_path_}/${_target_name_}",
]
outputs = [ "$target_out_dir/${_target_name_}/" ]
}
if (ark_standalone_build && host_os == "linux" && target_os == "ohos") {
import("$ark_third_party_root/musl/musl_template.gni")
import("$build_root/config/qemu/config.gni")
action("${_target_name_}ActionWithQemu") {
testonly = true
_host_test_target_ = ":${_target_name_}"
# path of root_out_dir based on root_src_dir
_root_out_dir_ = get_label_info(_host_test_target_, "root_out_dir")
deps = [
"$ark_third_party_root/musl:soft_create_linker_for_qemu",
_host_test_target_,
]
script = "//arkcompiler/ets_runtime/script/run_ark_executable.py"
args = [
"--script-file",
rebase_path(
"$_root_out_dir_/tests/unittest/${_module_out_path_}/${_target_name_}",
root_build_dir),
"--expect-output",
"0",
"--clang-lib-path",
rebase_path("${clang_base_path}/lib/${musl_arch}-linux-ohos",
root_build_dir),
"--qemu-binary-path",
"${QEMU_INSTALLATION_PATH}/bin/qemu-${musl_arch}",
"--qemu-ld-prefix",
rebase_path(musl_linker_so_out_dir, root_build_dir),
"--timeout-limit",
"${_timeout_}",
]
inputs = [
"$_root_out_dir_/tests/unittest/${_module_out_path_}/${_target_name_}",
]
outputs = [ "$target_out_dir/${_target_name_}WithQemu/" ]
}
}
group("${_target_name_}Action") {
testonly = true
deps = []
if (ark_standalone_build && host_os == "linux" && target_os == "ohos" &&
run_with_qemu) {
deps += [ ":${_target_name_}ActionWithQemu" ]
} else {
deps += [ ":${_target_name_}ActionWithoutQemu" ]
}
}
}