-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathrun_test.sh
More file actions
executable file
·55 lines (46 loc) · 1.55 KB
/
Copy pathrun_test.sh
File metadata and controls
executable file
·55 lines (46 loc) · 1.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/bin/sh
# 运行 GTest 单元测试并生成覆盖率报告(gcov + gcovr)。
# 前置:先执行 `sh build.sh GTest`
set -eu
BUILD_DIR="build/GTest"
TEST_BINARY="${BUILD_DIR}/video_player_tests"
COVERAGE_DIR="coverage_report"
GCOVR="python3 -m gcovr"
# macOS 的 clang 用 llvm-cov 提供 gcov 兼容接口
GCOV_ARGS=""
if [ "$(uname)" = "Darwin" ]; then
GCOV_ARGS="--gcov-executable 'xcrun llvm-cov gcov'"
fi
if ! $GCOVR --version >/dev/null 2>&1; then
echo "Error: gcovr is required to generate coverage reports."
echo "Install it with:"
echo " python3 -m pip install --user -r requirements.txt"
exit 1
fi
if [ ! -x "${TEST_BINARY}" ]; then
echo "Error: test binary not found: ${TEST_BINARY}"
echo "Build tests first:"
echo " sh build.sh GTest"
exit 1
fi
rm -rf "${COVERAGE_DIR}"
mkdir -p "${COVERAGE_DIR}"
find "${BUILD_DIR}" -name '*.gcda' -delete
# 运行测试(WORKING_DIRECTORY 为项目根,测试资源路径已由 VP_TEST_DIR 提供绝对路径)
"${TEST_BINARY}"
PROJECT_ROOT="$(pwd)"
# shellcheck disable=SC2086
eval $GCOVR \
--root "\"${PROJECT_ROOT}\"" \
--object-directory "\"${BUILD_DIR}\"" \
--filter "\"${PROJECT_ROOT}/src/.*\"" \
--exclude "\"${PROJECT_ROOT}/test/.*\"" \
--exclude "\"${PROJECT_ROOT}/third_party/.*\"" \
${GCOV_ARGS} \
--txt "\"${COVERAGE_DIR}/coverage.txt\"" \
--html-details "\"${COVERAGE_DIR}/index.html\"" \
--html-single-page \
--xml "\"${COVERAGE_DIR}/coverage.xml\"" \
--print-summary
echo ""
echo "Coverage report: ${COVERAGE_DIR}/index.html"