73 lines
2.2 KiB
Bash
Executable File
73 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e${DEBUG+x}o pipefail
|
|
|
|
#
|
|
# This script is run to make sure that every package returned by
|
|
# go list -test ./... (when run from the repo root, api/, and sdk/ directory)
|
|
# appear in the test_packages array defined in the sibling file
|
|
# generate-test-package-lists.sh
|
|
#
|
|
# This script is executed as part of the ci workflow triggered by pull_requests
|
|
# events. In the event that the job that runs this script fails, examine the
|
|
# output of the 'test' step in that job to obtain the list of test packages that
|
|
# are missing in the test_packages array or that should be removed from it.
|
|
#
|
|
|
|
dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
|
|
|
source generate-test-package-lists.sh
|
|
|
|
get_module_packages() {
|
|
local package_list=($(go list -test -json ./... | jq -r '.ForTest | select(.!=null)' | grep -v vault/integ | grep '^github.com/hashicorp/'))
|
|
|
|
for package in "${package_list[@]}" ; do
|
|
# Check if the current package already exists in all_packages
|
|
if ! grep "\b$package\b" <<< "${all_packages[@]}" &> /dev/null; then
|
|
all_packages+=($package)
|
|
fi
|
|
done
|
|
}
|
|
|
|
find_packages() {
|
|
for package in "${all_packages[@]}" ; do
|
|
if ! grep "\b${package}\b" <<< "${test_packages[@]}" &> /dev/null ; then
|
|
echo "Error: package ${package} is not present in test_packages"
|
|
exit 1
|
|
fi
|
|
done
|
|
}
|
|
|
|
count_test_packages() {
|
|
count=0
|
|
for test_package in "${test_packages[@]}" ; do
|
|
count=$((${count}+$(wc -w <<< "${test_package}")))
|
|
done
|
|
|
|
echo $count
|
|
}
|
|
|
|
all_packages=()
|
|
|
|
cd "$dir/../.."
|
|
get_module_packages
|
|
|
|
cd "$dir/../../sdk"
|
|
get_module_packages
|
|
|
|
cd "$dir/../../api"
|
|
get_module_packages
|
|
|
|
find_packages
|
|
|
|
test_package_count=$(count_test_packages)
|
|
if (( ${#all_packages[@]} != $test_package_count )) ; then
|
|
echo "Error: there are currently ${#all_packages[@]} packages in the repository but $test_package_count packages in test_packages"
|
|
|
|
unused_packages="${test_packages[@]} "
|
|
for ap in ${all_packages[@]} ; do
|
|
unused_packages="$(echo "$unused_packages" | sed -r "s~$ap ~ ~" )"
|
|
done
|
|
|
|
echo "Packages in test_packages that aren't used: ${unused_packages// /}"
|
|
fi
|