diff --git a/go.mod b/go.mod
index d391da6dd..f90393f0f 100644
--- a/go.mod
+++ b/go.mod
@@ -48,7 +48,7 @@ require (
k8s.io/klog v1.0.0
k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a
k8s.io/test-infra v0.0.0-20200407001919-bc7f71ef65b8
- knative.dev/test-infra v0.0.0-20200506045344-e71b1288c15c
+ knative.dev/test-infra v0.0.0-20200508015845-8d7d46a46176
)
replace (
diff --git a/go.sum b/go.sum
index f1186c05b..98ad2959b 100644
--- a/go.sum
+++ b/go.sum
@@ -1350,8 +1350,8 @@ knative.dev/pkg v0.0.0-20200428194351-90fc61bae7f7/go.mod h1:o+e8OVEJKIuvXPsGVPI
knative.dev/pkg v0.0.0-20200505191044-3da93ebb24c2/go.mod h1:Q6sL35DdGs8hIQZKdaCXJGgY8f90BmNBKSb8z6d/BTM=
knative.dev/test-infra v0.0.0-20200407185800-1b88cb3b45a5/go.mod h1:xcdUkMJrLlBswIZqL5zCuBFOC22WIPMQoVX1L35i0vQ=
knative.dev/test-infra v0.0.0-20200505052144-5ea2f705bb55/go.mod h1:WqF1Azka+FxPZ20keR2zCNtiQA1MP9ZB4BH4HuI+SIU=
-knative.dev/test-infra v0.0.0-20200506045344-e71b1288c15c h1:GfRICwJBY2VmbzFzu/se73+gsfKEkc83qlTBcohJvN0=
-knative.dev/test-infra v0.0.0-20200506045344-e71b1288c15c/go.mod h1:aMif0KXL4g19YCYwsy4Ocjjz5xgPlseYV+B95Oo4JGE=
+knative.dev/test-infra v0.0.0-20200508015845-8d7d46a46176 h1:Uab7/fRKm5lujDe+DorXGTA1v5ACzZ1wUwhcIvqcNjI=
+knative.dev/test-infra v0.0.0-20200508015845-8d7d46a46176/go.mod h1:aMif0KXL4g19YCYwsy4Ocjjz5xgPlseYV+B95Oo4JGE=
modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw=
modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk=
modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k=
diff --git a/vendor/knative.dev/test-infra/scripts/library.sh b/vendor/knative.dev/test-infra/scripts/library.sh
index 7933cc8b8..0b3927419 100644
--- a/vendor/knative.dev/test-infra/scripts/library.sh
+++ b/vendor/knative.dev/test-infra/scripts/library.sh
@@ -26,7 +26,7 @@ readonly SERVING_GKE_VERSION=gke-latest
readonly SERVING_GKE_IMAGE=cos
# Conveniently set GOPATH if unset
-if [[ -z "${GOPATH:-}" ]]; then
+if [[ ! -v GOPATH ]]; then
export GOPATH="$(go env GOPATH)"
if [[ -z "${GOPATH}" ]]; then
echo "WARNING: GOPATH not set and go binary unable to provide it"
@@ -34,9 +34,9 @@ if [[ -z "${GOPATH:-}" ]]; then
fi
# Useful environment variables
-[[ -n "${PROW_JOB_ID:-}" ]] && IS_PROW=1 || IS_PROW=0
+[[ -v PROW_JOB_ID ]] && IS_PROW=1 || IS_PROW=0
readonly IS_PROW
-[[ -z "${REPO_ROOT_DIR:-}" ]] && REPO_ROOT_DIR="$(git rev-parse --show-toplevel)"
+[[ ! -v REPO_ROOT_DIR ]] && REPO_ROOT_DIR="$(git rev-parse --show-toplevel)"
readonly REPO_ROOT_DIR
readonly REPO_NAME="$(basename ${REPO_ROOT_DIR})"
@@ -389,8 +389,25 @@ function mktemp_with_extension() {
# $2 - check name as an identifier (e.g., GoBuild)
# $3 - failure message (can contain newlines), optional (means success)
function create_junit_xml() {
- local xml="$(mktemp_with_extension "${ARTIFACTS}"/junit_XXXXXXXX xml)"
- run_kntest junit --suite="$1" --name="$2" --err-msg="$3" --dest="${xml}" || return 1
+ local xml="$(mktemp_with_extension ${ARTIFACTS}/junit_XXXXXXXX xml)"
+ local failure=""
+ if [[ "$3" != "" ]]; then
+ # Transform newlines into HTML code.
+ # Also escape `<` and `>` as here: https://github.com/golang/go/blob/50bd1c4d4eb4fac8ddeb5f063c099daccfb71b26/src/encoding/json/encode.go#L48,
+ # this is temporary solution for fixing https://github.com/knative/test-infra/issues/1204,
+ # which should be obsolete once Test-infra 2.0 is in place
+ local msg="$(echo -n "$3" | sed 's/$/\
/g' | sed 's/\\u003c/' | sed 's/>/\\u003e/' | sed 's/&/\\u0026/' | tr -d '\n')"
+ failure="${msg}"
+ fi
+ cat << EOF > "${xml}"
+
+
+
+ ${failure}
+
+
+
+EOF
}
# Runs a go test and generate a junit summary.
@@ -499,24 +516,19 @@ function start_latest_knative_eventing() {
function run_go_tool() {
local tool=$2
local install_failed=0
- local action="get"
- [[ $1 =~ ^[\./].* ]] && action="install"
- # Install the tool in the following situations:
- # - The tool does not exist.
- # - The tool needs to be installed from a local path.
- # - Version of the tool is specificied in the given tool path.
- # TODO(chizhg): derive a better versioning story for the tools being used.
- if [[ -z "$(which "${tool}")" || "${action}" == "install" || "${tool}" =~ "@" ]]; then
+ if [[ -z "$(which ${tool})" ]]; then
+ local action=get
+ [[ $1 =~ ^[\./].* ]] && action=install
# Avoid running `go get` from root dir of the repository, as it can change go.sum and go.mod files.
# See discussions in https://github.com/golang/go/issues/27643.
if [[ ${action} == "get" && $(pwd) == "${REPO_ROOT_DIR}" ]]; then
local temp_dir="$(mktemp -d)"
# Swallow the output as we are returning the stdout in the end.
pushd "${temp_dir}" > /dev/null 2>&1
- GOFLAGS="" go ${action} $1 || install_failed=1
+ GOFLAGS="" go ${action} "$1" || install_failed=1
popd > /dev/null 2>&1
else
- GOFLAGS="" go ${action} $1 || install_failed=1
+ GOFLAGS="" go ${action} "$1" || install_failed=1
fi
fi
(( install_failed )) && return ${install_failed}
@@ -524,17 +536,6 @@ function run_go_tool() {
${tool} "$@"
}
-# Run "kntest" tool
-# Parameters: $1..$n - parameters passed to the tool
-function run_kntest() {
- if [[ "${REPO_NAME}" == "test-infra" ]]; then
- go run "${REPO_ROOT_DIR}"/kntest/cmd/kntest "$@"
- else
- # Always run the latest version.
- run_go_tool knative.dev/test-infra/kntest/cmd/kntest@master "$@"
- fi
-}
-
# Run go-licenses to update licenses.
# Parameters: $1 - output file, relative to repo root dir.
# $2 - directory to inspect.
@@ -652,6 +653,21 @@ function get_canonical_path() {
echo "$(cd ${path%/*} && echo $PWD/${path##*/})"
}
+# List changed files in the current PR.
+# This is implemented as a function so it can be mocked in unit tests.
+# It will fail if a file name ever contained a newline character (which is bad practice anyway)
+function list_changed_files() {
+ if [[ -v PULL_BASE_SHA ]] && [[ -v PULL_PULL_SHA ]]; then
+ # Avoid warning when there are more than 1085 files renamed:
+ # https://stackoverflow.com/questions/7830728/warning-on-diff-renamelimit-variable-when-doing-git-push
+ git config diff.renames 0
+ git --no-pager diff --name-only ${PULL_BASE_SHA}..${PULL_PULL_SHA}
+ else
+ # Do our best if not running in Prow
+ git diff --name-only HEAD^
+ fi
+}
+
# Returns the current branch.
function current_branch() {
local branch_name=""
@@ -694,6 +710,29 @@ function get_latest_knative_yaml_source() {
echo "https://storage.googleapis.com/knative-nightly/${repo_name}/latest/${yaml_name}.yaml"
}
+function shellcheck_new_files() {
+ declare -a array_of_files
+ local failed=0
+ readarray -t -d '\n' array_of_files < <(list_changed_files)
+ for filename in "${array_of_files[@]}"; do
+ if echo "${filename}" | grep -q "^vendor/"; then
+ continue
+ fi
+ if file "${filename}" | grep -q "shell script"; then
+ # SC1090 is "Can't follow non-constant source"; we will scan files individually
+ if shellcheck -e SC1090 "${filename}"; then
+ echo "--- PASS: shellcheck on ${filename}"
+ else
+ echo "--- FAIL: shellcheck on ${filename}"
+ failed=1
+ fi
+ fi
+ done
+ if [[ ${failed} -eq 1 ]]; then
+ fail_script "shellcheck failures"
+ fi
+}
+
# Initializations that depend on previous functions.
# These MUST come last.
diff --git a/vendor/knative.dev/test-infra/scripts/presubmit-tests.sh b/vendor/knative.dev/test-infra/scripts/presubmit-tests.sh
index 797f2fd3e..43a23df31 100644
--- a/vendor/knative.dev/test-infra/scripts/presubmit-tests.sh
+++ b/vendor/knative.dev/test-infra/scripts/presubmit-tests.sh
@@ -46,15 +46,6 @@ function pr_only_contains() {
[[ -z "$(echo "${CHANGED_FILES}" | grep -v "\(${1// /\\|}\)$")" ]]
}
-# List changed files in the current PR.
-# This is implemented as a function so it can be mocked in unit tests.
-function list_changed_files() {
- # Avoid warning when there are more than 1085 files renamed:
- # https://stackoverflow.com/questions/7830728/warning-on-diff-renamelimit-variable-when-doing-git-push
- git config diff.renames 0
- git --no-pager diff --name-only ${PULL_BASE_SHA}..${PULL_SHA}
-}
-
# Initialize flags and context for presubmit tests:
# CHANGED_FILES, IS_PRESUBMIT_EXEMPT_PR and IS_DOCUMENTATION_PR.
function initialize_environment() {
diff --git a/vendor/knative.dev/test-infra/scripts/shellcheck-presubmit.sh b/vendor/knative.dev/test-infra/scripts/shellcheck-presubmit.sh
new file mode 100644
index 000000000..ce1515bd3
--- /dev/null
+++ b/vendor/knative.dev/test-infra/scripts/shellcheck-presubmit.sh
@@ -0,0 +1,18 @@
+#!/usr/bin/env bash
+
+set -e
+
+source "$(dirname "${BASH_SOURCE[0]}")/library.sh"
+
+if (( ! IS_PROW )); then
+ echo "Local run of shellcheck-presubmit detected"
+ echo "This notably DOES NOT ACT LIKE THE GITHUB PRESUBMIT"
+ echo "The Github presubmit job only runs shellcheck on files you touch"
+ echo "There's no way to locally determine which files you touched:"
+ echo " as git is a distributed VCS, there is no notion of parent until merge"
+ echo " is attempted."
+ echo "So it checks the current content of all files changed in the previous commit"
+ echo " and/or currently staged."
+fi
+
+shellcheck_new_files
diff --git a/vendor/modules.txt b/vendor/modules.txt
index b1f6479d1..7e75c0b1b 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -914,7 +914,7 @@ k8s.io/utils/buffer
k8s.io/utils/integer
k8s.io/utils/pointer
k8s.io/utils/trace
-# knative.dev/test-infra v0.0.0-20200506045344-e71b1288c15c
+# knative.dev/test-infra v0.0.0-20200508015845-8d7d46a46176
## explicit
knative.dev/test-infra/scripts
# sigs.k8s.io/yaml v1.1.0