From 6adc3c7dfd1eaed7eeda6780b25ccc763dad44c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chris=20Suszy=C5=84ski?= Date: Thu, 4 Jul 2024 16:08:23 +0200 Subject: [PATCH] Fix the unit tests --- library.sh | 102 +++++++++++++++++++++++++++----------- presubmit-tests.sh | 8 +-- test/unit/codegen_test.go | 6 +-- 3 files changed, 82 insertions(+), 34 deletions(-) diff --git a/library.sh b/library.sh index 9cd2adc7..dcb4c521 100755 --- a/library.sh +++ b/library.sh @@ -141,11 +141,10 @@ function calcRetcode() { # Print error message. # Parameters: $* - error message to be displayed function error() { - gum_style \ - --foreground '#D00' \ + gum_banner \ + --color '#D00' \ --padding '1 3' \ --border double \ - --border-foreground '#D00' \ "ERROR: $*" } @@ -158,37 +157,22 @@ function abort() { exit "$abort_retcode" } -# Display a box banner. -# Parameters: $1 - character to use for the box. -# $2 - banner message. -# Deprecated: Use `gum_style` instead. -function make_banner() { - local msg="$1$1$1$1 $2 $1$1$1$1" - local border="${msg//[^$1]/$1}" - echo -e "${border}\n${msg}\n${border}" - # TODO(adrcunha): Remove once logs have timestamps on Prow - # For details, see https://github.com/kubernetes/test-infra/issues/10100 - if (( IS_PROW )); then - echo -e "$1$1$1$1 $(TZ='UTC' date --rfc-3339=ns)\n${border}" - fi -} - # Simple header for logging purposes. function header() { local upper upper="$(echo "$*" | tr '[:lower:]' '[:upper:]')" - gum_style \ - --padding '1 3' \ + gum_banner \ --border double \ + --color 44 \ + --padding '1 3' \ "$upper" } # Simple subheader for logging purposes. function subheader() { - gum_style \ - --padding '1 3' \ - --border rounded \ - "$*" + gum_banner \ + --color 45 \ + "$*" } # Simple log step for logging purposes. @@ -203,14 +187,76 @@ function log() { # Simple warning banner for logging purposes. function warning() { - gum_style \ - --foreground '#DD0' \ + gum_banner \ + --color '#DD0' \ --padding '1 3' \ --border rounded \ - --border-foreground '#DD0' \ "WARN: $*" } +# Display a box banner. +# Parameters: $1 - character to use for the box. +# $2 - banner message. +# Deprecated: Use `gum_banner` instead. +function make_banner() { + local msg="$1$1$1$1 $2 $1$1$1$1" + local border="${msg//[^$1]/$1}" + echo -e "${border}\n${msg}\n${border}" + # TODO(adrcunha): Remove once logs have timestamps on Prow + # For details, see https://github.com/kubernetes/test-infra/issues/10100 + if (( IS_PROW )); then + echo -e "$1$1$1$1 $(TZ='UTC' date --rfc-3339=ns)\n${border}" + fi +} + +# Display a fancy box banner. +# Parameters: +# [--border ] - a gum border type for the box, defaults to 'rounded' +# [--color ] - a gum color for the box, defaults to '0'' +# [--padding ] - a gum padding for the box, defaults to '0 1' +# $* - banner message. +function gum_banner() { + local border='rounded' + local color='0' + local padding='0 1' + while [[ $# -gt 0 ]]; do + case "$1" in + --border) + border="$2" + shift 2 + ;; + --color) + color="$2" + shift 2 + ;; + --padding) + padding="$2" + shift 2 + ;; + *) + break + ;; + esac + done + local args=( + --align center + --border "$border" + --foreground "$color" + --border-foreground "$color" + --padding "$padding" + "$*" + ) + # TODO: Remove once logs have timestamps on Prow, details see: + # https://github.com/kubernetes/test-infra/issues/10100 + if (( IS_PROW )); then + local dt + # RFC3339Nano format with 3 digits of ns without timezone offset + dt="$(TZ='UTC' date --rfc-3339=ns | sed -E 's/\.([0-9]{3})[0-9]+.+$/.\1/')" + args+=('' "at $dt") + fi + gum_style "${args[@]}" +} + # Simple info banner for logging purposes. function gum_style() { go_run github.com/charmbracelet/gum@v0.14.1 style "$@" > /dev/stderr @@ -218,7 +264,7 @@ function gum_style() { # Checks whether the given function exists. function function_exists() { - [[ "$(type -t $1)" == "function" ]] + [[ "$(type -t "$1")" == "function" ]] } # GitHub Actions aware output grouping. diff --git a/presubmit-tests.sh b/presubmit-tests.sh index d210dc70..b96ffadf 100755 --- a/presubmit-tests.sh +++ b/presubmit-tests.sh @@ -72,9 +72,11 @@ function initialize_environment() { # Parameters: $1 - test group name (e.g., build) # $2 - result (0=passed, 1=failed) function results_banner() { - local result - [[ $2 -eq 0 ]] && result="PASSED" || result="FAILED" - header "$1 tests ${result}" + if [[ $2 -eq 0 ]]; then + header "$1 tests PASSED" + else + error "$1 tests FAILED" + fi } # Run build tests. If there's no `build_tests` function, run the default diff --git a/test/unit/codegen_test.go b/test/unit/codegen_test.go index 46f112c6..4fc9e0a6 100644 --- a/test/unit/codegen_test.go +++ b/test/unit/codegen_test.go @@ -16,7 +16,7 @@ func TestCodegen(t *testing.T) { require.NoError(t, os.WriteFile( tmpdir+"/go/bin/deepcopy-gen", []byte(strings.Join([]string{"#!/bin/bash", - `git restore test/e2e/apis/hack/v1alpha1/zz_generated.deepcopy.go`, + `git restore test/e2e/apis/codegen/testdata/v1alpha1/zz_generated.deepcopy.go`, `echo "Deepcopy generation complete"`, "exit 248"}, "\n")), execPermission)) @@ -27,8 +27,8 @@ func TestCodegen(t *testing.T) { ) tcs := []testCase{{ name: "generate-groups deepcopy " + - "knative.dev/hack/test/e2e/apis/hack/v1alpha1/generated " + - "knative.dev/hack/test/e2e/apis " + + "knative.dev/hack/test/codegen/testdata/apis/hack/v1alpha1/generated " + + "knative.dev/hack/test/codegen/testdata/apis " + "hack:v1alpha1", retcode: retcode(248), stdout: equal(`WARNING: generate-groups.sh is deprecated.