run revision 8dff4a773dd9525ec587cd31646a9f67252122c1
a34684a59b60a4173c25035d0c627ef17e6dc215rpluem# Run continuous integration tests.
1337c7673efc1f80f634139fbad7cbb98a0dc657ylavic# Copyright (C) 2014 Red Hat
1337c7673efc1f80f634139fbad7cbb98a0dc657ylavic# This program is free software; you can redistribute it and/or modify
4da61833a1cbbca94094f9653fd970582b97a72etrawick# it under the terms of the GNU General Public License as published by
4da61833a1cbbca94094f9653fd970582b97a72etrawick# the Free Software Foundation; either version 3 of the License, or
4da61833a1cbbca94094f9653fd970582b97a72etrawick# (at your option) any later version.
4da61833a1cbbca94094f9653fd970582b97a72etrawick# This program is distributed in the hope that it will be useful,
4789804be088bcd86ae637a29cdb7fda25169521jailletc# but WITHOUT ANY WARRANTY; without even the implied warranty of
4789804be088bcd86ae637a29cdb7fda25169521jailletc# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4789804be088bcd86ae637a29cdb7fda25169521jailletc# GNU General Public License for more details.
e50c3026198fd496f183cda4c32a202925476778covener# You should have received a copy of the GNU General Public License
e50c3026198fd496f183cda4c32a202925476778covener# along with this program. If not, see <http://www.gnu.org/licenses/>.
5b88c8507d5ef6d0c4cfbc78230294968175b638minfrindeclare -r CI_DIR=`dirname "\`readlink -f \"\$0\"\`"`
506bfe33206b2fece40ef25f695af39dd4130facjkaluza# Minimum percentage of code lines covered by tests
d58a848a016d401b965111e50ef829e1641f7834minfrin# Minimum percentage of code functions covered by tests
17e6c95f3b22d18acdf8380fb26a8d0e10c80767ylavic# Output program usage information.
330e16bea8fe9cace4de90c349750c03dfb1fe64ylavicUsage: `basename "$0"` [OPTION...]
330e16bea8fe9cace4de90c349750c03dfb1fe64ylavicRun continuous integration tests.
330e16bea8fe9cace4de90c349750c03dfb1fe64ylavic -h, --help Output this help message and exit.
330e16bea8fe9cace4de90c349750c03dfb1fe64ylavic -p, --prefix=STRING Use STRING as the prefix to prepend to file and
330e16bea8fe9cace4de90c349750c03dfb1fe64ylavic directory paths in output.
d7205b1a86c51c27b71a2c458dc453fd53a261c1covener -n, --no-deps Don't attempt to install dependencies.
d7205b1a86c51c27b71a2c458dc453fd53a261c1covener -e, --essential Run the essential subset of tests.
d7205b1a86c51c27b71a2c458dc453fd53a261c1covener -m, --moderate Run the moderate subset of tests.
d7205b1a86c51c27b71a2c458dc453fd53a261c1covener -r, --rigorous,
d7205b1a86c51c27b71a2c458dc453fd53a261c1covener -f, --full Run the rigorous (full) set of tests.
44ff304057225e944e220e981d434a046d14cf06covenerDefault options: --essential
5d1ba75b8794925e67591c209085a49279791de9covener# Output a file display path: a path relocated from base directory (BASE_DIR)
5d1ba75b8794925e67591c209085a49279791de9covener# to base prefix (BASE_PFX).
032982212dbcc7c3cce95bf89c503bb56e185ac7kbrand# Args: path
caad2986f81ab263f7af41467dd622dc9add17f3ylavic# Run a stage.
45a10d38e6051fd7bdf9d742aaae633d97ff02abjailletc# Args: id cmd [arg...]
28c31fb73c1264bd1d0ff932573677030b024c7dwrowe# Execute mock as is, or, if the user is not in the "mock" group, under sudo,
28c31fb73c1264bd1d0ff932573677030b024c7dwrowe# which has password prompt/input on the console, instead of stderr/stdin.
8491e0600f69b0405e156ea8a419653c065c645bcovener# Args: [mock_arg...]
49dacedb6c387b786b7911082ff35121a45f414bcovener prompt+="To run mock enter sudo password for $USER: "
fc42512879dd0504532f52fe5d0d0383dda96a1eniq# Execute mock_privileged with extra chroot configuration added.
fc42512879dd0504532f52fe5d0d0383dda96a1eniq# Args: chroot [mock_arg...]
fc42512879dd0504532f52fe5d0d0383dda96a1eniq# Input: extra configuration
da0442c0440caef34706e2c2f3af05cb65921cc0jailletc conf_dir=`mktemp --tmpdir --directory mock-config.XXXXXXXX`
06b8f183140c8e02e0974e938a05078b511d1603covener # Preserve timestamps to avoid unnecessary cache rebuilds
06b8f183140c8e02e0974e938a05078b511d1603covener cp -r --preserve=timestamps /etc/mock/* "$conf_dir"/
15890c9306ba98f6fc243e15a3c4778ddc7d773erpluem touch --reference="/etc/mock/${chroot}.cfg" "${conf_dir}/${chroot}.cfg"
259878293a997ff49f5ddfc53d3739cbdc25444ecovener mock_privileged --configdir="$conf_dir" --root="$chroot" "$@"
259878293a997ff49f5ddfc53d3739cbdc25444ecovener# Execute mock_privileged with dependency package source configuration added.
15890c9306ba98f6fc243e15a3c4778ddc7d773erpluem# Args: chroot [mock_arg...]
65967d05f839dbf27cf91d91fa79585eeae19660minfrin declare -r config=$(basename $(readlink -f "/etc/mock/${chroot_name}.cfg"))
5716f9c6daa92dde5f2f9d11ed63f7c9549c223atrawickconfig_opts['yum.conf'] += '''
5716f9c6daa92dde5f2f9d11ed63f7c9549c223atrawickname=Extra SSSD dependencies
5716f9c6daa92dde5f2f9d11ed63f7c9549c223atrawickbaseurl=http://copr-be.cloud.fedoraproject.org/results/lslebodn/sssd-deps/$repo/
54d750a84a175d8e338880514d440773eb986b50covenerskip_if_unavailable=true
54d750a84a175d8e338880514d440773eb986b50covener# Run debug build checks.
54d750a84a175d8e338880514d440773eb986b50covener # Extended glob pattern matching tests to run under Valgrind.
4e30ef014533a7e93c92d88306291f5e49c9692ftrawick declare -r valgrind_test_pattern="!(*.py|*/dlopen-tests|*/whitespace_test)"
2e15620d724fb8e3a5be183b917359a2fd6e9468covener test_dir=`mktemp --directory /dev/shm/ci-test-dir.XXXXXXXX`
b8efdc95bec9cf089aa1be0bfd07d46aa1137a7acovener # Not building "tests" due to https://fedorahosted.org/sssd/ticket/2350
b8efdc95bec9cf089aa1be0bfd07d46aa1137a7acovener stage make-tests make-check-wrap -j $CPU_NUM check -- true
993d1261a278d7322bccef219101220b7b4fb8c5jkaluza test_dir_distcheck=`mktemp --directory /dev/shm/ci-test-dir.XXXXXXXX`
ba050a6f942b9fa0e81ed73437588005c569655ccovener # Single thread due to https://fedorahosted.org/sssd/ticket/2354
77ca16c5676da23155311e13cee61e7eaba9fa3ejailletc# Run coverage build checks.
77ca16c5676da23155311e13cee61e7eaba9fa3ejailletc declare -r coverage_report_dir="ci-report-coverage"
4d12805e6c18253040223ea637acd6b3b3c18f60jorton test_dir=`mktemp --directory /dev/shm/ci-test-dir.XXXXXXXX`
a4df2cd1e1391575a327c2a90ba4315f805a0a78covener # Not building "tests" due to https://fedorahosted.org/sssd/ticket/2350
a4df2cd1e1391575a327c2a90ba4315f805a0a78covener stage make-tests make-check-wrap -j $CPU_NUM check -- true
cb666b29f81df1d11d65002250153353568021fccovener stage lcov-pre lcov --capture --initial --directory . \
1f50dc34ae069adeed20b2986e5ffdefa5c410e0covener stage lcov-merge lcov --add-tracefile ci-base.info \
65a4e663b82f8bce28ac22ab2edfd7502de36998sf "$coverage_report_dir" \
65a4e663b82f8bce28ac22ab2edfd7502de36998sf --title "sssd" --show-details \
c7de1955eb0eaeabf7042902476397692672d549sf --legend --prefix "$BASE_DIR" \
a511a29faf2ff7ead3b67680154a624effb31aafminfrin stage lcov-check eval 'lcov_check "$COVERAGE_MIN_LINES" \
a511a29faf2ff7ead3b67680154a624effb31aafminfrin "$COVERAGE_MIN_FUNCS" \
deec48c67d4786bc77112ffbf3a4e70b931097edminfrin# Run a build inside a sub-directory.
6d601599d3d65df0410eae6e573e75b2dbfb1fb4minfrin# Args: id cmd [arg...]
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq# Main routine
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsfeval set -- "$args_expr"
d7ffd2da16d58b1a0de212e4d56f7aebb72bef26sfwhile true; do
9811aed12bbc71783d2e544ccb5fecd193843eadsf DEPS=false; shift;;
2a7beea91d46beb41f043a84eaad060047ee04aafabien shift; break;;
f21e9e3d0bfb7a507ecc5bc963f2159d693503d1sfif [ $# != 0 ]; then