diff --git a/run_tests.sh b/run_tests.sh index a31f9464..4280085e 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -58,32 +58,33 @@ case ${ID,,} in *suse*) pkg_mgr_cmd="zypper -n in" ;; centos|rhel|fedora) pkg_mgr_cmd="${RHT_PKG_MGR} install -y" ;; ubuntu|debian) pkg_mgr_cmd="apt-get install -y" ;; + gentoo) pkg_mgr_cmd="emerge" ;; *) echo "unsupported distribution: ${ID,,}"; exit 1 ;; esac -# Install git so that we can clone the tests repo -eval sudo $pkg_mgr_cmd git +# Install git so that we can clone the tests repo if git is not available +which git &>/dev/null || eval sudo "${pkg_mgr_cmd}" git # Clone the tests repo for access to the common test script -if [[ ! -d ${COMMON_TESTS_PATH} ]]; then +if [[ ! -d "${COMMON_TESTS_PATH}" ]]; then # The tests repo doesn't need a clone, we can just # symlink it. if [[ "$(basename ${WORKING_DIR})" == "openstack-ansible-tests" ]]; then - ln -s ${WORKING_DIR} ${COMMON_TESTS_PATH} + ln -s "${WORKING_DIR}" "${COMMON_TESTS_PATH}" # In zuul v3 any dependent repository is placed into # /home/zuul/src/git.openstack.org, so we check to see # if there is a tests checkout there already. If so, we # symlink that and use it. elif [[ -d "${ZUUL_TESTS_CLONE_LOCATION}" ]]; then - ln -s "${ZUUL_TESTS_CLONE_LOCATION}" ${COMMON_TESTS_PATH} + ln -s "${ZUUL_TESTS_CLONE_LOCATION}" "${COMMON_TESTS_PATH}" # Otherwise we're clearly not in zuul or using a previously setup # repo in some way, so just clone it from upstream. else - git clone -b ${TESTING_BRANCH} \ + git clone -b "${TESTING_BRANCH}" \ https://git.openstack.org/openstack/openstack-ansible-tests \ - ${COMMON_TESTS_PATH} + "${COMMON_TESTS_PATH}" fi fi diff --git a/run_tests_common.sh b/run_tests_common.sh index b35f20f1..8a6c5f01 100755 --- a/run_tests_common.sh +++ b/run_tests_common.sh @@ -77,9 +77,13 @@ case "${ID,,}" in pkg_list="python-dev lsb-release" sudo apt-get update ;; + gentoo) + sudo emaint-sync -A + ;; *) echo "Unsupported distribution: ${ID,,}" exit 1 + ;; esac eval sudo ${pkg_mgr_cmd} ${pkg_list} @@ -92,36 +96,39 @@ fi # Install bindep and tox sudo pip install 'bindep>=2.4.0' tox -if [[ ${ID,,} == "centos" ]]; then +if [[ "${ID,,}" == "centos" ]]; then # epel-release could be installed but not enabled (which is very common # in openstack-ci) so enable it here if needed sudo yum-config-manager --enable epel > /dev/null || true -elif [[ ${ID,,} == "fedora" ]]; then +elif [[ "${ID,,}" == "fedora" ]]; then sudo dnf -y install redhat-lsb-core yum-utils # openSUSE 42.1 does not have python-ndg-httpsclient -elif [[ ${ID,,} == *suse* ]] && [[ ${VERSION} == "42.1" ]]; then +elif [[ "${ID,,}" == *suse* ]] && [[ ${VERSION} == "42.1" ]]; then sudo pip install ndg-httpsclient fi # Get a list of packages to install with bindep. If packages need to be # installed, bindep exits with an exit code of 1. -BINDEP_PKGS=$(bindep -b -f ${BINDEP_FILE} test || true) +BINDEP_PKGS=$(bindep -b -f "${BINDEP_FILE}" test || true) echo "Packages to install: ${BINDEP_PKGS}" # Install OS packages using bindep if [[ ${#BINDEP_PKGS} > 0 ]]; then case "${ID,,}" in *suse*) - sudo zypper -n in $BINDEP_PKGS + sudo zypper -n in ${BINDEP_PKGS} ;; centos|fedora) - sudo $RHT_PKG_MGR install -y $BINDEP_PKGS + sudo "${RHT_PKG_MGR}" install -y ${BINDEP_PKGS} ;; ubuntu|debian) sudo apt-get update DEBIAN_FRONTEND=noninteractive \ sudo apt-get -q --option "Dpkg::Options::=--force-confold" \ - --assume-yes install $BINDEP_PKGS + --assume-yes install ${BINDEP_PKGS} + ;; + gentoo) + sudo emerge -q --jobs="$(nrpoc)" ${BINDEP_PKGS} ;; esac fi