diff --git a/doc/cn/DeveloperGuide.md b/doc/cn/DeveloperGuide.md index 8d9ed169789c9b0776da2c84613e13fcc46ac111..09aacae53756cbefbee7437d84446fde6a807c16 100644 --- a/doc/cn/DeveloperGuide.md +++ b/doc/cn/DeveloperGuide.md @@ -2,19 +2,16 @@ 通过参考本文档,您可以下载编译器源码编译出OpenArkCompiler。同时,本文档也为开发者提供了源码静态检查指南。 -## 前提条件 - -请先按照《环境配置》文档完成您的开发环境准备。 - - ## 源码下载 - 下载地址:,可以通过`Clone` or `Download`的方式下载openarkcompiler源码。 +下载地址:,可以通过`Clone` or `Download`的方式下载openarkcompiler源码。 + > 注:默认源码下载目录为openarkcompiler。 +之后请按照《环境配置》文档完成您的开发环境准备。 -## 源码编译 +## 源码编译 在openarkcompiler目录下执行以下命令,编译出OpenArkCompiler,默认输出路径 openarkcompiler/output/bin。 @@ -22,13 +19,27 @@ source build/envsetup.sh make ``` + 命令说明: - `source build/envsetup.sh` 初始化环境,将OpenArkCompiler工具链路径openarkcompiler/output/bin设置到环境变量中; - `make` 编译OpenArkCompiler的Release版本; - `make BUILD_TYPE=DEBUG` 编译OpenArkCompiler的Debug版本。 -此外,方舟编译器还提供了源码编译脚本,开发者也可以通过在openarkcompiler目录下执行该脚本,编译出OpenArkCompiler。执行命令如下: +在openarkcompiler目录下执行以下命令,编译出OpenArkCompiler及maple runtime部分,默认输出路径 openarkcompiler/output。 + +``` +source build/envsetup.sh +make libcore +``` + +命令说明: + +- `make libcore` 编译OpenArkCompiler及maple runtime部分的Release版本; +- `make libcore OPS_ANDROID=1` 编译Android版本的OpenArkCompiler及maple runtime部分的Release版本; +- `make libcore BUILD_TYPE=DEBUG` 编译OpenArkCompiler及maple runtime部分的Debug版本; + +此外,方舟编译器还提供了源码编译脚本,开发者也可以通过在openarkcompiler目录下执行该脚本,默认编译出OpenArkCompiler及maple runtime部分的Release版本。执行命令如下: ``` source build/build.sh @@ -40,9 +51,7 @@ source build/build.sh **基础库准备** -- 您可以自己下载Android代码本地编译来获得libcore的jar包,建议使用Android的9.0.0_r45版本; - -- 同时码云上也提供了已经编译好的libcore的jar文件,你可以下载直接使用,下载链接:https://gitee.com/mirrors/java-core/ 。 +环境准备阶段已经通过AOSP获取到需要的libcore的jar文件。 **生成libjava-core.mplt文件** @@ -80,8 +89,9 @@ make cp output/compile_commands.json ./ ./tools/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/share/clang/run-clang-tidy.py -clang-tidy-binary='./tools/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang-tidy' -clang-apply-replacements-binary='./tools/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang-apply-replacements' src/maple_driver/ ``` + 命令说明: - `cp output/compile_commands.json ./` 将output目录之下的compile_commands.json复制到当前目录之下,它是clang-tidy运行所需要的编译命令; -- `./tools/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/share/clang/run-clang-tidy.py` 调用clang-tidy进行批量检查的脚本run-clang-tidy.py,其中 `./tools/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/`目录是之前配置的clang编译器的发行包主目录; `-clang-tidy-binary` 是指明clang-tidy的具体位置; `-clang-apply-replacements-binary` 是指明run-clang-tidy.py所依赖的clang-apply-replacements的位置; `src/maple_driver/` 是要进行源码检查的目录。 +- `./tools/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/share/clang/run-clang-tidy.py` 调用clang-tidy进行批量检查的脚本run-clang-tidy.py,其中 `./tools/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/`目录是之前配置的clang编译器的发行包主目录; `-clang-tidy-binary` 是指明clang-tidy的具体位置; `-clang-apply-replacements-binary` 是指明run-clang-tidy.py所依赖的clang-apply-replacements的位置; `src/maple_driver/` 是要进行源码检查的目录。 \ No newline at end of file diff --git a/doc/cn/DevelopmentPreparation.md b/doc/cn/DevelopmentPreparation.md index a5bc10abf284a9da9b85b16de89c165d2bf24634..5bdbaa034c25732c9c3103aa6794b49f3ad94c64 100644 --- a/doc/cn/DevelopmentPreparation.md +++ b/doc/cn/DevelopmentPreparation.md @@ -21,35 +21,133 @@ sudo apt-get -y install gcc-5-aarch64-linux-gnu g++-5-aarch64-linux-gnu ## 安装Clang编译器并完成配置(用于编译方舟编译器代码) -下载**clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04** +下载**clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04** (具体版本请根据系统版本确定) + LLVM下载地址:http://releases.llvm.org/download.html#8.0.0 -放置到`openarkcompiler/tools`目录,打开`openarkcompiler/build/config.gni`文件,将`GN_C_COMPILER`、`GN_CXX_COMPILER`和`GN_AR_COMPILER`三个变量配置为Clang编译器所在路径,例如: +解压并放置到`openarkcompiler/tools`目录 + +* 修改`openarkcompiler/build/config.gni`文件,将`CLANG_PATH`变量配置为clang编译器所在路径,例如: ``` -GN_C_COMPILER = "${MAPLE_ROOT}/tools/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang" -GN_CXX_COMPILER = "${MAPLE_ROOT}/tools/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang++" -GN_AR_COMPILER = "${MAPLE_ROOT}/tools/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/llvm-ar" +CLANG_PATH = "${MAPLE_ROOT}/tools/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04" +``` + +* 修改`openarkcompiler/buile/core/maple_variables.mk`文件,将`CLANG_PATH`配置为clang编译器所在路径,例如: + +``` +CLANG_PATH := ${MAPLE_ROOT}/tools/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04 ``` 其中${MAPLE_ROOT}为openarkcompiler源码根目录。 -## 安装Ninja、GN 并完成配置 +## 安装Ninja、GN并完成配置 下载**Ninja(v1.9.0)**及**GN(Linux Version)** + Ninja下载地址:https://github.com/ninja-build/ninja/releases + GN下载地址:https://gitee.com/xlnb/gn_binary -将GN和Ninja可执行程序放置到openarkcompiler/tools目录,然后修改这两个文件为可执行: +将GN和Ninja可执行程序放置到`openarkcompiler/tools`目录,然后修改这两个文件为可执行: + ``` cd openarkcompiler/tools chmod 775 gn chmod 775 ninja ``` -打开openarkcompiler/Makefile文件,将GN和NINJA两个变量配置为GN和Ninja可执行程序所在路径。例如: +打开`openarkcompiler/Makefile`文件,将GN和NINJA两个变量配置为GN和Ninja可执行程序所在路径。例如: ``` GN := ${MAPLE_ROOT}/tools/gn/gn NINJA := ${MAPLE_ROOT}/tools/ninja_1.9.0/ninja ``` + +## 安装gcc-linaro-7.5.0-2019.12-i686_aarch64-linux-gnu并完成配置(用于交叉编译方舟编译器代码) + +下载**gcc-linaro-7.5.0-2019.12-i686_aarch64-linux-gnu** + +gcc-linaro-7.5.0下载地址:https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/ + +解压并放置到`openarkcompiler/tools`目录,并将文件夹更名为`gcc-linaro-7.5.0`。 + +* 修改`openarkcompiler/build/config.gni`文件,将`GCC_LINARO_PATH`变量配置为gcc-linaro-7.5.0所在路径,例如: + +``` +GCC_LINARO_PATH = "${MAPLE_ROOT}/tools/gcc-linaro-7.5.0" +``` + +* 修改`openarkcompiler/buile/core/maple_variables.mk`文件,将`GCC_LINARO_PATH`配置为gcc-linaro-7.5.0所在路径,例如: + +``` +GCC_LINARO_PATH := ${MAPLE_ROOT}/tools/gcc-linaro-7.5.0 +``` + +## 安装android-ndk-r21并完成配置(用于编译方舟编译器代码) + +下载**android-ndk-r21b-linux-x86_64.zip** + +android-ndk-r21下载地址:https://developer.android.google.cn/ndk/downloads/ + +解压并放置到openarkcompiler/tools目录,并将文件夹更名为`android-ndk-r21`。 + +* 修改`openarkcompiler/build/config.gni`文件,将`NDK_PATH`变量配置为android-ndk-r21所在路径,例如: + +``` +NDK_PATH = "${MAPLE_ROOT}/tools/android-ndk-r21" +``` + +* 修改`openarkcompiler/buile/core/maple_variables.mk`文件,将`NDK_PATH`配置为android-ndk-r21所在路径,例如: + +``` +NDK_PATH := ${MAPLE_ROOT}/tools/android-ndk-r21 +``` + +## AOSP编译并完成配置 + +当前编译方舟编译器Sample应用需要使用到Java基础库,我们通过AOSP来获取,请使用Android-10.0.0_r35版本,暂不支持Android11版本。 + +AOSP下载地址:https://source.android.com/source/downloading/ + +下载AOSP并编译完成。 + +* 在openarkcompiler目录下新建链接`android/`,并链接到AOSP的根目录; +* 将`openarkcompiler/android/out/target/product/generic_arm64/obj/JAVA_LIBRARIES/core-all_intermediates/javalib.jar`拷贝到`openarkcompiler/libjava-core`目录,并命名为`java-core.jar`,同时码云上也提供了编译好的libcore的jar文件,你可以下载直接使用,下载链接`https://gitee.com/mirrors/java-core/`; +* 将`openarkcompiler/android/prebuilts/sdk/tools/linux/lib/d8.jar`拷贝到`openarkcompiler/third_party/d8/lib/`目录,并命名为`d8.jar`; +* 在openarkcompiler/tools下新建链接gcc,并链接到AOSP的`openarkcompiler/android/prebuilts/gcc`; +* 在openarkcompiler/tools下新建链接clang-r353983c,并链接到AOSP的`openarkcompiler/android/prebuilts/clang/host/linux-x86/clang-r353983c`; +* 修改`openarkcompiler/build/config.gni`和`openarkcompiler/buile/core/maple_variables.mk`中`ANDROID_GCC_PATH`和`ANDROID_CLANG_PATH`两个变量,配置为上述gcc和clang-r353982c的所在路径,例如: + +config.gni + +``` +ANDROID_GCC_PATH = "${MAPLE_ROOT}/tools/gcc" +ANDROID_GLANG_PATH = "${MAPLE_ROOT}/tools/clang-r353983c" +``` + +maple_variables.mk + +``` +ANDROID_GCC_PATH := ${MAPLE_ROOT}/tools/gcc +ANDROID_GLANG_PATH := ${MAPLE_ROOT}/tools/clang-r353983c +``` + +## 三方依赖库下载 + +### icu下载并编译 + +当前用例编译需要icu动态库支持,请使用icu56.1版本。 + +icu下载地址:http://site.icu-project.org/home + +下载56.1版本的icu4c并编译完成,生成`libicuuc.so`和`libiucdata.so`,将两者放置到`openarkcompiler/third_party/icu/lib/aarch64-linux-gnu`路径下,并重命名为`libicuuc.so.56`和`libiucdata.so.56`。 + +### libz下载并编译 + +当前用例编译需要libz.so支持,请使用1.2.8版本。 + +libz下载地址:https://zlib.net + +下载1.2.8版本的libz.so,将其放置到`openarkcompiler/third_party/libdex/prebuilts/aarch64-linux-gnu/`路径下,并重命名为`libz.so.1.2.8`。 + diff --git a/test/README.md b/test/README.md index 83cc79d9d38a6e9befdca46d0326813e74af6a71..0cfe5f1040f84b0fd5b63927c7cf37fa70802506 100644 --- a/test/README.md +++ b/test/README.md @@ -6,24 +6,32 @@ test ├── main.py 运行测试套入口 ├── maple_test 测试框架代码 -│   ├── compare.py 结果校验模块 -│   ├── configs.py 参数设置与框架配置文件模块 -│   ├── __init__.py -│   ├── main.py 内部入口 -│   ├── maple_test.cfg 测试框架配置文件 -│   ├── run.py 命令运行模块 -│   ├── task.py 测试任务准备与运行模块 -│   ├── template.cfg 测试套配置文件模板 -│   ├── test.py 测试用例模块 -│   └── utils.py 通用模块 +│ ├── compare.py 结果校验模块 +│ ├── configs.py 参数设置与框架配置文件模块 +│ ├── __init__.py +│ ├── main.py 内部入口 +│ ├── maple_test.cfg 测试框架配置文件 +│ ├── run.py 命令运行模块 +│ ├── task.py 测试任务准备与运行模块 +│ ├── template.cfg 测试套配置文件模板 +│ ├── test.py 测试用例模块 +│ └── utils.py 通用模块 ├── README.md 测试框架说明 └── testsuite - └── irbuild_test irbuild测试套 + ├── irbuild_test irbuild测试套 + ├── ouroboros ouroboros测试套 + │ ├──test.cfg 测试套配置文件 + │ ├──test_android.cfg 测试套手机执行配置文件 + │ └──testlist 测试内容 + ├──maple.py 用例编译脚本 + ├──run.py 用例执行脚本 + ├──android_maple.py Android用例编译脚本 + └──android_run.py Android用例执行脚本 ``` ## 运行要求 -* python版本>=3.5.2 +- python版本>=3.5.2 ## 修改框架配置 @@ -32,16 +40,14 @@ test ```ini [test-home] # 指定测试套路径,以‘:’划分 -dir = - ../testsuite/irbuild_test: - ../testsuite/ouroboros: +dir = ../testsuite/irbuild_test:../testsuite/ouroboros: [running] -#指定运行时的临时路径 +# 指定运行时的临时路径 temp_dir = ../test_temp/run [logging] -#指定运行时保存日志的路径 +# 指定运行时保存日志的路径 name = ../test_temp/log level = INFO ``` @@ -54,14 +60,14 @@ level = INFO #### irbuild_test -```shell -python3 test/main.py test/testsuite/irbuild_test -j20 -pFAIL +``` +python3 test/main.py test/testsuite/irbuild_test --test_cfg=test/testsuit/irbuild_test/ -j20 -pFAIL ``` #### ouroboros -```shell -python3 test/main.py test/testsuite/ouroboros -j20 -pFAIL +``` +python3 test/main.py test/testsuite/ouroboros --test_cfg=test/testsuit/ouroboros/ -j20 -pFAIL ``` 参数说明:指定参数会覆盖框架配置文件中的设置 @@ -135,140 +141,69 @@ Log arguments: ## ouroboros 测试套 -ouroboros测试套是基于 `Java` 测试用例的测试套 - -### 运行测试套 - -批量运行ouroboros:参数 `-j20` 设定并行为20 - -`python3 test/main.py test/testsuite/ouroboros/ -j20` - -运行ourobors下的子文件夹: - -`python3 test/main.py test/testsuite/ouroboros/string_test -j20` - -运行ourobors下的单一测试用例: - -`python3 test/main.py test/testsuite/ouroboros/string_test` - -只输出失败用例: - -`python3 test/main.py test/testsuite/ouroboros/ -j20 -pFAIL` - -屏幕输出详细运行日至: - -`python3 test/main.py test/testsuite/ouroboros/string_test -j20` - -### 测试套配置 - -测试套配置文件路径为 `testsuite/ourobors/test.cfg`, 含有测试套的一些设置和内部变量 - -```ini -[suffix] -java = // +ouroboros测试套是基于 `Java` 测试用例的测试套,当前ouroboros测试支持本地测试及系统版本为华为emui10的android手机测试。 -[internal-var] -maple = python3 ${MAPLE_ROOT}/test/testsuite/maple.py -run = # -build_option = --javac="-bootclasspath ${MAPLE_ROOT}/libjava-core/java-core.jar" --maple="-O0 --mplt=${MAPLE_ROOT}/libjava-core/java-core.mplt --option=\"-use-string-factory::: \"" -s maple -run_option = +### 测试环境准备 -[description] -title = Maple Ouroboros Test -``` +* 本地测试前请首先执行完成`make libcore`。 -**`[suffix]`**:限定搜索测试用例文件的后缀,以及测试用例中注释符,注释符后会跟随执行语句或者校验语句,当前测试套中的用例为 `java` 文件,`\\` 作为注释符 +* android测试前请首先执行完成`make libcore OPS_ANDROID=1`。之后将`openarkcompiler/output/ops/host-x86_64-O2`中的`libcore-all.so`、`libmplandroid.so`和`libmplopenjdk.so`推送至测试手机的`/system/lib64/`下,文件名保持不变。将`openarkcompiler/output/ops/mplsh`推送至测试手机的`/system/bin/`下,并将文件重命名为`mplsh_arm64`。 -**`[internal-val]`**:内部变量,此处的内部变量会替换用例中相应的变量。例如配置文件中的 `maple = python3 ${MAPLE_ROOT}/test/testsuite/maple.py` ,将会将用例中跟随在 `\\ EXEC:## ouroboros 测试套 +### 运行测试套 -ouroboros测试套是基于 `Java` 测试用例的测试套 +* 参数`--test_cfg`设定选择的测试套配置,默认使用`test.cfg`进行本地测试,使用`test_android.cfg`将进行android版本的测试。 -### 运行测试套 +* 在运行android版本的测试前,需要在test_android.cfg中配置测试机所在服务器的ssh及测试机sn,并提前配置完成本地与服务器间的ssh互信。 -批量运行ouroboros:参数 `-j20` 设定并行为20 +批量运行ouroboros:参数 `-j20` 设定并行为20。 -`python3 test/main.py test/testsuite/ouroboros/ -j20` +`python3 test/main.py test/testsuite/ouroboros/ --test_cfg=test/testsuite/ouroboros/ -j20` 运行ourobors下的子文件夹: -`python3 test/main.py test/testsuite/ouroboros/string_test --test_cfg=test/testsuite/ouroboros/test.cfg -j20` +`python3 test/main.py test/testsuite/ouroboros/string_test --test_cfg=test/testsuite/ouroboros/ -j20` 运行ourobors下的单一测试用例: -`python3 test/main.py test/testsuite/ouroboros/string_test/RT0001-rt-string-ReflectString/ReflectString.java --test_cfg=test/testsuite/ouroboros/test.cfg` +`python3 test/main.py test/testsuite/ouroboros/string_test/RT0001-rt-string-ReflectString/ReflectString.java --test_cfg=test/testsuite/ouroboros/` 只输出失败用例: -`python3 test/main.py test/testsuite/ouroboros/string_test/RT0001-rt-string-ReflectString/ReflectString.java --test_cfg=test/testsuite/ouroboros/test.cfg -pFAIL` +`python3 test/main.py test/testsuite/ouroboros/string_test/RT0001-rt-string-ReflectString/ReflectString.java --test_cfg=test/testsuite/ouroboros/ -pFAIL` -屏幕输出详细运行日至: +屏幕输出详细运行日志: -`python3 test/main.py test/testsuite/ouroboros/string_test/RT0001-rt-string-ReflectString/ReflectString.java --test_cfg=test/testsuite/ouroboros/test.cfg --verbose` +`python3 test/main.py test/testsuite/ouroboros/string_test/RT0001-rt-string-ReflectString/ReflectString.java --test_cfg=test/testsuite/ouroboros/ --verbose` ### 测试套配置 -测试套配置文件路径为 `testsuite/ourobors/test.cfg`, 含有测试套的一些设置和内部变量 +测试套配置文件路径在 `testsuite/ourobors/`下, 以`test.cfg`为例,其中含有测试套的一些设置和内部变量 ```ini [suffix] java = // [internal-var] -maple = python3 ${MAPLE_ROOT}/test/testsuite/maple.py -run = # -build_option = --javac="-bootclasspath ${MAPLE_ROOT}/libjava-core/java-core.jar" --maple="-O0 --mplt=${MAPLE_ROOT}/libjava-core/java-core.mplt --option=\"-use-string-factory::: \"" -s maple -run_option = +maple = <用例编译脚本> +run = <用运行脚本> +build_option = <编译脚本参数> +run_option = <运行脚本参数> [description] title = Maple Ouroboros Test ``` -**`[suffix]`**:限定搜索测试用例文件的后缀,以及测试用例中注释符,注释符后会跟随执行语句或者校验语句,当前测试套中的用例为 `java` 文件,`\\` 作为注释符 +**`[suffix]`**:限定搜索测试用例文件的后缀,以及测试用例中注释符,注释符后会跟随执行语句或者校验语句,当前测试套中的用例为 `java` 文件,`//` 作为注释符。 -**`[internal-val]`**:内部变量,此处的内部变量会替换用例中相应的变量。例如配置文件中的 `maple = python3 ${MAPLE_ROOT}/test/testsuite/maple.py` ,将会将用例中跟随在 `\\ EXEC: ` 之后的执行语句中的 `%maple` 替换为 `python3 ${MAPLE_ROOT}/test/testsuite/maple.py`。当前的用例只能编译无法运行所以在内部变量 `run` 出用 `shell` 注释符 `#` 代表,注释运行的语句。 +**`[internal-val]`**:内部变量,此处的内部变量会替换用例中相应的变量。例如配置文件中的 `maple = python3 ${MAPLE_ROOT}/test/testsuite/maple.py` ,将会将用例中跟随在 `\\ EXEC: ` 之后的执行语句中的 `%maple` 替换为 `python3 ${MAPLE_ROOT}/test/testsuite/maple.py`。 -**`[description]`**:测试套的描述信息 +**`[description]`**:测试套的描述信息。 ### 测试套列表 -默认测试列表路径为 `testsuite/ourobors/testlist`,测试列表规定了运行测试用例的范围,同时指定了排除的测试用例 +默认测试列表路径为 `testsuite/ourobors/testlist`,测试列表规定了运行测试用例的范围,同时指定了排除的测试用例。 -```list -[ALL-TEST-CASE] - arrayboundary_test - clinit_test - eh_test - fuzzapi_test - other_test - parent_test - reflection_test - stmtpre_test - string_test - subsumeRC_test - thread_test - unsafe_test - memory_management - -[EXCLUDE-TEST-CASE] - memory_management/Annotation -``` - -由两个部分组成:`[ALL-TEST-CASE]` 与 `[EXCLUDE-TEST-CASE]` - -`[ALL-TEST-CASE]`: 指定了运行测试用例的范围 - -`[EXCLUDE-TEST-CASE]`: 不运行的测试用例 - -当前测试用例排除了测试套 `testsuite/ourobors` 下子文件夹 `memory_management/Annotation` 中所有的用例文件 - ` 之后的执行语句中的 `%maple` 替换为 `python3 ${MAPLE_ROOT}/test/testsuite/maple.py`。当前的用例只能编译无法运行所以在内部变量 `run` 出用 `shell` 注释符 `#` 代表,注释运行的语句。 - -**`[description]`**:测试套的描述信息 - -### 测试套列表 - -默认测试列表路径为 `testsuite/ourobors/testlist`,测试列表规定了运行测试用例的范围,同时指定了排除的测试用例 - -```list +```ini [ALL-TEST-CASE] arrayboundary_test clinit_test @@ -290,69 +225,21 @@ title = Maple Ouroboros Test 由两个部分组成:`[ALL-TEST-CASE]` 与 `[EXCLUDE-TEST-CASE]` -`[ALL-TEST-CASE]`: 指定了运行测试用例的范围 - -`[EXCLUDE-TEST-CASE]`: 不运行的测试用例 - -当前测试用例排除了测试套 `testsuite/ourobors` 下子文件夹 `memory_management/Annotation` 中所有的用例文件 +**`[ALL-TEST-CASE]`**: 指定了运行测试用例的范围。 -#### 完整Main.mpl - -``` - func &addf32r( - var %i f32, var %j f32 - ) f32 { - return ( - add f32(dread f32 %i, dread f32 %j))} +**`[EXCLUDE-TEST-CASE]`**: 不运行的测试用例。 - func &addf32I ( - var %i f32 - ) f32 { - return ( - add f32(dread f32 %i, - constval f32 1.234f))} - # EXEC: %irbuild Main.mpl - # EXEC: %irbuild Main.irb.mpl - # EXEC: %cmp Main.irb.mpl Main.irb.irb.mpl -``` +当前测试用例排除了测试套 `testsuite/ourobors` 下子文件夹 `memory_management/Annotation` 中所有的用例文件,及部分其他用例。 -#### 1. 测试案例部分 -``` - func &addf32r( - var %i f32, var %j f32 - ) f32 { - return ( - add f32(dread f32 %i, dread f32 %j))} +## irbuild测试套 - func &addf32I ( - var %i f32 - ) f32 { - return ( - add f32(dread f32 %i, - constval f32 1.234f))} -``` - -#### 2. 测试案例运行部分 - -``` - # EXEC: %irbuild Main.mpl - # EXEC: %irbuild Main.irb.mpl - # EXEC: %cmp Main.irb.mpl Main.irb.irb.mpl -``` - -三条执行语句: - -1. EXEC语句,利用%irbuild,编译Main.mpl为Main.irb.mpl -2. EXEC语句,利用%irbuild,编译Main.irb.mpl为Main.irb.irb.mpl -3. EXEC语句,利用%cmp,比较Main.irb.irb.mpl与Main.irb.mpl是否一致,一致测试通过 - - -## irbuild测试套配置说明 +irbuild用于对maple中端产物进行测试,仅进行本地测试,不支持手机测试。 irbuild测试套配置:testsuite/irbuild_test/test.cfg -如果涉及脚本的运行路径需要填写绝对路径或者在环境变量(PATH)中 -例如配置文件中:如果cmp在PATH中,则 cmp = cmp 即可,如果不在则 cmp = /usr/bin/cmp +如果涉及脚本的运行路径需要填写绝对路径或者在环境变量(PATH)中,例如: + +配置文件中:如果cmp在PATH中,则 cmp = cmp 即可,如果不在则 cmp = /usr/bin/cmp ```ini [suffix] @@ -366,27 +253,6 @@ cmp = /usr/bin/cmp -s title = Maple Irbuild Test ``` -### suffix说明 - -```ini -[suffix] -mpl = # -``` - -* 测试用例以"mpl"作为文件后缀 -* 文件后缀"mpl"的测试用例内以"#"作为注释符 - -### 内部变量说明 - -```ini -[internal-var] -irbuild = ${MAPLE_ROOT}/output/bin/irbuild -cmp = /usr/bin/cmp -s -``` - -* 所有测试用例中的EXEC语句内的"%irbuild"会被替换为"${MAPLE_ROOT}/output/bin/irbuild" -* 所有测试用例中的EXEC语句内的"%cmp"会被替换为"/usr/bin/cmp -s" - ### 运行单个irbuild用例 ```shell @@ -409,7 +275,7 @@ python3 main.py -pFAIL -pPASS --timeout=180 --test_cfg=testsuite/irbuild_test/te └── ... ``` -### `irbuild_test` 测试用例说明 +### irbuild_test 测试用例说明 #### 完整Main.mpl @@ -460,4 +326,4 @@ python3 main.py -pFAIL -pPASS --timeout=180 --test_cfg=testsuite/irbuild_test/te 1. EXEC语句,利用%irbuild,编译Main.mpl为Main.irb.mpl 2. EXEC语句,利用%irbuild,编译Main.irb.mpl为Main.irb.irb.mpl -3. EXEC语句,利用%cmp,比较Main.irb.irb.mpl与Main.irb.mpl是否一致,一致测试通过 +3. EXEC语句,利用%cmp,比较Main.irb.irb.mpl与Main.irb.mpl是否一致,一致测试通过 \ No newline at end of file