diff --git a/test/presubmit-tests.sh b/test/presubmit-tests.sh index c1a85d686789..df59829cfa09 100755 --- a/test/presubmit-tests.sh +++ b/test/presubmit-tests.sh @@ -21,23 +21,21 @@ # Use the flags --build-tests, --unit-tests and --integration-tests # to run a specific set of tests. -# Extensions or file patterns that don't require presubmit tests -readonly NO_PRESUBMIT_FILES=(\.md \.png ^OWNERS) - -source "$(dirname $(readlink -f ${BASH_SOURCE}))/library.sh" - -# Helper functions. +# 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 function build_tests() { header "Running build tests" - go build -v ./cmd/... ./sample/... ./pkg/... || result=1 + local result=0 + go build -v ./cmd/... ./pkg/... || result=1 # "go build" on //test will fail with "no non-test Go files in ..." # See https://github.com/golang/go/issues/8279 for details # Workaround is to use "go test -run" with a non matching pattern go test -run=^$ -tags=e2e ./test/... || result=1 - # kubekins images don't have dep installed by default subheader "Checking autogenerated code is up-to-date" - go get -u github.com/golang/dep/cmd/dep ./hack/verify-codegen.sh || result=1 return ${result} } @@ -48,90 +46,9 @@ function unit_tests() { } function integration_tests() { - # Make sure environment variables are intact. local options="" (( EMIT_METRICS )) && options="--emit-metrics" ./test/e2e-tests.sh ${options} } -# Script entry point. - -# Parse script arguments: -# --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 -# --emit-metrics: emit metrics when running the E2E tests -RUN_BUILD_TESTS=0 -RUN_UNIT_TESTS=0 -RUN_INTEGRATION_TESTS=0 -EMIT_METRICS=0 - -all_parameters=$@ -[[ -z $1 ]] && all_parameters="--all-tests" - -for parameter in ${all_parameters}; do - case $parameter in - --all-tests) - RUN_BUILD_TESTS=1 - RUN_UNIT_TESTS=1 - RUN_INTEGRATION_TESTS=1 - shift - ;; - --build-tests) - RUN_BUILD_TESTS=1 - shift - ;; - --unit-tests) - RUN_UNIT_TESTS=1 - shift - ;; - --integration-tests) - RUN_INTEGRATION_TESTS=1 - shift - ;; - --emit-metrics) - EMIT_METRICS=1 - shift - ;; - *) - echo "error: unknown option ${parameter}" - exit 1 - ;; - esac -done - -readonly RUN_BUILD_TESTS -readonly RUN_UNIT_TESTS -readonly RUN_INTEGRATION_TESTS -readonly EMIT_METRICS - -cd ${SERVING_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. - -result=0 -if (( RUN_BUILD_TESTS )); then - build_tests || result=1 -fi -if (( RUN_UNIT_TESTS )); then - unit_tests || result=1 -fi -if (( RUN_INTEGRATION_TESTS )); then - integration_tests || result=1 -fi -exit ${result} +main $@