gocoverage.sh 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #!/bin/bash
  2. export PATH='/go/bin':$PATH
  3. export DOCKER_PATH='/go/src/github.com/dotcloud/docker'
  4. # Signal coverage report name, parsed by docker-ci
  5. set -x
  6. COVERAGE_PATH=$(date +"docker-%Y%m%d%H%M%S")
  7. set +x
  8. REPORTS="/data/$COVERAGE_PATH"
  9. INDEX="$REPORTS/index.html"
  10. # Test docker
  11. cd $DOCKER_PATH
  12. ./hack/make.sh test; exit_status=$?
  13. PROFILE_PATH="$(ls -d $DOCKER_PATH/bundles/* | sed -n '$ p')/test/coverprofiles"
  14. if [ "$exit_status" -eq "0" ]; then
  15. # Download coverage dependencies
  16. go get github.com/axw/gocov/gocov
  17. go get -u github.com/matm/gocov-html
  18. # Create coverage report
  19. mkdir -p $REPORTS
  20. cd $PROFILE_PATH
  21. cat > $INDEX << "EOF"
  22. <!DOCTYPE html><head><meta charset="utf-8">
  23. <script type="text/javascript" src="//tablesorter.com/jquery-latest.js"></script>
  24. <script type="text/javascript" src="//tablesorter.com/__jquery.tablesorter.min.js"></script>
  25. <script type="text/javascript">$(document).ready(function() {
  26. $("table").tablesorter({ sortForce: [[1,0]] }); });</script>
  27. <style>table,th,td{border:1px solid black;}</style>
  28. <title>Docker Coverage Report</title>
  29. </head><body>
  30. <h1><strong>Docker Coverage Report</strong></h1>
  31. <table class="tablesorter">
  32. <thead><tr><th>package</th><th>pct</th></tr></thead><tbody>
  33. EOF
  34. for profile in *; do
  35. gocov convert $profile | gocov-html >$REPORTS/$profile.html
  36. echo "<tr><td><a href=\"${profile}.html\">$profile</a></td><td>" >> $INDEX
  37. go tool cover -func=$profile | sed -En '$ s/.+\t(.+)/\1/p' >> $INDEX
  38. echo "</td></tr>" >> $INDEX
  39. done
  40. echo "</tbody></table></body></html>" >> $INDEX
  41. fi
  42. # Signal test and coverage result, parsed by docker-ci
  43. set -x
  44. exit $exit_status