acaae60a54
Details: * move main files into the top of the tree; * move examples into examples folder; * support new structure in run_test.sh and setup.py. Result: * update gitignore files to support run_test.sh; * compatibility with openstack-gates; * compatibility with standard pip installation via git+https. Closes-Bug: #1479785 Change-Id: I93b51b0797eaf619614cb2a493a2a68d0f547751
152 lines
3.5 KiB
Bash
Executable File
152 lines
3.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Copyright 2014 Mirantis, Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
set -eu
|
|
|
|
|
|
function usage {
|
|
echo "Usage: $0 [OPTION]..."
|
|
echo "Run fuel plugin building"
|
|
echo ""
|
|
echo " -b, --build Builds all of the plugins"
|
|
echo " -B, --no-build Don't run plugins build"
|
|
echo " -f, --fpb Run tests for fpb"
|
|
echo " -F, --no-fpb Don't run tests for fpb"
|
|
echo " -h, --help Print this usage message"
|
|
echo ""
|
|
echo "Note: with no options specified, the script will try to run "
|
|
echo " all available tests with all available checks."
|
|
exit
|
|
}
|
|
|
|
|
|
function process_options {
|
|
for arg in $@; do
|
|
case "$arg" in
|
|
-h|--help) usage;;
|
|
-b|--build) plugins_build=1;;
|
|
-B|--no-build) no_plugins_build=1;;
|
|
-f|--fpb) fpb_tests=1;;
|
|
-F|--no-fpb) no_fpb_tests=1;;
|
|
-*) testropts="$testropts $arg";;
|
|
*) testrargs="$testrargs $arg"
|
|
esac
|
|
done
|
|
}
|
|
|
|
# Settings
|
|
ROOT=$(dirname `readlink -f $0`)
|
|
FPB_VENV_PATH=${FPB_VENV_PATH:-"${ROOT}/fpb_venv"}
|
|
BUILT_PLUGINS_PATH=${BUILT_PLUGINS_PATH:-"${ROOT}/built_plugins"}
|
|
|
|
# Initialize global variables
|
|
plugins_build=0
|
|
no_plugins_build=0
|
|
fpb_tests=0
|
|
no_fpb_tests=0
|
|
|
|
|
|
function run_tests {
|
|
run_cleanup
|
|
|
|
# This variable collects all failed tests. It'll be printed in
|
|
# the end of this function as a small statistic for user.
|
|
local errors=""
|
|
|
|
# Enable all tests if none was specified skipping all explicitly
|
|
# disabled tests.
|
|
if [[ $plugins_build -eq 0 && \
|
|
$fpb_tests -eq 0 ]]; then
|
|
|
|
if [ $no_plugins_build -ne 1 ]; then plugins_build=1; fi
|
|
if [ $no_fpb_tests -ne 1 ]; then fpb_tests=1; fi
|
|
|
|
fi
|
|
|
|
# Run all enabled tests
|
|
if [ $plugins_build -eq 1 ]; then
|
|
echo "Starting plugins build..."
|
|
run_build || errors+=" plugins_build"
|
|
fi
|
|
|
|
if [ $fpb_tests -eq 1 ]; then
|
|
echo "Starting fpb testing..."
|
|
run_fpb || errors+=" fpb_tests"
|
|
fi
|
|
|
|
if [ -n "$errors" ]; then
|
|
echo Failed tests: $errors
|
|
exit 1
|
|
fi
|
|
|
|
exit
|
|
}
|
|
|
|
|
|
function run_cleanup {
|
|
find ${ROOT} -type f -name *.pyc -delete
|
|
}
|
|
|
|
|
|
function run_fpb {
|
|
local result=0
|
|
|
|
pushd "${ROOT}" >> /dev/null
|
|
tox || result=1
|
|
popd >> /dev/null
|
|
|
|
return $result
|
|
}
|
|
|
|
|
|
# Build all of the plugins with current version of plugins builder
|
|
function run_build {
|
|
virtualenv $FPB_VENV_PATH
|
|
|
|
# virtualenv has unbound variables
|
|
# disable it during virtualenv usage
|
|
set +u
|
|
|
|
source $FPB_VENV_PATH/bin/activate || return 1
|
|
fpb_path="${ROOT}"
|
|
pushd $fpb_path
|
|
python setup.py install
|
|
popd
|
|
|
|
mkdir -p $BUILT_PLUGINS_PATH
|
|
rm -f $BUILT_PLUGINS_PATH/*.fp
|
|
rm -f $BUILT_PLUGINS_PATH/*.rpm
|
|
|
|
# Find plugins
|
|
for dir in $ROOT/examples/*/metadata.yaml;
|
|
do
|
|
plugin_dir=$(dirname "${dir}");
|
|
pushd "${plugin_dir}"
|
|
fpb --build "${plugin_dir}" --debug || return 1
|
|
cp *.fp $BUILT_PLUGINS_PATH/
|
|
cp *.rpm $BUILT_PLUGINS_PATH/
|
|
popd
|
|
done
|
|
|
|
deactivate
|
|
set -u
|
|
return 0
|
|
}
|
|
|
|
# Parse command line arguments and run the tests
|
|
process_options $@
|
|
run_tests
|