verify-generated-files-remake.sh: do not mix strings and arrays.

The pattern used in the file is this:

  echo "  ${X[@]:-(none)}"

What happens is that the array is expanded to separate strings, and it
is checked if that's set (for the default value assignment). However,
the correct way is to check if the concatenated array string is set to
avoid a type mismatch:

  echo "  ${X[*]:-(none)}"

Tests show that at least bash 4.4.23 behaves the same:

  X=(foo bar)
  echo "  ${X[@]:-(none)}"
  echo "  ${X[*]:-(none)}"

  X=()
  echo "  ${X[@]:-(none)}"
  echo "  ${X[*]:-(none)}"

produces:

  foo bar
  foo bar
  (none)
  (none)
This commit is contained in:
Ismo Puustinen 2018-12-21 15:54:14 +02:00
parent 3fbdc8c327
commit a911034e01

View File

@ -61,7 +61,7 @@ function assert_clean() {
X=($(newer deepcopy "${STAMP}")) X=($(newer deepcopy "${STAMP}"))
if [[ "${#X[*]}" != 0 ]]; then if [[ "${#X[*]}" != 0 ]]; then
echo "Generated files changed on back-to-back 'make' runs:" echo "Generated files changed on back-to-back 'make' runs:"
echo " ${X[@]:-(none)}" echo " ${X[*]:-(none)}"
return 1 return 1
fi fi
true true
@ -82,19 +82,19 @@ make generated_files >/dev/null
X=($(newer deepcopy "${STAMP}")) X=($(newer deepcopy "${STAMP}"))
if [[ "${#X[*]}" != 1 || ! ( "${X[0]}" =~ "${DIR}/zz_generated.deepcopy.go" ) ]]; then if [[ "${#X[*]}" != 1 || ! ( "${X[0]}" =~ "${DIR}/zz_generated.deepcopy.go" ) ]]; then
echo "Wrong generated deepcopy files changed after touching src file:" echo "Wrong generated deepcopy files changed after touching src file:"
echo " ${X[@]:-(none)}" echo " ${X[*]:-(none)}"
exit 1 exit 1
fi fi
X=($(newer defaults "${STAMP}")) X=($(newer defaults "${STAMP}"))
if [[ "${#X[*]}" != 1 || ! ( "${X[0]}" =~ "${DIR}/zz_generated.defaults.go" ) ]]; then if [[ "${#X[*]}" != 1 || ! ( "${X[0]}" =~ "${DIR}/zz_generated.defaults.go" ) ]]; then
echo "Wrong generated defaults files changed after touching src file:" echo "Wrong generated defaults files changed after touching src file:"
echo " ${X[@]:-(none)}" echo " ${X[*]:-(none)}"
exit 1 exit 1
fi fi
X=($(newer conversion "${STAMP}")) X=($(newer conversion "${STAMP}"))
if [[ "${#X[*]}" != 1 || ! ( "${X[0]}" =~ "${DIR}/zz_generated.conversion.go" ) ]]; then if [[ "${#X[*]}" != 1 || ! ( "${X[0]}" =~ "${DIR}/zz_generated.conversion.go" ) ]]; then
echo "Wrong generated conversion files changed after touching src file:" echo "Wrong generated conversion files changed after touching src file:"
echo " ${X[@]:-(none)}" echo " ${X[*]:-(none)}"
exit 1 exit 1
fi fi
@ -110,7 +110,7 @@ make generated_files >/dev/null
X=($(older deepcopy "${STAMP}")) X=($(older deepcopy "${STAMP}"))
if [[ "${#X[*]}" != 0 ]]; then if [[ "${#X[*]}" != 0 ]]; then
echo "Generated deepcopy files did not change after touching code-generator file:" echo "Generated deepcopy files did not change after touching code-generator file:"
echo " ${X[@]:-(none)}" echo " ${X[*]:-(none)}"
exit 1 exit 1
fi fi
@ -122,7 +122,7 @@ make generated_files >/dev/null
X=($(older deepcopy "${STAMP}")) X=($(older deepcopy "${STAMP}"))
if [[ "${#X[*]}" != 0 ]]; then if [[ "${#X[*]}" != 0 ]]; then
echo "Generated deepcopy files did not change after touching code-generator dir:" echo "Generated deepcopy files did not change after touching code-generator dir:"
echo " ${X[@]:-(none)}" echo " ${X[*]}:-(none)"
exit 1 exit 1
fi fi
@ -134,7 +134,7 @@ make generated_files >/dev/null
X=($(older deepcopy "${STAMP}")) X=($(older deepcopy "${STAMP}"))
if [[ "${#X[*]}" != 0 ]]; then if [[ "${#X[*]}" != 0 ]]; then
echo "Generated deepcopy files did not change after touching code-generator dep file:" echo "Generated deepcopy files did not change after touching code-generator dep file:"
echo " ${X[@]:-(none)}" echo " ${X[*]:-(none)}"
exit 1 exit 1
fi fi
@ -146,7 +146,7 @@ make generated_files >/dev/null
X=($(older deepcopy "${STAMP}")) X=($(older deepcopy "${STAMP}"))
if [[ "${#X[*]}" != 0 ]]; then if [[ "${#X[*]}" != 0 ]]; then
echo "Generated deepcopy files did not change after touching code-generator dep dir:" echo "Generated deepcopy files did not change after touching code-generator dep dir:"
echo " ${X[@]:-(none)}" echo " ${X[*]:-(none)}"
exit 1 exit 1
fi fi
@ -162,7 +162,7 @@ make generated_files >/dev/null
X=($(older defaults "${STAMP}")) X=($(older defaults "${STAMP}"))
if [[ "${#X[*]}" != 0 ]]; then if [[ "${#X[*]}" != 0 ]]; then
echo "Generated defaults files did not change after touching code-generator file:" echo "Generated defaults files did not change after touching code-generator file:"
echo " ${X[@]:-(none)}" echo " ${X[*]:-(none)}"
exit 1 exit 1
fi fi
@ -174,7 +174,7 @@ make generated_files >/dev/null
X=($(older defaults "${STAMP}")) X=($(older defaults "${STAMP}"))
if [[ "${#X[*]}" != 0 ]]; then if [[ "${#X[*]}" != 0 ]]; then
echo "Generated defaults files did not change after touching code-generator dir:" echo "Generated defaults files did not change after touching code-generator dir:"
echo " ${X[@]:-(none)}" echo " ${X[*]:-(none)}"
exit 1 exit 1
fi fi
@ -186,7 +186,7 @@ make generated_files >/dev/null
X=($(older defaults "${STAMP}")) X=($(older defaults "${STAMP}"))
if [[ "${#X[*]}" != 0 ]]; then if [[ "${#X[*]}" != 0 ]]; then
echo "Generated defaults files did not change after touching code-generator dep file:" echo "Generated defaults files did not change after touching code-generator dep file:"
echo " ${X[@]:-(none)}" echo " ${X[*]:-(none)}"
exit 1 exit 1
fi fi
@ -198,7 +198,7 @@ make generated_files >/dev/null
X=($(older defaults "${STAMP}")) X=($(older defaults "${STAMP}"))
if [[ "${#X[*]}" != 0 ]]; then if [[ "${#X[*]}" != 0 ]]; then
echo "Generated defaults files did not change after touching code-generator dep dir:" echo "Generated defaults files did not change after touching code-generator dep dir:"
echo " ${X[@]:-(none)}" echo " ${X[*]:-(none)}"
exit 1 exit 1
fi fi
@ -214,7 +214,7 @@ make generated_files >/dev/null
X=($(older conversion "${STAMP}")) X=($(older conversion "${STAMP}"))
if [[ "${#X[*]}" != 0 ]]; then if [[ "${#X[*]}" != 0 ]]; then
echo "Generated conversion files did not change after touching code-generator file:" echo "Generated conversion files did not change after touching code-generator file:"
echo " ${X[@]:-(none)}" echo " ${X[*]:-(none)}"
exit 1 exit 1
fi fi
@ -226,7 +226,7 @@ make generated_files >/dev/null
X=($(older conversion "${STAMP}")) X=($(older conversion "${STAMP}"))
if [[ "${#X[*]}" != 0 ]]; then if [[ "${#X[*]}" != 0 ]]; then
echo "Generated conversion files did not change after touching code-generator dir:" echo "Generated conversion files did not change after touching code-generator dir:"
echo " ${X[@]:-(none)}" echo " ${X[*]:-(none)}"
exit 1 exit 1
fi fi
@ -238,7 +238,7 @@ make generated_files >/dev/null
X=($(older conversion "${STAMP}")) X=($(older conversion "${STAMP}"))
if [[ "${#X[*]}" != 0 ]]; then if [[ "${#X[*]}" != 0 ]]; then
echo "Generated conversion files did not change after touching code-generator dep file:" echo "Generated conversion files did not change after touching code-generator dep file:"
echo " ${X[@]:-(none)}" echo " ${X[*]:-(none)}"
exit 1 exit 1
fi fi
@ -250,7 +250,7 @@ make generated_files >/dev/null
X=($(older conversion "${STAMP}")) X=($(older conversion "${STAMP}"))
if [[ "${#X[*]}" != 0 ]]; then if [[ "${#X[*]}" != 0 ]]; then
echo "Generated conversion files did not change after touching code-generator dep dir:" echo "Generated conversion files did not change after touching code-generator dep dir:"
echo " ${X[@]:-(none)}" echo " ${X[*]:-(none)}"
exit 1 exit 1
fi fi
@ -266,7 +266,7 @@ make generated_files >/dev/null
X=($(newer openapi "${STAMP}")) X=($(newer openapi "${STAMP}"))
if [[ "${#X[*]}" != 1 || ! ( "${X[0]}" =~ "pkg/generated/openapi/zz_generated.openapi.go" ) ]]; then if [[ "${#X[*]}" != 1 || ! ( "${X[0]}" =~ "pkg/generated/openapi/zz_generated.openapi.go" ) ]]; then
echo "Wrong generated openapi files changed after touching src file:" echo "Wrong generated openapi files changed after touching src file:"
echo "${X[@]:-(none)}" echo "${X[*]:-(none)}"
exit 1 exit 1
fi fi
@ -282,7 +282,7 @@ make generated_files >/dev/null
X=($(older openapi "${STAMP}")) X=($(older openapi "${STAMP}"))
if [[ "${#X[*]}" != 0 ]]; then if [[ "${#X[*]}" != 0 ]]; then
echo "Generated openapi files did not change after touching code-generator file:" echo "Generated openapi files did not change after touching code-generator file:"
echo " ${X[@]:-(none)}" echo " ${X[*]:-(none)}"
exit 1 exit 1
fi fi
@ -294,7 +294,7 @@ make generated_files >/dev/null
X=($(older openapi "${STAMP}")) X=($(older openapi "${STAMP}"))
if [[ "${#X[*]}" != 0 ]]; then if [[ "${#X[*]}" != 0 ]]; then
echo "Generated openapi files did not change after touching code-generator dir:" echo "Generated openapi files did not change after touching code-generator dir:"
echo " ${X[@]:-(none)}" echo " ${X[*]:-(none)}"
exit 1 exit 1
fi fi
@ -306,7 +306,7 @@ make generated_files >/dev/null
X=($(older openapi "${STAMP}")) X=($(older openapi "${STAMP}"))
if [[ "${#X[*]}" != 0 ]]; then if [[ "${#X[*]}" != 0 ]]; then
echo "Generated openapi files did not change after touching code-generator dep file:" echo "Generated openapi files did not change after touching code-generator dep file:"
echo " ${X[@]:-(none)}" echo " ${X[*]:-(none)}"
exit 1 exit 1
fi fi
@ -318,6 +318,6 @@ make generated_files >/dev/null
X=($(older openapi "${STAMP}")) X=($(older openapi "${STAMP}"))
if [[ "${#X[*]}" != 0 ]]; then if [[ "${#X[*]}" != 0 ]]; then
echo "Generated openapi files did not change after touching code-generator dep dir:" echo "Generated openapi files did not change after touching code-generator dep dir:"
echo " ${X[@]:-(none)}" echo " ${X[*]:-(none)}"
exit 1 exit 1
fi fi