From 1bb3537c98e2209f7687d089ca2b8b20ada140e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hannes=20H=C3=B6rl?= Date: Mon, 19 Mar 2018 18:52:27 +0000 Subject: [PATCH 1/2] Make `test-cmd` work with OS-X tooling OS-X thips with the BSD versions of `date` and `grep`. Those don't have certain features the script relies on: - BSD date does not support nanoseconds (`%N`) - BSD grep does not support perl RegEx (`-P`) As we use `bash` specifically in the hashbang anyway it is probably fine to rely on the `$RANDOM` bashism here. --- hack/make-rules/test-cmd-util.sh | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/hack/make-rules/test-cmd-util.sh b/hack/make-rules/test-cmd-util.sh index 34fcbfefcc9..36087a2a897 100755 --- a/hack/make-rules/test-cmd-util.sh +++ b/hack/make-rules/test-cmd-util.sh @@ -3868,7 +3868,7 @@ run_assert_categories_tests() { set -o errexit kube::log::status "Testing propagation of categories for resources" - output_message=$(kubectl get --raw=/api/v1 | grep -Po '"name":"pods".*?}') + output_message=$(kubectl get --raw=/api/v1 | grep -o '"name":"pods"[^}]*}') kube::test::if_has_string "${output_message}" '"categories":\["all"\]' set +o nounset @@ -4729,13 +4729,15 @@ runTests() { kube::log::status "Checking kubectl version" kubectl version - # use timestamp as the name of namespace because increasing the variable inside subshell - # does not affect the value of the variable outside the subshell. + # Generate a random namespace name, based on the current time (to make + # debugging slightly easier) and a random number. Don't use `date +%N` + # because that doesn't work on OSX. create_and_use_new_namespace() { - namespace_number=$(date +%s%N) - kube::log::status "Creating namespace namespace${namespace_number}" - kubectl create namespace "namespace${namespace_number}" - kubectl config set-context "${CONTEXT}" --namespace="namespace${namespace_number}" + local ns_name + ns_name="namespace-$(date +%s)-${RANDOM}" + kube::log::status "Creating namespace ${ns_name}" + kubectl create namespace "$ns_name" + kubectl config set-context "${CONTEXT}" --namespace="$ns_name" } kube_flags=( From fa96484d35b978d91700a20f6c2b9f3ba5df64a9 Mon Sep 17 00:00:00 2001 From: Gareth Smith Date: Wed, 21 Mar 2018 09:30:57 +0000 Subject: [PATCH 2/2] Use consistent bash variable syntax Use "${VAR}" everywhere, instead of also using "$VAR" in some places. --- hack/make-rules/test-cmd-util.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hack/make-rules/test-cmd-util.sh b/hack/make-rules/test-cmd-util.sh index 36087a2a897..8fa833ef23f 100755 --- a/hack/make-rules/test-cmd-util.sh +++ b/hack/make-rules/test-cmd-util.sh @@ -4736,8 +4736,8 @@ runTests() { local ns_name ns_name="namespace-$(date +%s)-${RANDOM}" kube::log::status "Creating namespace ${ns_name}" - kubectl create namespace "$ns_name" - kubectl config set-context "${CONTEXT}" --namespace="$ns_name" + kubectl create namespace "${ns_name}" + kubectl config set-context "${CONTEXT}" --namespace="${ns_name}" } kube_flags=(