abd991b230
This change updates the fixtures files for the modules within fuel-library to use the relative path to the upstream modules used by fuel-library. With this change we are also adding an initial prep task that is used by CI to pull down all the modules first and only one time to reduce the amount of repeated calls to the upstream git repositories. Included in this change is also an update to exclude all the upstream modules from the spec and lint tasks as those are maintained in the upstream modules and should not be done when testing fuel-library. This change also adds documentation to the README.md on how to run the tests from the root of fuel-library. Change-Id: I9cde21b94a8367fd45cf046af48d7618076a385c Related-Bug: #1535832
117 lines
2.5 KiB
Bash
Executable File
117 lines
2.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
usage="$(basename "$0") [-h] [-m MODULE] [-a] -- runs unit tests for puppet modules, by default runs tests only for changed modules.
|
|
|
|
where:
|
|
-h show this help text
|
|
-a|--all run unit tests for all modules
|
|
-m|--module MODULE run unit tests for specified module
|
|
"
|
|
|
|
while [[ $# > 0 ]] ; do
|
|
key="$1"
|
|
|
|
case $key in
|
|
-a|--all)
|
|
ALL='1'
|
|
;;
|
|
-m|--modules)
|
|
MODULES="$MODULES $2"
|
|
shift # past argument
|
|
;;
|
|
-h|--help)
|
|
echo "$usage" >&2
|
|
exit 0
|
|
;;
|
|
*)
|
|
# unknown option
|
|
;;
|
|
esac
|
|
shift # past argument or value
|
|
done
|
|
|
|
# Some basic checks
|
|
if ! [ -d "$WORKSPACE" ] ; then
|
|
echo "ERROR: WORKSPACE not found"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$PUPPET_GEM_VERSION" ] ; then
|
|
export PUPPET_GEM_VERSION='~> 3.8.0'
|
|
fi
|
|
|
|
# Check for bundle and exit if failed
|
|
bundle --version || exit 1
|
|
|
|
# Check if disabled modules list if available
|
|
test -f $WORKSPACE/utils/jenkins/modules.disable_rspec || exit 1
|
|
|
|
export GEM_HOME=$WORKSPACE/.bundled_gems
|
|
|
|
function get_module_deps {
|
|
current_dir=`pwd`
|
|
cd $WORKSPACE/deployment
|
|
bundle update
|
|
./update_modules.sh
|
|
cd $current_dir
|
|
}
|
|
|
|
# Function that runs rake spec using bundle
|
|
function rake_spec {
|
|
MODULE=`basename $(pwd)`
|
|
echo -e "\nChecking module $MODULE"
|
|
|
|
if ! [ -f Gemfile ] ; then
|
|
echo "Gemfile not found. Skipping unit tests."
|
|
return 0
|
|
fi
|
|
|
|
if ! [ -f Rakefile ] ; then
|
|
echo "Rakefile not found. Skipping unit tests."
|
|
return 0
|
|
fi
|
|
|
|
if grep -qx $MODULE $WORKSPACE/utils/jenkins/modules.disable_rspec ; then
|
|
echo "Unit tests are disabled for $MODULE module"
|
|
return 0
|
|
fi
|
|
|
|
bundle update
|
|
bundle exec rake spec SPEC_OPTS='--format documentation --tty --color'
|
|
return $?
|
|
}
|
|
|
|
# Iterate over the changed modules and run unit tests for them
|
|
failed_modules=""
|
|
if [ "$ALL" == '1' ] ; then
|
|
modules=`ls -d $WORKSPACE/deployment/puppet/*`
|
|
elif ! [ -z "$MODULES" ] ; then
|
|
modules=$MODULES
|
|
else
|
|
git diff --name-only HEAD~ &>/dev/null || exit 1
|
|
modules=$(git diff --name-only HEAD~ | grep -o 'deployment/puppet/[^/]*/' | sort -u)
|
|
fi
|
|
|
|
echo "Pulling module dependencies"
|
|
|
|
get_module_deps
|
|
|
|
echo "Checking modules: $modules"
|
|
|
|
for mod in $modules; do
|
|
if [ -d $mod ] ; then
|
|
pushd $mod &> /dev/null
|
|
rake_spec || failed_modules="$failed_modules\n$mod"
|
|
popd &>/dev/null
|
|
fi
|
|
done
|
|
|
|
if [ -z "$failed_modules" ] ; then
|
|
echo -e "\nRSpec Tests SUCCEEDED: No errors found.\n"
|
|
exit 0
|
|
else
|
|
echo -e "\nRSpec Tests FAILED for the following modules:"
|
|
echo -e "$failed_modules\n"
|
|
exit 1
|
|
fi
|