Add CI tests using the standard test interface

This commit is contained in:
Sergey Turivniy 2018-02-01 17:38:20 +02:00
parent a826f20b3c
commit 1575a1d55a
4 changed files with 158 additions and 0 deletions

18
tests/tests.yml Normal file
View File

@ -0,0 +1,18 @@
---
# Tests that run in classic and container contexts
- hosts: localhost
roles:
- role: standard-test-beakerlib
tags:
- classic
- container
tests:
- testsuite
required_packages:
- gcc # testsuite needs this package
- gettext # testsuite needs this package
- libtool # testsuite needs this package
- make # testsuite needs this package
- readline-devel # testsuite needs this package
- rpm-build # testsuite needs this package
- wget # rlFetchSrcForInstalled needs this package

63
tests/testsuite/Makefile Normal file
View File

@ -0,0 +1,63 @@
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Makefile of testsuite
# Description: runs test suite from src package
# Author: Vaclav Danek <vdanek@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2017 Red Hat, Inc.
#
# This program is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see http://www.gnu.org/licenses/.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export TEST=testsuite
export TESTVERSION=1.0
BUILT_FILES=
FILES=$(METADATA) runtest.sh Makefile PURPOSE
.PHONY: all install download clean
run: $(FILES) build
./runtest.sh
build: $(BUILT_FILES)
test -x runtest.sh || chmod a+x runtest.sh
clean:
rm -f *~ $(BUILT_FILES)
include /usr/share/rhts/lib/rhts-make.include
$(METADATA): Makefile
@echo "Owner: Vaclav Danek <vdanek@redhat.com>" > $(METADATA)
@echo "Name: $(TEST)" >> $(METADATA)
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
@echo "Path: $(TEST_DIR)" >> $(METADATA)
@echo "Description: runs test suite from src package" >> $(METADATA)
@echo "Type: Sanity" >> $(METADATA)
@echo "TestTime: 5m" >> $(METADATA)
@echo "RunFor: gdbm" >> $(METADATA)
@echo "Requires: gdbm libtool readline-devel" >> $(METADATA)
@echo "Priority: Normal" >> $(METADATA)
@echo "License: GPLv2+" >> $(METADATA)
@echo "Confidential: no" >> $(METADATA)
@echo "Destructive: no" >> $(METADATA)
@echo "Releases: -RHEL4 -RHELClient5 -RHELServer5 -RHEL6" >> $(METADATA)
rhts-lint $(METADATA)

3
tests/testsuite/PURPOSE Normal file
View File

@ -0,0 +1,3 @@
PURPOSE of testsuite
Description: runs test suite from src package
Author: Vaclav Danek <vdanek@redhat.com>

View File

@ -0,0 +1,74 @@
#!/bin/bash
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of testsuite
# Description: runs test suite from src package
# Author: Vaclav Danek <vdanek@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2017 Red Hat, Inc.
#
# This program is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see http://www.gnu.org/licenses/.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
[ -e /usr/bin/rhts-environment.sh ] && . /usr/bin/rhts-environment.sh
. /usr/share/beakerlib/beakerlib.sh || exit 1
PACKAGE="gdbm"
rlJournalStart
rlPhaseStartSetup
rlAssertRpm $PACKAGE
rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
rlRun "pushd $TmpDir"
# fetch srpm
rlRun "rlFetchSrcForInstalled $PACKAGE || yumdownloader --enablerepo='*' --source $PACKAGE" \
0 "Fetching the source rpm"
package=`rpm -q --qf "%{SOURCERPM}" $PACKAGE`
installlog=`mktemp /tmp/install.log.XXXXXX`
rlLog "Using $installlog as installation log"
rlRun "rpm -ivh $TmpDir/$package &> $installlog"
BUILDDIR="$HOME/rpmbuild/BUILD"
SPECDIR="$HOME/rpmbuild/SPECS"
rlPhaseEnd
rlPhaseStartTest
rlRun "cd /root/rpmbuild"
rlRun "rpmbuild -bp $SPECDIR/$PACKAGE.spec"
rlRun "cd $BUILDDIR"
rlRun "cd gdbm-*"
if rlGetPrimaryArch == 'ppc64le'; then
rlRun "./configure --disable-static --enable-libgdbm-compat --build=ppc64le-redhat-linux-gnu --host=ppc64le-redhat-linux-gnu"
else
rlRun "./configure --disable-static --enable-libgdbm-compat"
fi
rlRun "make check"
rlRun "ls | grep -v tests | xargs rm -rf"
rlRun "cd tests"
rlRun "rm -f testsuite.log"
rlRun "./testsuite"
rlAssertGrep "All .* tests were successful." testsuite.log
rlPhaseEnd
rlPhaseStartCleanup
rlRun "popd"
rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
rlRun "rm -rf /root/rpmbuild"
rlPhaseEnd
rlJournalPrintText
rlJournalEnd