summaryrefslogtreecommitdiffstats
path: root/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/scripts/Gcov_test.sh
diff options
context:
space:
mode:
Diffstat (limited to 'debian/uncrustify-trinity/uncrustify-trinity-0.75.0/scripts/Gcov_test.sh')
-rwxr-xr-xdebian/uncrustify-trinity/uncrustify-trinity-0.75.0/scripts/Gcov_test.sh162
1 files changed, 162 insertions, 0 deletions
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/scripts/Gcov_test.sh b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/scripts/Gcov_test.sh
new file mode 100755
index 00000000..a3853773
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/scripts/Gcov_test.sh
@@ -0,0 +1,162 @@
+#!/bin/bash
+#
+# @author Guy Maurel
+# @license GPL v2+
+#
+# 30. 4. 2018
+#
+# The script prepare a new version of uncrustify with the compile options:
+# CMAKE_CXX_FLAGS -fprofile-arcs -ftest-coverage
+# CMAKE_C_FLAGS -fprofile-arcs -ftest-coverage
+# to use the facilities from gcov.
+# Running uncrustify with all the test data will mark all parts of the sources
+# which are used.
+# The "not marked" portions, if any, should give the opportunity to prepare new
+# test data to complete the whole tests.
+# The results are stored in the directory ${TOTALS_DIR}
+# The name of the file is ${source_file}.total
+# The line(s) of code which are still not used by any of the tests cases are
+# marked which the token "#####" at the beginning of the line.
+# As the testing part (unc_tools.cpp, backup.cpp) are only used by a developper,
+# all the lines are marked.
+# Also the detect.cpp part of uncrustify is completly marked.
+#
+# TAKE ATTENTION:
+# ===============
+#
+# Running the test is long. I need about 20 minutes.
+# This is about 40 times so much as the ctest.
+# The disk space necessary is also very big, about 3 Gbytes
+# This is about 1500 times bigger as the sources.
+#
+SCRIPT_NAME=$0
+#echo "SCRIPT_NAME="${SCRIPT_NAME}
+BASE_NAME=`basename ${SCRIPT_NAME}`
+DIR_NAME=`dirname ${SCRIPT_NAME}`
+if [ ${DIR_NAME} != "." ] ;
+then
+ echo "you must use the script at the directory <uncrustify_directory>/scripts"
+ exit
+fi
+cd ..
+SOURCES_LIST_H=`ls -1 src/*.h | cut -b 5-`
+SOURCES_LIST_CPP=`ls -1 src/*.cpp | cut -b 5-`
+#
+rm -rf gcov_test
+mkdir gcov_test
+#
+cd gcov_test
+# build a new uncrustify binary
+cmake -D CMAKE_BUILD_TYPE=Release \
+ -D CMAKE_C_FLAGS="-fprofile-arcs -ftest-coverage" \
+ -D CMAKE_CXX_FLAGS="-fprofile-arcs -ftest-coverage" ..
+make
+# use uncrustify without parameter
+./uncrustify
+#
+GCNO_LIST=`ls -1 ./CMakeFiles/uncrustify.dir/src/*.gcno`
+for gcno_file in ${GCNO_LIST}
+do
+ echo "gcno_file=${gcno_file}"
+ gcno_base_name=`basename ${gcno_file} .gcno`
+ echo ${gcno_base_name}
+ gcov ${gcno_file} -m
+done
+#
+ADD_TEST_LIST="add_test_list.txt"
+ADD_TEST_LIST_10="add_test_list_10.txt"
+ADD_TEST_LIST_NUMBER="add_test_list_number.txt"
+ADD_TEST_LIST_AWK="../scripts/add_test_list.awk"
+ADD_TEST_LIST_CMD="add_test_list.sh"
+#
+# prepare a list of all tests
+grep add_test ../build/tests/CTestTestfile.cmake > ${ADD_TEST_LIST}
+cut -b 10- < ${ADD_TEST_LIST} > ${ADD_TEST_LIST_10}
+cut --delimiter=" " --fields=1 < ${ADD_TEST_LIST_10} > ${ADD_TEST_LIST_NUMBER}
+#
+NUMBER_LIST=`cat ${ADD_TEST_LIST_NUMBER}`
+#
+# prepare a new script file to use uncrustify with all the tests cases
+gawk --file ${ADD_TEST_LIST_AWK} \
+ --assign sources_cpp="${SOURCES_LIST_CPP}" \
+ --assign sources_h="${SOURCES_LIST_H}" < ${ADD_TEST_LIST} > ${ADD_TEST_LIST_CMD}
+chmod +x ${ADD_TEST_LIST_CMD}
+#
+# ATTENTION: this takes about 10 minutes
+# use the new script file ADD_TEST_LIST_CMD to build the information
+./${ADD_TEST_LIST_CMD}
+#
+# compare, add the counts of each lines of generated gcov-tests
+COMPARE_AND_ADD="../scripts/compare_the_gcov.awk"
+TOTALS_DIR="Totals"
+mkdir -p Totals
+#
+# choose
+DO_IT_WITH_TEST="yes"
+#DO_IT_WITH_TEST="no"
+#
+# and apply
+if [ ${DO_IT_WITH_TEST} == "yes" ]
+then
+ # do it with intermediate files
+ # to save the last file of each test
+ for test_number in ${NUMBER_LIST}
+ do
+ last_test_number=${test_number}
+ done
+ #
+ for source_file in ${SOURCES_LIST_CPP}
+ do
+ echo "source_file is ${source_file}"
+ I_file="blabla"
+ # this file doesn' exists
+ for test_number in ${NUMBER_LIST}
+ do
+ echo "source_file is ${source_file}: test_number=${test_number}"
+ H_DIR="${source_file}_Dir"
+ mkdir -p ${TOTALS_DIR}/${H_DIR}
+ TEST_FILE=${test_number}/${source_file}.gcov
+ if [ -s ${TEST_FILE} ] ;
+ then
+ O_file="${TOTALS_DIR}/${H_DIR}/${test_number}"
+ gawk --file ${COMPARE_AND_ADD} \
+ --assign in_file="${I_file}" \
+ --assign out_file="${O_file}" < ${TEST_FILE}
+ I_file=${O_file}
+ fi
+ # to brake before the end
+ #if [ "${test_number}" == "c-sharp_10010" ]
+ #if [ "${test_number}" == "c_10005" ]
+ #if [ "${test_number}" == "cpp_60042" ]
+ #then
+ # exit
+ #fi
+ done
+ # save the last file of each test
+ cp ${O_file} ${TOTALS_DIR}/${source_file}.total
+ done
+else
+ # do it directly, without intermediate files
+ for source_file in ${SOURCES_LIST_CPP}
+ do
+ for test_number in ${NUMBER_LIST}
+ do
+ echo "source_file is ${source_file}: test_number=${test_number}"
+ TEST_FILE=${test_number}/${source_file}.gcov
+ TOTALS_FILE=${source_file}
+ if [ -s ${TEST_FILE} ] ;
+ then
+ gawk --file ${COMPARE_AND_ADD} \
+ --assign in_file="${TOTALS_DIR}/${TOTALS_FILE}" \
+ --assign out_file="${TOTALS_DIR}/${TOTALS_FILE}" < ${TEST_FILE}
+ fi
+ # to brake before the end
+ #if [ "${test_number}" == "c-sharp_10010" ]
+ #if [ "${test_number}" == "c_10005" ]
+ #if [ "${test_number}" == "cpp_60042" ]
+ #then
+ # exit
+ #fi
+ done
+ done
+fi