1## File overview: 2``` 3es5_tests.txt: This file contains a list of ES5 test cases. If useful cases are found missing, you can add them as needed. 4es2015_tests.txt: This file contains a full list of use cases of ES2015 except those filtered out with'es6id'. If useful cases are found missing, you can add them as needed. 5es2021_tests.txt: This file contains a full list of use cases of ES2021 except those filtered out with'es6id'. If useful cases are found missing, you can add them as needed. 6intl_tests.txt: This file contains a list of internationalization test cases. If you find useful cases missing, you can add them as needed. 7skip_tests.json: This file contains a list of use cases that do not meet the requirements. If useful cases are found missing, you can add them according to the specified format. 8intl_skip_tests.json: This file contains a list of non-compliant internationalization use cases. If useful cases are found to be missing, they can be added in the specified format. 9``` 10 11## 1. Compile ts2abc and ark_js_vm project 12``` 13./build.sh --product-name hispark_taurus_standard --build-target ark_js_vm --build-target ark_ts2abc_build 14``` 15 16## 2 Run test cases 17 18### 2.1 Options 19``` 20usage: run_test262.py [-h] [--dir DIR] [--file FILE] [--mode [{1,2,3}]] 21 [--es51] [--es2015 [{all,only}]] [--esnext] 22 [--engine FILE] [--babel] [--timeout TIMEOUT] 23 [--threads THREADS] [--hostArgs HOSTARGS] 24 [--ark-aot] 25 [--ark-aot-tool ARK_AOT_TOOL] 26 [--ark-tool ARK_TOOL] 27 [--ark-frontend-tool ARK_FRONTEND_TOOL] 28 [--libs-dir LIBS_DIR] 29 [--ark-frontend [{ts2panda,es2panda}]] 30 31optional arguments: 32 -h, --help Show this help message and exit 33 --dir DIR Directory to test 34 --file FILE File to test 35 --mode [{1,2,3}] selection information as: 1: only default 2: 36 only strict mode 3: both default and strict mode 37 --es51 Run test262 ES5.1 version 38 --es2015 [{all,only}] 39 Run test262 - ES2015. all: Contains all use cases for 40 ES5 and ES2015, only: Only include use cases for 41 ES2015 42 --esnext Run test262 - ES.next. 43 --engine FILE Other engine binarys to run tests with 44 (as:d8,hermes,jsc,qjs...) 45 --babel Whether to use Babel conversion 46 --timeout TIMEOUT Set a custom test timeout in milliseconds !!! 47 --threads THREADS Run this many tests in parallel. Note that the browser 48 runners don't work great with t > 1. 49 --hostArgs HOSTARGS command-line arguments to pass to eshost host 50 --ark-aot Run test262 with aot 51 --ark-aot-tool ARK_AOT_TOOL 52 ark's aot tool 53 --ark-tool ARK_TOOL ark's binary tool 54 --ark-frontend-tool ARK_FRONTEND_TOOL 55 ark frontend conversion tool 56 --libs-dir LIBS_DIR The path collection of dependent so, divided by':' 57 --ark-frontend [{ts2panda,es2panda}] 58 Choose one of them 59``` 60 61### 2.2 Run all the test cases 62 63``` 64python3 test262/run_test262.py 65``` 66 67### 2.3 Run `es51` related test cases 68 69```python 70python3 test262/run_test262.py --es51 71``` 72 73After the execution finished, a directory named `test_es51` is created under directory `test262/data` , which is used to store all `es51` cases. 74 75### 2.4 Run `es2015` related test cases 76#### 2.4.1 only include use cases for ES2015 77```python 78python3 test262/run_test262.py --es2015 only 79``` 80#### 2.4.2 Contains all use cases for ES5 and ES2015 81```python 82python3 test262/run_test262.py --es2015 all 83``` 84 85### 2.5 Run single test case 86 87```python 88python3 test262/run_test262.py --file test262/data/test_es5/language/statements/break/12.8-1.js 89``` 90 91### 2.6 Run all the test cases under specified directory 92 93```python 94python3 test262/run_test262.py --dir test262/data/test_es5/language/statements 95``` 96 97### 2.7 Run single test case with other engines. Take d8 as an example 98 99```python 100 python3 test262/run_test262.py --engine="/home/share/v8-code/v8/out.gn/x64.release/d8" --file test262/data/test_es5/language/statements/break/12.8-1.js 101``` 102### 2.8 Run single test case with `babel` conversion 103``` 104python3 test262/run_test262.py --babel --file test262/data/test_es5/language/statements/break/12.8-1.js 105``` 106 107### 2.9 Get test result 108 109take the following code as an example: 110 111```shell 112zgy@lfgphicprd23154:/home/share/OpenHarmony2.0_20210604/ark/ts2abc$ python3 -B test262/run_test262.py --file test262/data/test_es51/language/statements/break/12.8-1.js 113 114Wait a moment.......... 115 11607-30 16:56:03.857383 D:>>> command: npm install | dir: /home/share/OpenHarmony2.0_20210604/out/ohos-arm-release/clang_x64/arkcompiler/ets_frontend/build/src/.. 117npm WARN ts2panda@1.0.0 No description 118npm WARN ts2panda@1.0.0 No repository field. 119npm WARN ts2panda@1.0.0 No license field. 120npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.3.2 (node_modules/fsevents): 121npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) 122 123up to date in 2.225s 124 12528 packages are looking for funding 126 run `npm fund` for details 127 12807-30 16:56:06.746184 D:>>> command: npm install | dir: test262/eshost 129up to date in 1.446s 130 1311 package is looking for funding 132 run `npm fund` for details 133 13407-30 16:56:08.767037 D:>>> command: npm install | dir: test262/harness 135up to date in 2.412s 13607-30 16:56:11.836409 D:>>> command: git checkout -- . | dir: test262/data 13707-30 16:56:12.012115 D:>>> command: git checkout 9ca13b12728b7e0089c7eb03fa2bd17f8abe297f | dir: test262/data 138HEAD is now at 9ca13b1272 Fix typo in BigIntArray property descriptor test 13907-30 16:56:12.275768 D:>>> command: git checkout -- . | dir: test262/eshost 14007-30 16:56:12.280134 D:>>> command: git apply ../eshost.patch | dir: test262/eshost 14107-30 16:56:12.283263 D:>>> command: git checkout -- . | dir: test262/harness 14207-30 16:56:12.288134 D:>>> command: git apply ../harness.patch | dir: test262/harness 143Test command: 144 node 145 test262/harness/bin/run.js 146 --hostType=panda 147 --hostPath=python3 148 --hostArgs='-B test262/run_sunspider.py --ark-tool=/home/share/OpenHarmony2.0_20210604/out/ohos-arm-release/clang_x64/arkcompiler/ets_runtime/ark_js_vm --ark-frontend-tool=/home/share/OpenHarmony2.0_20210604/out/ohos-arm-release/clang_x64/arkcompiler/ets_frontend/build/src/index.js --libs-dir=/home/share/OpenHarmony2.0_20210604/out/ohos-arm-release/clang_x64/arkcompiler/ets_runtime:/home/share/OpenHarmony2.0_20210604/out/ohos-arm-release/clang_x64/global/i18n_standard:/home/share/OpenHarmony2.0_20210604/prebuilts/clang/ohos/linux-x86_64/llvm/lib/ --ark-frontend=ts2panda ' 149 --threads=15 150 --mode=only strict mode 151 --timeout=60000 152 --tempDir=out/test262 153 --test262Dir=test262/data 154 --saveCompiledTests 155 test262/data/test_es51/language/statements/break/12.8-1.js 156 157FAIL test262/data/test_es51/language/statements/break/12.8-1.js (strict mode) 158 159Ran 1 tests 1600 passed 1611 failed 162used time is: 0:00:13.303865 163``` 164 165* `default` indicates `non-strict` mode; `strict mode` indicates the strict mode. 166 167* After the execution finished, the following files are generated under directory `out/test262/` (you can specified it in `test262/config.py`): 168 169``` 170-rw-rw-r-- 1 zgy zgy 7583 Nov 21 18:18 12.8-1-default.abc 171-rw-rw-r-- 1 zgy zgy 415 Nov 21 18:18 12.8-1.js.panda.default.err 172-rw-rw-r-- 1 zgy zgy 4389 Nov 21 18:18 12.8-1.js.panda.default.fail 173-rw-rw-r-- 1 zgy zgy 415 Nov 21 18:18 12.8-1.js.panda.strict.err 174-rw-rw-r-- 1 zgy zgy 4403 Nov 21 18:18 12.8-1.js.panda.strict.fail 175-rw-rw-r-- 1 zgy zgy 7601 Nov 21 18:18 12.8-1-strict.abc 176``` 177 178`.abc` indicates the generated binary `abc` file. 179 180`.err` indicates that an error occurred during the test. 181 182`.fail/.pass` is the file saved after `js` file has been preprocessed. 183 184The `result.txt` file is generated under directory `out/test262` to save statistics after the test finished. 185