From f59931665492c073132b677360c752899dc053f6 Mon Sep 17 00:00:00 2001 From: D Tripp <38776199+thedtripp@users.noreply.github.com> Date: Fri, 28 Jun 2024 23:32:36 +0000 Subject: [PATCH 1/2] etcd 3.4: fix shellcheck violations [SC2086] by adding double quotes to variables where needed. Signed-off-by: D Tripp <38776199+thedtripp@users.noreply.github.com> --- scripts/install-marker.sh | 2 +- test | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/scripts/install-marker.sh b/scripts/install-marker.sh index 467492666..495b0ec74 100755 --- a/scripts/install-marker.sh +++ b/scripts/install-marker.sh @@ -10,7 +10,7 @@ if [ -z "$1" ]; then fi MARKER_URL=https://storage.googleapis.com/etcd/test-binaries/marker-v0.4.0-x86_64-unknown-linux-gnu -if [ ${ARCH} == "darwin" ]; then +if [ "${ARCH}" == "darwin" ]; then MARKER_URL=https://storage.googleapis.com/etcd/test-binaries/marker-v0.4.0-x86_64-apple-darwin fi diff --git a/test b/test index 4cb508696..b10406168 100755 --- a/test +++ b/test @@ -167,7 +167,7 @@ function unit_pass { else USERTIMEOUT="${TIMEOUT}" fi - go test ${GO_TEST_FLAG} -timeout "${USERTIMEOUT}" "${COVER}" ${RACE} -cpu "${TEST_CPUS}" ${RUN_ARG} "$@" "${TEST[@]}" + go test "${GO_TEST_FLAG}" -timeout "${USERTIMEOUT}" "${COVER}" "${RACE}" -cpu "${TEST_CPUS}" "${RUN_ARG}" "$@" "${TEST[@]}" } function integration_pass { @@ -204,12 +204,12 @@ function integration_pass { } function integration_extra { - go test -timeout 1m -v ${RACE} -cpu "${TEST_CPUS}" "$@" "${REPO_PATH}/client/integration" - go test -timeout 25m -v ${RACE} -cpu "${TEST_CPUS}" "$@" "${REPO_PATH}/clientv3/integration/..." + go test -timeout 1m -v "${RACE}" -cpu "${TEST_CPUS}" "$@" "${REPO_PATH}/client/integration" + go test -timeout 25m -v "${RACE}" -cpu "${TEST_CPUS}" "$@" "${REPO_PATH}/clientv3/integration/..." go test -timeout 1m -v -cpu "${TEST_CPUS}" "$@" "${REPO_PATH}/contrib/raftexample" - go test -timeout 5m -v ${RACE} -tags v2v3 "$@" "${REPO_PATH}/etcdserver/api/v2store" - go test -timeout 5m -v ${RACE} -cpu "${TEST_CPUS}" "$@" "${REPO_PATH}/proxy/grpcproxy" - go test -timeout 1m -v ${RACE} -cpu "${TEST_CPUS}" -run=Example "$@" "${TEST[@]}" + go test -timeout 5m -v "${RACE}" -tags v2v3 "$@" "${REPO_PATH}/etcdserver/api/v2store" + go test -timeout 5m -v "${RACE}" -cpu "${TEST_CPUS}" "$@" "${REPO_PATH}/proxy/grpcproxy" + go test -timeout 1m -v "${RACE}" -cpu "${TEST_CPUS}" -run=Example "$@" "${TEST[@]}" } function functional_pass { @@ -343,7 +343,7 @@ function e2e_pass { USERTIMEOUT="${TIMEOUT}" fi - go test -timeout "${USERTIMEOUT}" -v -cpu "${TEST_CPUS}" ${RUN_ARG} "$@" "${REPO_PATH}/tests/e2e" + go test -timeout "${USERTIMEOUT}" -v -cpu "${TEST_CPUS}" "${RUN_ARG}" "$@" "${REPO_PATH}/tests/e2e" } function integration_e2e_pass { @@ -359,8 +359,8 @@ function integration_e2e_pass { } function grpcproxy_pass { - go test -timeout 30m -v ${RACE} -tags cluster_proxy -cpu "${TEST_CPUS}" "$@" "${REPO_PATH}/integration" - go test -timeout 30m -v ${RACE} -tags cluster_proxy -cpu "${TEST_CPUS}" "$@" "${REPO_PATH}/clientv3/integration" + go test -timeout 30m -v "${RACE}" -tags cluster_proxy -cpu "${TEST_CPUS}" "$@" "${REPO_PATH}/integration" + go test -timeout 30m -v "${RACE}" -tags cluster_proxy -cpu "${TEST_CPUS}" "$@" "${REPO_PATH}/clientv3/integration" go test -timeout 30m -v -tags cluster_proxy "$@" "${REPO_PATH}/tests/e2e" } From e3c0ac0bec2db220e8c0dd140618be03a2a32bc4 Mon Sep 17 00:00:00 2001 From: D Tripp <38776199+thedtripp@users.noreply.github.com> Date: Fri, 28 Jun 2024 23:34:25 +0000 Subject: [PATCH 2/2] etcd 3.4: Install shellcheck if not installed. Include conditional logic to install shellcheck with correct architecture. This is based on commit 4f23883 and pull request etcd-io#14872. Signed-off-by: D Tripp <38776199+thedtripp@users.noreply.github.com> --- Makefile | 1 + test | 26 ++++++++++++++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 3ac43555d..16825e87e 100644 --- a/Makefile +++ b/Makefile @@ -34,6 +34,7 @@ clean: rm -f ./integration/127.0.0.1:* ./integration/localhost:* rm -f ./clientv3/integration/127.0.0.1:* ./clientv3/integration/localhost:* rm -f ./clientv3/ordering/127.0.0.1:* ./clientv3/ordering/localhost:* + rm -rf ./bin/shellcheck* docker-clean: docker images diff --git a/test b/test index b10406168..a37cbaf44 100755 --- a/test +++ b/test @@ -38,6 +38,7 @@ export ETCD_VERIFY=all source ./build PASSES=${PASSES:-} +SHELLCHECK_VERSION=${SHELLCHECK_VERSION:-"v0.10.0"} # build before setting up test GOPATH if [[ "${PASSES}" == *"functional"* ]]; then @@ -397,12 +398,33 @@ function release_pass { } function shellcheck_pass { - if command -v shellcheck >/dev/null; then - shellcheckResult=$(shellcheck -fgcc build test scripts/*.sh 2>&1 || true) + SHELLCHECK=shellcheck + + if ! command -v $SHELLCHECK >/dev/null; then + echo "Installing shellcheck $SHELLCHECK_VERSION" + if [ "$GOARCH" == "amd64" ]; then + URL="https://github.com/koalaman/shellcheck/releases/download/${SHELLCHECK_VERSION}/shellcheck-${SHELLCHECK_VERSION}.linux.x86_64.tar.xz" + elif [[ "$GOARCH" == "arm" || "$GOARCH" == "arm64" ]]; then + URL="https://github.com/koalaman/shellcheck/releases/download/${SHELLCHECK_VERSION}/shellcheck-${SHELLCHECK_VERSION}.linux.aarch64.tar.xz" + else + echo "Unsupported architecture: $GOARCH" + exit 255 + fi + + wget -qO- "$URL" | tar -xJv -C /tmp/ --strip-components=1 + mkdir -p ./bin + mv /tmp/shellcheck ./bin/ + SHELLCHECK=./bin/shellcheck + fi + + if command -v $SHELLCHECK >/dev/null; then + shellcheckResult=$(${SHELLCHECK} -fgcc build test scripts/*.sh 2>&1 || true) if [ -n "${shellcheckResult}" ]; then echo -e "shellcheck checking failed:\\n${shellcheckResult}" exit 255 fi + else + echo "Skipping shellcheck..." fi }