1#!/usr/bin/env python3
2# -*- coding: utf-8 -*-
3
4"""
5Copyright (c) 2021-2022 Huawei Device Co., Ltd.
6Licensed under the Apache License, Version 2.0 (the "License");
7you may not use this file except in compliance with the License.
8You may obtain a copy of the License at
9
10    http://www.apache.org/licenses/LICENSE-2.0
11
12Unless required by applicable law or agreed to in writing, software
13distributed under the License is distributed on an "AS IS" BASIS,
14WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15See the License for the specific language governing permissions and
16limitations under the License.
17
18Description: Execute 262 test suite configuration file
19"""
20
21
22import os
23import sys
24import platform
25from multiprocessing import cpu_count
26
27IS_LINUX_ARM64 = (sys.platform == "linux" and platform.machine().lower() == "aarch64")
28CLANG_TOOLCHAIN = "clang_arm64" if IS_LINUX_ARM64 else "clang_x64"
29
30DATA_DIR = os.path.join("test262", "data")
31ESHOST_DIR = os.path.join("test262", "eshost")
32HARNESS_DIR = os.path.join("test262", "harness")
33
34BASE_OUT_DIR = os.path.join("out", "test262")
35
36CUR_FILE_DIR = os.path.dirname(__file__)
37CODE_ROOT = os.path.abspath(os.path.join(CUR_FILE_DIR, "../../.."))
38if IS_LINUX_ARM64:
39    LLVM_DIR = f"{CODE_ROOT}/prebuilts/clang/ohos/linux-aarch64/llvm/lib/"
40else:
41    LLVM_DIR = f"{CODE_ROOT}/prebuilts/clang/ohos/linux-x86_64/llvm/lib/"
42
43DEFAULT_MODE = 2
44
45TEST_FULL_DIR = os.path.join(DATA_DIR, "test")
46TEST_ES5_DIR = os.path.join(DATA_DIR, "test_es51")
47TEST_ES2015_DIR = os.path.join(DATA_DIR, "test_es2015")
48TEST_ES2021_DIR = os.path.join(DATA_DIR, "test_es2021")
49TEST_OTHERTESTS_DIR = os.path.join(DATA_DIR, "other_tests")
50TEST_ES2022_DIR = os.path.join(DATA_DIR, "test_es2022")
51TEST_ES2023_DIR = os.path.join(DATA_DIR, "test_es2023")
52TEST_INTL_DIR = os.path.join(DATA_DIR, "test_intl")
53TEST_CI_DIR = os.path.join(DATA_DIR, "test_CI")
54TEST_SENDABLE_DIR = os.path.join(DATA_DIR, "test_sendable")
55
56HISPARK_TAURUS_PRODUCT_NAME = "hispark_taurus"
57RK3568_PRODUCT_NAME = "rk3568"
58DEFAULT_PRODUCT_NAME = HISPARK_TAURUS_PRODUCT_NAME
59
60ARGS_PREFIX = f"{CODE_ROOT}/out/"
61ARK_DIR_SUFFIX = "clang_x64/arkcompiler/ets_frontend"
62ICUI_DIR_SUFFIX = "clang_x64/thirdparty/icu"
63ARK_JS_RUNTIME_DIR_SUFFIX = "clang_x64/arkcompiler/ets_runtime"
64ZLIB_DIR_SUFFIX = "clang_x64/thirdparty/zlib"
65
66DEFAULT_ARK_DIR = f"{CODE_ROOT}/out/hispark_taurus/clang_x64/arkcompiler/ets_frontend"
67DEFAULT_ICUI_DIR = f"{CODE_ROOT}/out/hispark_taurus/clang_x64/thirdparty/icu"
68DEFAULT_ARK_JS_RUNTIME_DIR = f"{CODE_ROOT}/out/hispark_taurus/clang_x64/arkcompiler/ets_runtime"
69DEFAULT_ZLIB_DIR = f"{CODE_ROOT}/out/hispark_taurus/clang_x64/thirdparty/zlib"
70
71DEFAULT_ARK_TOOL = os.path.join(DEFAULT_ARK_JS_RUNTIME_DIR, "ark_js_vm")
72DEFAULT_LIBS_DIR = f"{DEFAULT_ICUI_DIR}:{LLVM_DIR}:{DEFAULT_ARK_JS_RUNTIME_DIR}:{DEFAULT_ZLIB_DIR}"
73DEFAULT_STUB_FILE = f""
74DEFAULT_ARK_AOT_TOOL = os.path.join(DEFAULT_ARK_JS_RUNTIME_DIR, "ark_aot_compiler")
75
76DEFAULT_HOST_TYPE = "panda"
77DEFAULT_HOST_PATH = "python3"
78DEFAULT_THREADS = min(cpu_count(), 32)
79DEFAULT_OTHER_ARGS = "--saveCompiledTests"
80TEST262_RUNNER_SCRIPT = os.path.join(HARNESS_DIR, "bin", "run.js")
81DEFAULT_TIMEOUT = 60000
82
83ES5_LIST_FILE = os.path.join("test262", "es5_tests.txt")
84ES2015_LIST_FILE = os.path.join("test262", "es2015_tests.txt")
85INTL_LIST_FILE = os.path.join("test262", "intl_tests.txt")
86ES2021_LIST_FILE = os.path.join("test262", "es2021_tests.txt")
87SENDABLE_LIST_FILE = os.path.join("test262", "sendable_tests.txt")
88OTHER_LIST_FILE = os.path.join("test262", "other_tests.txt")
89ES2022_LIST_FILE = os.path.join("test262", "es2022_tests.txt")
90ES2023_LIST_FILE = os.path.join("test262", "es2023_tests.txt")
91CI_LIST_FILE = os.path.join("test262", "CI_tests.txt")
92MODULE_LIST = []
93DYNAMIC_IMPORT_LIST = []
94with open(os.path.join("test262", "module_tests.txt")) as m_file:
95    MODULE_LIST = m_file.read().splitlines()
96with open(os.path.join("test262", "dynamicImport_tests.txt")) as d_file:
97    DYNAMIC_IMPORT_LIST = d_file.read().splitlines()
98
99SENDABLE_GIT_HASH = "3b438d2b80d14eb7f24d280ceac5030e7a81abd2"
100TEST262_GIT_HASH = "6f4601d095a3899d6102f2c320b671495cbe8757"
101HARNESS_GIT_HASH = "9c499f028eb24e67781435c0bb442e00343eb39d"
102ESHOST_GIT_HASH = "fa2d4d27d9d6152002bdef36ee2d17e98b886268"
103ESNEXT_GIT_HASH = "281eb10b2844929a7c0ac04527f5b42ce56509fd"
104
105SENDABLE_GIT_URL = "https://gitee.com/ark_standalone_build/test262_sendable.git"
106TEST262_GIT_URL = "https://gitee.com/hufeng20/test262.git"
107ESHOST_GIT_URL = "https://gitee.com/hufeng20/eshost.git"
108HARNESS_GIT_URL = "https://gitee.com/hufeng20/test262-harness.git"
109
110TEST262_JIT_GIT_URL = "https://gitee.com/lxy0115/test262.git"
111TEST262_JIT_GIT_HASH = "1c923f96779aabbd4bed35a00e7078054c465334"
112TEST262_JIT_LABEL = os.path.join("test262", "data", "preheated.txt")
113
114SKIP_LIST_FILE = os.path.join("test262", "skip_tests.json")
115ES2ABC_SKIP_LIST_FILE = os.path.join("test262", "es2abc_skip_tests.json")
116TS2ABC_SKIP_LIST_FILE = os.path.join("test262", "ts2abc_skip_tests.json")
117INTL_SKIP_LIST_FILE = os.path.join("test262", "intl_skip_tests.json")
118TS2ABC_SKIP_FORCE_GC_LIST_FILE = os.path.join("test262", "force_gc_skip_tests.json")
119SKIP_LIST_FILES = [SKIP_LIST_FILE, INTL_SKIP_LIST_FILE]
120ALL_SKIP_TESTS = []
121INTL_SKIP_TESTS = []
122SKIP_FORCE_GC_LIST_FILES = []
123FORCE_GC_SKIP_TESTS = []
124
125ARK_FRONTEND_LIST = [
126    "ts2panda",
127    "es2panda"
128]
129
130ARK_FRONTEND_BINARY_LIST = [
131    os.path.join(DEFAULT_ARK_DIR, "build", "src", "index.js"),
132    os.path.join(DEFAULT_ARK_DIR, "es2abc")
133]
134
135DEFAULT_ARK_FRONTEND = ARK_FRONTEND_LIST[0]
136DEFAULT_ARK_FRONTEND_BINARY = ARK_FRONTEND_BINARY_LIST[0]
137DEFAULT_MERGE_ABC_BINARY = os.path.join(DEFAULT_ARK_DIR, "merge_abc")
138
139ARK_ARCH_LIST = [
140    "x64",
141    "aarch64",
142    "arm"
143]
144
145DEFAULT_ARK_ARCH = ARK_ARCH_LIST[0]
146DEFAULT_OPT_LEVEL = 2
147DEFAULT_ES2ABC_THREAD_COUNT = 0
148DEFAULT_MERGE_ABC_MODE = 1
149
150OHOS_TYPESCRIPT = "ohos-typescript-4.2.3-r2.tgz"
151OHOS_TYPESCRIPT_TGZ_PATH = f"{CODE_ROOT}/third_party/typescript/build_package/{OHOS_TYPESCRIPT}"
152
153DEFAULT_RETRIES = 3
154