diff --git a/test/presubmit-tests.sh b/test/presubmit-tests.sh index eac315f6190..51256ab94e5 100755 --- a/test/presubmit-tests.sh +++ b/test/presubmit-tests.sh @@ -21,84 +21,36 @@ # Use the flags --build-tests, --unit-tests and --integration-tests # to run a specific set of tests. -set -o errexit -set -o pipefail - -# Extensions or file patterns that don't require presubmit tests -readonly NO_PRESUBMIT_FILES=(\.md \.png ^OWNERS) +# Load github.com/knative/test-infra/images/prow-tests/scripts/presubmit-tests.sh +[ -f /workspace/presubmit-tests.sh ] \ + && source /workspace/presubmit-tests.sh \ + || eval "$(docker run --entrypoint sh gcr.io/knative-tests/test-infra/prow-tests -c 'cat presubmit-tests.sh')" +[ -v KNATIVE_TEST_INFRA ] || exit 1 # Directories with code to build/test readonly CODE_PACKAGES=(cmd pkg sample) -source "$(dirname $(readlink -f ${BASH_SOURCE}))/library.sh" - # Convert list of packages into list of dirs for go CODE_PACKAGES_STR="${CODE_PACKAGES[*]}" CODE_PACKAGES_STR="./${CODE_PACKAGES_STR// /\/... .\/}/..." readonly CODE_PACKAGES_STR -# Helper functions. - function build_tests() { header "Running build tests" - go build -v ${CODE_PACKAGES_STR} - echo "Code built successfully" - # kubekins images don't have dep installed by default - go get -u github.com/golang/dep/cmd/dep - ./hack/verify-codegen.sh + local result=0 + go build -v ${CODE_PACKAGES_STR} || result=1 + subheader "Checking autogenerated code is up-to-date" + ./hack/verify-codegen.sh || result=1 + return ${result} } function unit_tests() { header "Running unit tests" - go test -v ${CODE_PACKAGES_STR} + report_go_test ${CODE_PACKAGES_STR} } function integration_tests() { - # Make sure environment variables are intact. ./test/e2e-tests.sh } -# Script entry point. - -# Parse script argument: -# --all-tests or no arguments: run all tests -# --build-tests: run only the build tests -# --unit-tests: run only the unit tests - # --integration-tests: run only the integration tests -RUN_BUILD_TESTS=0 -RUN_UNIT_TESTS=0 -RUN_INTEGRATION_TESTS=0 -[[ -z "$1" || "$1" == "--all-tests" ]] && RUN_BUILD_TESTS=1 && RUN_UNIT_TESTS=1 && RUN_INTEGRATION_TESTS=1 -[[ "$1" == "--build-tests" ]] && RUN_BUILD_TESTS=1 -[[ "$1" == "--unit-tests" ]] && RUN_UNIT_TESTS=1 -[[ "$1" == "--integration-tests" ]] && RUN_INTEGRATION_TESTS=1 -readonly RUN_BUILD_TESTS -readonly RUN_UNIT_TESTS -readonly RUN_INTEGRATION_TESTS - -if ! (( RUN_BUILD_TESTS+RUN_UNIT_TESTS+RUN_INTEGRATION_TESTS )); then - echo "error: unknown argument $1"; - exit 1 -fi - -cd ${EVENTING_ROOT_DIR} - -# Skip presubmit tests if only markdown files were changed. -if [[ -n "${PULL_PULL_SHA}" ]]; then - # On a presubmit job - changes="$(git diff --name-only ${PULL_PULL_SHA} ${PULL_BASE_SHA})" - no_presubmit_pattern="${NO_PRESUBMIT_FILES[*]}" - no_presubmit_pattern="\(${no_presubmit_pattern// /\\|}\)$" - echo -e "Changed files in commit ${PULL_PULL_SHA}:\n${changes}" - if [[ -z "$(echo "${changes}" | grep -v ${no_presubmit_pattern})" ]]; then - # Nothing changed other than files that don't require presubmit tests - header "Commit only contains changes that don't affect tests, skipping" - exit 0 - fi -fi - -# Tests to be performed, in the right order if --all-tests is passed. - -if (( RUN_BUILD_TESTS )); then build_tests; fi -if (( RUN_UNIT_TESTS )); then unit_tests; fi -if (( RUN_INTEGRATION_TESTS )); then integration_tests; fi +main $@