#!/usr/bin/env bash
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
[[ "$TRACE" ]] && set -x
set -eo pipefail
main() {
# "$root_dir"/deployment/run-unit-tests.sh
local root_dir=$(dirname "$(cd -P -- "$(dirname "$0")" && pwd -P)")
local template_dir="$root_dir"/deployment
local source_dir="$root_dir"/source
local venv="$root_dir"/.venv
[[ ! -d "$venv" ]] && python3 -m venv "$venv"
source "$venv"/bin/activate
unset AWS_PROFILE
python3 -m pip install --upgrade pip setuptools wheel
local requirements_files=(
"$source_dir"/testing_requirements.txt
)
for requirements_file in ${requirements_files[@]}; do
python3 -m pip install -r "$requirements_file"
done
local coverage_dir="$template_dir"/test/coverage-reports
rm -rf "$coverage_dir"
mkdir -p "$coverage_dir"
[[ -a "$source_dir"/lambda/uuid_generator/cfnresponse.py ]] && rm "$source_dir"/lambda/uuid_generator/cfnresponse.py
[[ -a "$source_dir"/lambda/account_registration_provider/cfnresponse.py ]] && rm "$source_dir"/lambda/account_registration_provider/cfnresponse.py
ln -s "$source_dir"/lambda/utils/cfnresponse.py "$source_dir"/lambda/uuid_generator/cfnresponse.py
ln -s "$source_dir"/lambda/utils/cfnresponse.py "$source_dir"/lambda/account_registration_provider/cfnresponse.py
pushd "$source_dir"
python3 -m coverage run -m pytest && \
python3 -m coverage xml && \
python3 -m coverage report || \
true
popd
rm "$source_dir"/lambda/uuid_generator/cfnresponse.py
rm "$source_dir"/lambda/account_registration_provider/cfnresponse.py
# coverage reports generate with absolute path which would conflict with sonarqube
sed -i -e "s,"$source_dir",source,g" "$coverage_dir"/wco.coverage.xml
# Run the cdk snapshot test
cd "$source_dir"
npm install
npm run test
deactivate
}
main "$@"