Selaa lähdekoodia

* Fixed unit test groups

* Added line counter tool
master
bergmann 6 vuotta sitten
vanhempi
commit
cfb117e45b
4 muutettua tiedostoa jossa 170 lisäystä ja 6 poistoa
  1. +2
    -2
      projects/helloworld/test/CMakeLists.txt
  2. +2
    -2
      projects/libhelloworld/test/CMakeLists.txt
  3. +2
    -2
      projects/libinterface/test/CMakeLists.txt
  4. +164
    -0
      tools/count-lines

+ 2
- 2
projects/helloworld/test/CMakeLists.txt Näytä tiedosto

@@ -8,7 +8,7 @@ Find_Package ( Sanitizers QUIET )

# Test ############################################################################################

Find_Package ( GTest )
Find_Package ( GTest QUIET )
If ( NOT "${GTest_FOUND}" )
Return ( )
EndIf ( )
@@ -52,7 +52,7 @@ ForEach ( FILE IN LISTS HELLOWORLD_TEST_SOURCE_FILES

# test
If ( HAS_CMAKE_TESTS )
Add_CMake_Test ( NAME ${TEST_NAME} TARGET ${TEST_NAME} )
Add_CMake_Test ( NAME ${TEST_NAME} TARGET ${TEST_NAME} GROUP helloworld )
Else ( )
Add_Test ( NAME ${TEST_NAME} COMMAND ${TEST_NAME} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )
EndIf ( )


+ 2
- 2
projects/libhelloworld/test/CMakeLists.txt Näytä tiedosto

@@ -8,7 +8,7 @@ Find_Package ( Sanitizers QUIET )

# Test ############################################################################################

Find_Package ( GTest )
Find_Package ( GTest QUIET )
If ( NOT "${GTest_FOUND}" )
Return ( )
EndIf ( )
@@ -52,7 +52,7 @@ ForEach ( FILE IN LISTS LIBHELLOWORLD_TEST_SOURCE_FI

# test
If ( HAS_CMAKE_TESTS )
Add_CMake_Test ( NAME ${TEST_NAME} TARGET ${TEST_NAME} )
Add_CMake_Test ( NAME ${TEST_NAME} TARGET ${TEST_NAME} GROUP libhelloworld )
Else ( )
Add_Test ( NAME ${TEST_NAME} COMMAND ${TEST_NAME} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )
EndIf ( )


+ 2
- 2
projects/libinterface/test/CMakeLists.txt Näytä tiedosto

@@ -8,7 +8,7 @@ Find_Package ( Sanitizers QUIET )

# Test ############################################################################################

Find_Package ( GTest )
Find_Package ( GTest QUIET )
If ( NOT "${GTest_FOUND}" )
Return ( )
EndIf ( )
@@ -52,7 +52,7 @@ ForEach ( FILE IN LISTS LIBINTERFACE_TEST_SOURCE_FIL

# test
If ( HAS_CMAKE_TESTS )
Add_CMake_Test ( NAME ${TEST_NAME} TARGET ${TEST_NAME} )
Add_CMake_Test ( NAME ${TEST_NAME} TARGET ${TEST_NAME} GROUP libinterface )
Else ( )
Add_Test ( NAME ${TEST_NAME} COMMAND ${TEST_NAME} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )
EndIf ( )


+ 164
- 0
tools/count-lines Näytä tiedosto

@@ -0,0 +1,164 @@
#!/bin/bash

ScriptFile=$(readlink -f "${BASH_SOURCE[0]}")
ScriptDir=$(dirname "${ScriptFile}")
SearchDir="${ScriptDir}"
FileExts="h;in;hpp;inl;c;cpp;make;cmake;txt;json;js;jsx;ts;tsx;html;tpl;css"
Verbose=0

function Log()
{
printf "$@\n"
}

function Error()
{
>&2 printf "$@\n"
}

function Panic()
{
Error "$@"
exit 1
}

function PrintHelp()
{
printf "
This is a tool to calculate the number of code lines within a certain folder.

The tool looks for a 'CMakeLists.txt' or a 'Makefile' in the subfolders.
If such a file exists, the folder is treated as subproject.
Subprojects have their own counters.

Parameters:

-d|--dir <directory>
Directory to search in
(default ${SearchDir}).

-e|--ext <file extension>
File extension to look for
(default: ${FileExts})

-v|--verbose
Verbose output (Print lines of code for each file extension)
(default: false)

-?|-h|--help
Print this help.

"
}

# Parse arguments
while [ $# -gt 0 ]; do
case $1 in
"-d" | "--dir" )
if [ $# -lt 2 ]; then
Panic "Parameter $1 expects exactly one parameter!"
fi
SearchDir=$(readlink -m "$2")
shift
;;

"-e" | "--ext" )
if [ $# -lt 2 ]; then
Panic "Parameter $1 expects exactly one parameter!"
fi
FileExts="$2"
shift
;;

"-v" | "--verbose" )
Verbose=1
;;

"-h" | "-?" | "--help" )
PrintHelp
exit 0
;;

* )
Panic "Invalid or unknown parameter: $1"
;;
esac
shift
done

OLD_IFS=${IFS}
IFS=';'
read -ra Exts <<< "${FileExts}"
IFS=${OLD_IFS}

Projects="$(find ${SearchDir} -type d -exec sh -c 'test -f "$1/CMakeLists.txt" || test -f "$1/Makefile"' -- {} \; -print -prune)"
First=1
declare -A ExtLines
TotalLines=0
echo "======================================="
echo "= Lines of Code ="
echo "======================================="
for Project in ${Projects[@]}; do
Name=${Project#"$SearchDir"}

if [ "$Verbose" -eq 1 ]; then
if [ "$First" -eq 1 ]; then
echo "_______________________________________"
fi
printf "%-30s\n" "${Name:-root}:"
echo " \`+-----------------------------------"
fi

ProjectLines=0
for ext in "${Exts[@]}"; do
Lines=$(find ${Project} \
-type f \
-iname *.${ext} \
2>/dev/null \
| xargs cat 2>/dev/null \
| wc -l)

if [ "$Verbose" -eq 1 ] && [ "$Lines" -gt 0 ]; then
printf " |%-26s %8d\n" "${ext}" ${Lines}
fi

if [ "$First" -eq 1 ]; then
ExtLines[$ext]=$Lines
else
let ExtLines[$ext]=${ExtLines[$ext]}+${Lines}
fi

let ProjectLines=${ProjectLines}+${Lines}
done

if [ "$Verbose" -eq 1 ]; then
echo " +-----------------------------------"
printf " |%-26s %8d\n" "total:" ${ProjectLines}
else
printf "%-30s %8d\n" "${Name:-root}:" ${ProjectLines}
fi

First=0

let TotalLines=${TotalLines}+${ProjectLines}
done

echo "======================================="

if [ "$Verbose" -eq 1 ]; then
printf "%-30s\n" "total:"
echo " \`+-----------------------------------"

for ext in "${Exts[@]}"; do
if [ "${ExtLines[$ext]}" -gt 0 ]; then
printf " |%-26s %8d\n" "${ext}" ${ExtLines[$ext]}
fi
done

echo " +-----------------------------------"
printf " |%-26s %8d\n" "total:" ${TotalLines}
else
printf "%-30s %8d\n" "total:" ${TotalLines}
fi

echo "======================================="

Ladataan…
Peruuta
Tallenna