test 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #!/bin/bash -e
  2. #
  3. # Run all tests
  4. # ./test
  5. # ./test -v
  6. #
  7. # Run tests for one package
  8. # PKG=./foo ./test
  9. # PKG=bar ./test
  10. #
  11. # Invoke ./cover for HTML output
  12. COVER=${COVER:-"-cover"}
  13. PROJ="go-systemd"
  14. ORG_PATH="github.com/coreos"
  15. REPO_PATH="${ORG_PATH}/${PROJ}"
  16. # As a convenience, set up a self-contained GOPATH if none set
  17. if [ -z "$GOPATH" ]; then
  18. if [ ! -h gopath/src/${REPO_PATH} ]; then
  19. mkdir -p gopath/src/${ORG_PATH}
  20. ln -s ../../../.. gopath/src/${REPO_PATH} || exit 255
  21. fi
  22. export GOPATH=${PWD}/gopath
  23. go get -u github.com/godbus/dbus
  24. go get -u github.com/coreos/pkg/dlopen
  25. fi
  26. TESTABLE="activation daemon journal login1 machine1 unit"
  27. FORMATTABLE="$TESTABLE sdjournal dbus"
  28. if [ -e "/run/systemd/system/" ]; then
  29. TESTABLE="${TESTABLE} sdjournal"
  30. if [ "$EUID" == "0" ]; then
  31. # testing actual systemd behaviour requires root
  32. TESTABLE="${TESTABLE} dbus"
  33. fi
  34. fi
  35. # user has not provided PKG override
  36. if [ -z "$PKG" ]; then
  37. TEST=$TESTABLE
  38. FMT=$FORMATTABLE
  39. # user has provided PKG override
  40. else
  41. # strip out slashes and dots from PKG=./foo/
  42. TEST=${PKG//\//}
  43. TEST=${TEST//./}
  44. # only run gofmt on packages provided by user
  45. FMT="$TEST"
  46. fi
  47. # split TEST into an array and prepend REPO_PATH to each local package
  48. split=(${TEST// / })
  49. TEST=${split[@]/#/${REPO_PATH}/}
  50. echo "Running tests..."
  51. go test -v ${COVER} $@ ${TEST}
  52. echo "Checking gofmt..."
  53. fmtRes=$(gofmt -l $FMT)
  54. if [ -n "${fmtRes}" ]; then
  55. echo -e "gofmt checking failed:\n${fmtRes}"
  56. exit 255
  57. fi
  58. echo "Checking govet..."
  59. vetRes=$(go vet $TEST)
  60. if [ -n "${vetRes}" ]; then
  61. echo -e "govet checking failed:\n${vetRes}"
  62. exit 255
  63. fi
  64. echo "Checking for license header..."
  65. licRes=$(for file in $(find . -type f -iname '*.go' ! -path './gopath/*'); do
  66. head -n3 "${file}" | grep -Eq "(Copyright|generated|GENERATED)" || echo -e " ${file}"
  67. done;)
  68. if [ -n "${licRes}" ]; then
  69. echo -e "license header checking failed:\n${licRes}"
  70. exit 255
  71. fi
  72. echo "Success"