From 3a0d82fa24015c1b43e4b85505f84b9064639579 Mon Sep 17 00:00:00 2001 From: Nima Talebi Date: Tue, 10 Jan 2017 00:49:00 +0000 Subject: [PATCH] Added `kcov'/`codecov.io' support --- .travis.yml | 46 +++++++++++------ README.md | 8 +-- codecov.yml | 2 + module/unit.sh | 3 +- share/unit/citm | 134 +++++++++++++++++++++++++++++++++++++----------- 5 files changed, 143 insertions(+), 50 deletions(-) create mode 100644 codecov.yml diff --git a/.travis.yml b/.travis.yml index ff6f21a9..e7b20a7a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,6 @@ -language: c #. Not really, it's actually bash +language: bash + +sudo: required branches: only: @@ -18,20 +20,34 @@ env: - PATH="${PATH}:${HOME}/bin" matrix: - CONTEXT=installer MODULE=- - - CONTEXT=execute MODULE=core - - CONTEXT=execute MODULE=cpf - - CONTEXT=execute MODULE=dns - - CONTEXT=execute MODULE=git - - CONTEXT=execute MODULE=gpg - - CONTEXT=execute MODULE=help - - CONTEXT=execute MODULE=hgd - - CONTEXT=execute MODULE=net - - CONTEXT=execute MODULE=remote - - CONTEXT=execute MODULE=tunnel - # CONTEXT=execute MODULE=tutorial - - CONTEXT=execute MODULE=util - - CONTEXT=execute MODULE=vault - - CONTEXT=execute MODULE=xplm + - CONTEXT=execute MODULE=core + - CONTEXT=coverage MODULE=core + - CONTEXT=execute MODULE=cpf + - CONTEXT=coverage MODULE=cpf + - CONTEXT=execute MODULE=dns + - CONTEXT=coverage MODULE=dns + - CONTEXT=execute MODULE=git + - CONTEXT=coverage MODULE=git + - CONTEXT=execute MODULE=gpg + - CONTEXT=coverage MODULE=gpg + - CONTEXT=execute MODULE=help + - CONTEXT=coverage MODULE=help + - CONTEXT=execute MODULE=hgd + - CONTEXT=coverage MODULE=hgd + - CONTEXT=execute MODULE=net + - CONTEXT=coverage MODULE=net + - CONTEXT=execute MODULE=remote + - CONTEXT=coverage MODULE=remote + # CONTEXT=execute MODULE=tunnel + # CONTEXT=coverage MODULE=tunnel + # CONTEXT=execute MODULE=tutorial + # CONTEXT=coverage MODULE=tutorial + - CONTEXT=execute MODULE=util + - CONTEXT=coverage MODULE=util + - CONTEXT=execute MODULE=vault + - CONTEXT=coverage MODULE=vault + # CONTEXT=execute MODULE=xplm + # CONTEXT=coverage MODULE=xplm matrix: allow_failures: diff --git a/README.md b/README.md index 2631fafb..c621ea02 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ The Simbol README is maintained in the [GitHub Pages README](https://github.com/ # Build Status -| Branch | Status | Coverage | -|------------|--------|----------| -| `master` | [![Build Status](https://travis-ci.org/schtunt/simbol.png?branch=master)](https://travis-ci.org/schtunt/simbol/branches) | [![Coverage Status](https://coveralls.io/repos/github/schtunt/simbol/badge.svg?branch=master)](https://coveralls.io/github/schtunt/simbol?branch=master) | -| `develop` | [![Build Status](https://travis-ci.org/schtunt/simbol.png?branch=develop)](https://travis-ci.org/schtunt/simbol/branches) | [![Coverage Status](https://coveralls.io/repos/github/schtunt/simbol/badge.svg?branch=develop)](https://coveralls.io/github/schtunt/simbol?branch=develop) | +| Branch | `travis.io` | `coveralls.io` | `codecov.io` | +|------------|-------------|----------------|--------------| +| `master` | [![Build Status](https://travis-ci.org/schtunt/simbol.png?branch=master)](https://travis-ci.org/schtunt/simbol/branches) | [![Coverage Status](https://coveralls.io/repos/github/schtunt/simbol/badge.svg?branch=master)](https://coveralls.io/github/schtunt/simbol?branch=master) | [![codecov](https://codecov.io/gh/schtunt/simbol/branch/master/graph/badge.svg)](https://codecov.io/gh/schtunt/simbol) | +| `develop` | [![Build Status](https://travis-ci.org/schtunt/simbol.png?branch=develop)](https://travis-ci.org/schtunt/simbol/branches) | [![Coverage Status](https://coveralls.io/repos/github/schtunt/simbol/badge.svg?branch=develop)](https://coveralls.io/github/schtunt/simbol?branch=develop) | [![codecov](https://codecov.io/gh/schtunt/simbol/branch/develop/graph/badge.svg)](https://codecov.io/gh/schtunt/simbol) | diff --git a/codecov.yml b/codecov.yml new file mode 100644 index 00000000..562f7561 --- /dev/null +++ b/codecov.yml @@ -0,0 +1,2 @@ +codecov: + token: 8a343020-d6dd-4726-aa64-7e0c1ac5ad22 diff --git a/module/unit.sh b/module/unit.sh index 13ca3659..a7798286 100644 --- a/module/unit.sh +++ b/module/unit.sh @@ -238,7 +238,8 @@ function testCoverage() { if [ $count -gt 0 ]; then local -a fns=( $(grep -oE "${regex}" ${modulepath} | - sed -e "s/^function :\{0,2\}${module}:\([^.()]\+\)\(\.[a-z]\+\)\?()/\1/") + sed -e "s/^function :\{0,2\}${module}:\([^.()]\+\)\(\.[a-z]\+\)\?()/\1/" + ) ) for fn in ${fns[@]}; do local utf="test${profile^}${modulecaps}${fn^}${context^}" diff --git a/share/unit/citm b/share/unit/citm index 233508e3..1474a37f 100755 --- a/share/unit/citm +++ b/share/unit/citm @@ -14,21 +14,16 @@ #. #. See the short code below to figure out how those are used. -function run() { - echo "$ ${@}" - "${@}" - return $e -} - declare -g -A PACKAGES=( - [ALL]=make,coreutils,bash,sed,gawk,git,haveged - [gpg,vault,remote]=gnupg2,pwgen,xclip - [net]=iproute,net-tools,netcat,socat - [dns,remote]=dnsutils - [remote]=tmux,socat + [ALL]='make,coreutils,bash,sed,gawk,git,haveged' + [KCOV]='libcurl4-openssl-dev,libelf-dev,libdw-dev,cmake' + [gpg,vault,remote]='gnupg2,pwgen,xclip' + [net]='iproute,net-tools,netcat,socat' + [dns,remote]='dnsutils' + [remote]='tmux,socat' ) -function apt_get_install_for() { +function citm:apt_get_install_for() { local module="${1}" local mcsv @@ -43,26 +38,84 @@ function apt_get_install_for() { local -a packages IFS=, read -a packages <<< "${pkgcsv}" - run sudo apt-get install ${packages[@]} + citm:run sudo apt-get install ${packages[@]} +} + +function citm:run() { + local -i e=9 + + echo "$ ${@}" + "${@}" + e=$? + echo "# exit status: $e" + + return $e +} + +function citm:kcov() { + local -i e=9 + + case "$#:$1" in + 1:install) + citm:apt_get_install_for KCOV + e=$? + + if [ $e -eq 0 ]; then + echo "$ citm:kcov install" + wget -q https://github.com/SimonKagstrom/kcov/archive/master.tar.gz + tar xzf master.tar.gz + mkdir kcov-master/build + pushd kcov-master/build >/dev/null + cmake .. + make + sudo make install + e=$? + popd >/dev/null + rm -rf kcov-master master.tar.gz + fi + + echo "# citm:kcov install exit status: $e" + ;; + + *:run) + shift + echo "$ citm:kcov run ${*}" + mkdir coverage + kcov coverage "$@" + e=$? + echo "# citm:kcov run exit status: $e" + ;; + + 1:report) + echo "$ citm:kcov report codedov.io/bash" + bash <(curl -s https://codecov.io/bash) + e=$? + echo "# citm:kcov report exit status: $e" + ;; + esac + + return $e } declare -g EXIT=9 -echo "#. travis[$1].${CONTEXT?}(${MODULE?}) -=[" +echo "#. citm[$1].${CONTEXT?}(${MODULE?}) -=[" if [ $# -eq 1 ]; then case $1 in before_install) EXIT=0 - run sudo install -d /var/tmp -m 1777 ;((EXIT|=$?)) - run sudo install -m 0644\ + + citm:run sudo install -d /var/tmp -m 1777 ;((EXIT|=$?)) + citm:run sudo install -m 0644\ share/unit/files/apt.conf\ /etc/apt/apt.conf.d/99SiteUnitTest ;((EXIT|=$?)) - apt_get_install_for ${MODULE} ;((EXIT|=$?)) + citm:apt_get_install_for ${MODULE} ;((EXIT|=$?)) ;; install) EXIT=0 - run make install ;((EXIT|=$?)) + + citm:run make install ;((EXIT|=$?)) ;; before_script) @@ -71,21 +124,42 @@ if [ $# -eq 1 ]; then script) EXIT=0 + case ${CONTEXT}:${MODULE} in - installer:-) - run make uninstall ;((EXIT|=$?)) #. Test uninstall - run make install ;((EXIT|=$?)) #. Test reinstall - run make purge ;((EXIT|=$?)) #. Test purge - run make install ;((EXIT|=$?)) #. Test reinstall - ;; - execute:core) - run simbol unit core ;((EXIT|=$?)) + coverage:*) + citm:kcov install ;((EXIT|=$?)) #. Code Coverage installation + echo + + if [ ${MODULE} == 'core' ]; then + citm:kcov run simbol unit core ;((EXIT|=$?)) + else + citm:kcov run simbol unit test ${MODULE} ;((EXIT|=$?)) + fi + echo + + citm:kcov report ;((EXIT|=$?)) + echo ;; + execute:*) - run simbol unit test ${MODULE} ;((EXIT|=$?)) + if [ ${MODULE} == 'core' ]; then + citm:run simbol unit core ;((EXIT|=$?)) + else + citm:run simbol unit test ${MODULE} ;((EXIT|=$?)) + fi + echo ;; + + installer:-) + citm:run make uninstall ;((EXIT|=$?)) #. Test uninstall + citm:run make install ;((EXIT|=$?)) #. Test reinstall + citm:run make purge ;((EXIT|=$?)) #. Test purge + citm:run make install ;((EXIT|=$?)) #. Test reinstall + ;; + *:*) - EXIT=1 + echo "WARN: No action for ${CONTEXT}:${MODULE}" + EXIT=0 ;; esac ;; @@ -96,12 +170,12 @@ if [ $# -eq 1 ]; then after_failure) EXIT=0 - run cat ~/.simbol/var/log/simbol.log + citm:run cat ~/.simbol/var/log/simbol.log ;((EXIT|=$?)) ;; after_script) EXIT=0 - run make uninstall ;((EXIT|=$?)) + citm:run make uninstall ;((EXIT|=$?)) ;; esac fi