github.com/IRelaxxx/servefiles/v3@v3.4.6/coverage (about)

     1  #!/bin/bash -e
     2  # Cannot use test profile flag with multiple packages, so this script
     3  # processes each directory in turn.
     4  #
     5  # Other useful value is 'html'
     6  #MODE=${1:-func}
     7  
     8  DIR=$PWD
     9  DOT=$(dirname $0)
    10  cd $DOT
    11  TOP=$PWD
    12  PATH=$HOME/go/bin:$PATH
    13  
    14  export GO11MODULE=on
    15  
    16  #go env
    17  go mod download
    18  
    19  # install Goveralls if absent
    20  if ! type -p goveralls; then
    21    echo go install github.com/mattn/goveralls
    22    go install github.com/mattn/goveralls
    23  fi
    24  
    25  rm -rf reports
    26  mkdir reports
    27  
    28  for file in $(find . -type f -name \*_test.go); do
    29    dirname $file >> coverage$$.tmp
    30  done
    31  
    32  sort coverage$$.tmp | uniq | tee coverage$$.dirs
    33  
    34  for pkg in $(cat coverage$$.dirs); do
    35    name=$(echo $pkg | sed 's#^./##' | sed 's#/#-#g')
    36    [ "$pkg" = "." ] && name=$(basename $PWD)
    37    echo $pkg becomes $name
    38    go test -v -coverprofile coverage$$.data $pkg
    39    if [ -f coverage$$.data ]; then
    40      go tool cover -html coverage$$.data -o reports/$name.html
    41      unlink coverage$$.data
    42    fi
    43  done
    44  
    45  rm -f coverage$$.tmp coverage$$.dirs
    46  
    47  if [ -n "$(type -p chromium-browser)" ]; then
    48    chromium-browser reports/*.html >/dev/null &
    49  elif [ -n "$(type -p open)" ]; then
    50    open reports/*.html # >/dev/null &
    51  else
    52    ls -lh reports/
    53  fi