| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- #!/usr/bin/env bash
- #
- # Copyright (c) 2022 Project CHIP Authors
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- #
- set -e
- _normpath() {
- python -c "import os.path; print(os.path.normpath('$@'))"
- }
- CHIP_ROOT=$(_normpath "$(dirname "$0")/..")
- OUTPUT_ROOT="$CHIP_ROOT/out/coverage"
- COVERAGE_ROOT="$OUTPUT_ROOT/coverage"
- skip_gn=false
- help() {
- echo "Usage: $file_name [ options ... ]"
- echo "General Options:
- -h, --help Display this information.
- Input Options:
- -o, --output_root Set the build output directory. When set manually, performs only lcov stage
- on provided build output. Assumes output_root has been built with 'use_coverage=true'
- and that 'ninja check' was run.
- "
- }
- file_name=${0##*/}
- while (($#)); do
- case $1 in
- --help | -h)
- help
- exit 1
- ;;
- --output_root | -o)
- OUTPUT_ROOT=$2
- COVERAGE_ROOT="$OUTPUT_ROOT/coverage"
- skip_gn=true
- shift
- ;;
- -*)
- help
- echo "Unknown Option \"$1\""
- exit 1
- ;;
- esac
- shift
- done
- # Ensure we have a compilation environment
- source "$CHIP_ROOT/scripts/activate.sh"
- # Generates ninja files
- if [ "$skip_gn" == false ]; then
- gn --root="$CHIP_ROOT" gen "$OUTPUT_ROOT" --args='use_coverage=true'
- ninja -C "$OUTPUT_ROOT" check
- fi
- mkdir -p "$COVERAGE_ROOT"
- lcov --initial --capture --directory "$OUTPUT_ROOT/obj" --output-file "$COVERAGE_ROOT/lcov_base.info"
- lcov --capture --directory "$OUTPUT_ROOT"/obj --output-file "$COVERAGE_ROOT/lcov_test.info"
- lcov --add-tracefile "$COVERAGE_ROOT/lcov_base.info" --add-tracefile "$COVERAGE_ROOT/lcov_test.info" --output-file "$COVERAGE_ROOT/lcov_final.info"
- genhtml "$COVERAGE_ROOT/lcov_final.info" --output-directory "$COVERAGE_ROOT/html"
|