#!/bin/sh set -eux cd "$SOURCE" . /etc/os-release test_optional= test_basic= if ls ../cockpit-appstream* 1> /dev/null 2>&1; then test_optional=1 else test_basic=1 fi if [ "$ID" = "fedora" ]; then test_basic=1 test_optional=1 fi # tests need cockpit's bots/ libraries git clone --depth=1 https://github.com/cockpit-project/bots # only install a subset to save time/space rm package.json package-lock.json # otherwise the command below installs *everything*, argh npm install axe-core chrome-remote-interface sizzle export TEST_OS="${ID}-${VERSION_ID/./-}" # HACK: upstream does not yet know about rawhide if [ "$TEST_OS" = "fedora-34" ]; then export TEST_OS=fedora-33 fi # HACK: CI hits this selinux denial. Unrelated to our tests. export TEST_ALLOW_JOURNAL_MESSAGES=".*Permission denied:.*/var/cache/app-info/xmls.*" # select tests TESTS="" EXCLUDES="" RC=0 if [ -n "$test_optional" ]; then # pre-download cirros image for Machines tests bots/image-download cirros # takes too long, somehow breaks Ansible EXCLUDES="$EXCLUDES TestMachines.testCreate" # triggers SELinux violation EXCLUDES="$EXCLUDES TestMachines.testAddDisk" # not investigated yet EXCLUDES="$EXCLUDES TestMachines.testCreateThenInstall TestMachines.testCreateFileSource TestMachines.testCreateUrlSource TestMachines.testVmNICs" # TestUpdates: we can't run rebooting tests TESTS="$TESTS TestAutoUpdates TestMachines TestStorage TestUpdates.testBasic TestUpdates.testSecurityOnly" fi if [ -n "$test_basic" ]; then # still too unstable EXCLUDES="$EXCLUDES TestFirewall.testNetworkingPage" # TODO: fix for CI environment EXCLUDES="$EXCLUDES TestLogin.testTally" EXCLUDES="$EXCLUDES TestAccounts.testBasic" # PCI devices list is not predictable EXCLUDES="$EXCLUDES TestSystemInfo.testHardwareInfo" # Known issue #1008 EXCLUDES="$EXCLUDES TestTuned.testBasic" # PAM bug in RHEL 8: it shouldn't pwquality the old password when having to set a new one, that's completely counter-productive and wrong if [ "${TEST_OS#rhel}" != "$TEST_OS" ] || [ "$TEST_OS" = "fedora-31" ]; then EXCLUDES="$EXCLUDES TestLogin.testExpired" fi TESTS="$TESTS TestAccounts TestBonding TestBridge TestFirewall TestKdump TestLogin TestNetworking TestServices TestSOS TestSystemInfo TestTeam TestTerminal TestTuned " fi exclude_options="" for t in $EXCLUDES; do exclude_options="$exclude_options --exclude $t" done # execute run-tests test/common/run-tests --test-dir test/verify --trace --verbose --nondestructive $exclude_options \ --machine localhost:22 --browser localhost:9090 $TESTS || RC=$? # check-menu is not @nondestructive yet, keep it last if [ -n "$test_basic" ]; then test/verify/check-menu -tv --machine localhost:22 --browser localhost:9090 || RC=$? fi echo $RC > "$LOGS/exitcode" cp --verbose Test* "$LOGS" || true # deliver test result via exitcode file exit 0