Name |
Date |
Size |
#Lines |
LOC |
||
---|---|---|---|---|---|---|
.. | - | - | ||||
report_base/ | 12-May-2024 | - | 611 | 610 | ||
src/ | 12-May-2024 | - | 204,146 | 164,037 | ||
.gitignore | D | 12-May-2024 | 43 | 8 | 7 | |
AUTHORS | D | 12-May-2024 | 103 | 8 | 7 | |
BUILD.gn | D | 12-May-2024 | 415 | 21 | 17 | |
COPYRIGHT | D | 12-May-2024 | 1.3 KiB | 30 | 22 | |
Makefile | D | 12-May-2024 | 4.1 KiB | 155 | 133 | |
README | D | 12-May-2024 | 4.2 KiB | 106 | 82 | |
README-HowtoRun.md | D | 12-May-2024 | 2.2 KiB | 57 | 33 | |
config.mak.def | D | 12-May-2024 | 462 | 12 | 9 | |
test_template.gni | D | 12-May-2024 | 8.3 KiB | 296 | 247 |
README
1libc-test is developed as part of the musl project 2http://www.musl-libc.org/ 3 4configuring: 5 cp config.mak.def config.mak 6 edit config.mak 7build and run tests: 8 make 9clean up: 10 make clean 11 12make builds all test binaries and runs them to create 13a REPORT file that contains all build and runtime errors 14(this means that make does not stop at build failures) 15 16contributing tests: 17 18design goals: 19 20- tests should be easy to run and build even a single test in isolation 21(so test should be self contained if possible) 22- failure of one test should not interfere with others 23(build failure, crash or unexpected results are all failures) 24- test output should point to the cause of the failure 25- test results should be robust 26- the test system should have minimal dependency 27(libc, posix sh, gnu make) 28- the test system should run on all archs and libcs 29- tests should leave the system in a clean state 30 31conventions: 32 33each test is in a separate file at a path like src/directory/file.c with 34its own main 35 36the test should return 0 on success and non-0 on failure, on failure it 37should print error messages to standard out if possible, on success no 38message should be printed 39 40to help with the above test protocol use t_error function for printing 41errors and return t_status from main, see src/common/test.h 42(t_error allows standard printf formatting, outputs at most 512bytes 43in a single write call to fd 1, so there is no buffering, long outputs 44are truncated, it sets the global t_status to 1) 45 46it is common to do many similar checks in a test, in such cases macros 47may be used to simplify the code like 48#define T1(a,b) (check(a,b) || (t_error("check(%s,%s) failed\n", a, b),0)) 49#define T2(f,w) (result=(f), result==(w) || (t_error("%s failed: got %s, want %s\n", #f, result, w),0)) 50 51binaries should be possible to run from arbitrary directory. 52the build system runs the tests using the src/common/runtest tool which 53kills the test process after a timeout and reports the exit status 54in case of failure 55 56directories: 57 58src/api: interface tests, build time include header tests 59src/common: common utilities compiled into libtest.a 60src/functional: functional tests aiming for large coverage of libc 61src/math: tests for each math function with input-output test vectors 62src/regression: regression tests aiming for testing particular bugs 63 64initial set of functional tests are derived from the libc-testsuit of 65Rich Felker, regression tests should contain reference of the bug 66(musl commit hash, glibc bug tracker url, etc) 67 68build system: 69 70the main non-file make targets are all, run, clean and cleanall. 71(cleanall removes the reports unlike clean, run reruns the dynamically 72linked executables) 73 74make variable can be overridden from config.mak or the make command line, 75the variable B sets the build directory which is src by default 76 77for each directory under src there are targets like $(B)/directory/all, 78$(B)/directory/run and $(B)/directory/clean to make only the contents 79of that directory, each directory has its own Makefile set up so it 80invokes the top level make with B=src src/directory/foo for the foo 81target, so it is possible to work only under a specific test directory 82 83the build and runtime errors of each target are accumulated into a 84target.err file and in the end they are concatenated into a REPORT 85 86each .c file in src/functional and src/regression are built into a 87dynamic linked and a static linked executable test binary by default, 88this behaviour can be changed by a similarly named .mk file changing 89make variables and specifying additional rules: 90 91$(B)/$(N) is the name of the binary target (the file name without the .c) 92$(B)/$(N)-static is the name of the static binary target 93$(B)/$(D) is the build directory 94$(N).CFLAGS are added to the CFLAGS at compilation 95$(N).LDFLAGS are added to the LDFLAGS at linking 96$(N).LDLIBS are added to the LDLIBS at linking 97$(N).BINS are the targets (if empty no binaries are built) 98$(N).LIBS are the non-executable targets (shared objects may use it) 99 100if a binary is linked together from several .o files then they 101have to be specified as prerequisits for the binary targets and 102added to the $(N).LDLIBS as well 103 104if a binary depends on a file at runtime (eg. a .so opened by dlopen) 105then the $(N).err target should depend on that file 106
README-HowtoRun.md
1## libc-test脚本使用说明 2 3### 一、生成用例 4 5编译命令,单独编译出libc-test测试用例 6 7```shell 8./build.sh --product-name Hi3516DV300 --build-target third_party/musl:libctest 9``` 10 11文件生成的目录位于 `out/hi3516dv300/tests/unittest/libc-test` 12 13注: 14 15旧版ohos中,文件生成的目录位于 `out/ohos-arm-release/tests/unittest/libc-test`,请根据实际修改脚本中相关路径!! 16 17请务必根据实际修改脚本中相关路径! 18 19### 二、执行用例 20 211. 将HDC(Windows版)工具加入到windows环境变量,并将工具改名为hdc.exe。连接上开发板,保证HDC工具可以连接。 22 232. 进入musl/scripts,并根据实际环境,修改runtest.bat中测试用例生成目录完整路径(必要) 24 25 ```bat 26 @REM 本地OpenHarmony源码目录,请根据实际环境修改!! 27 set LOCAL=\\wsl$\ubuntu-20.04\home\OHOS\ 28 @REM 本地编译out目录 29 set OUTDIR=out\hi3516dv300 30 ``` 31 323. 将bat脚本复制到windows环境下使用!!windows端双击运行runtest.bat,执行完毕会将结果REPORT返回到当前bat所在目录。 33 34 此bat将从WSL映射目录传输文件到单板目录下,由于WSL无法直接访问windows端口,所以在WSL中直接使用可能无法传输用例。 35 364. 若要单独执行测试用例,需要先将common目录下的`runtest`与用例传输到单板,再通过命令执行,结果将打印出来 37 38 ```shell 39 ./runtest -w '' {filename} 40 ``` 415. runtest.bat执行结束前会将输出的REPORT与在libc-test/report_base下的REPORT相比较,如果比较出不同将会在scripts下 42 生成一个result.html文件,否则不生成。 43 44 45### 三、增加用例 46 47若要在functional、math、regression或增加用例,需要在相应目录的test_src_{dir}.gni中添加文件名。 48 49例如: 50 511、需要在functional目录中新增一个用例:由`new_test.c`生成可执行文件`new_test` 52 532、首先把c文件放入functional目录中,打开`test_src_functional.gni`,在`functional_list`中最后一行增加`"new_test",` 54 553、执行步骤一(生成用例)中的编译命令,即可生成对应可执行文件。 56 57