diff --git a/tests/cmd-line-options/Makefile b/tests/cmd-line-options/Makefile new file mode 100644 index 0000000..d4136cc --- /dev/null +++ b/tests/cmd-line-options/Makefile @@ -0,0 +1,88 @@ +# Copyright (c) 2006 Red Hat, Inc. All rights reserved. This copyrighted material +# is made available to anyone wishing to use, modify, copy, or +# redistribute it subject to the terms and conditions of the GNU General +# Public License v.2. +# +# 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, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Author: Milos Malik + +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# +# Example Makefile for RHTS # +# This example is geared towards a test for a specific package # +# It does most of the work for you, but may require further coding # +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# + +# The toplevel namespace within which the test lives. +# FIXME: You will need to change this: +TOPLEVEL_NAMESPACE=CoreOS + +# The name of the package under test: +# FIXME: you wil need to change this: +PACKAGE_NAME=acl + +# The path of the test below the package: +# FIXME: you wil need to change this: +RELATIVE_PATH=Sanity/cmd-line-options + +# Version of the test. Used with make tag. +export TESTVERSION=1.0 + +# The combined namespace of the test. +export TEST=/$(TOPLEVEL_NAMESPACE)/$(PACKAGE_NAME)/$(RELATIVE_PATH) + + +# A phony target is one that is not really the name of a file. +# It is just a name for some commands to be executed when you +# make an explicit request. There are two reasons to use a +# phony target: to avoid a conflict with a file of the same +# name, and to improve performance. +.PHONY: all install download clean + +# executables to be built should be added here, they will be generated on the system under test. +BUILT_FILES= + +# data files, .c files, scripts anything needed to either compile the test and/or run it. +FILES=$(METADATA) runtest.sh Makefile PURPOSE test-core.sh + +run: $(FILES) build + ./runtest.sh + +build: $(BUILT_FILES) + chmod a+x ./runtest.sh ./test-core.sh + +clean: + rm -f *~ *.rpm $(BUILT_FILES) + +# You may need to add other targets e.g. to build executables from source code +# Add them here: + + +# Include Common Makefile +include /usr/share/rhts/lib/rhts-make.include + +# Generate the testinfo.desc here: +$(METADATA): Makefile + @touch $(METADATA) +# Change to the test owner's name + @echo "Owner: Milos Malik " > $(METADATA) + @echo "Name: $(TEST)" >> $(METADATA) + @echo "Path: $(TEST_DIR)" >> $(METADATA) + @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) + @echo "Type: Sanity" >> $(METADATA) + @echo "Description: utilities are tested if they support basic command line options" >> $(METADATA) + @echo "TestTime: 2m" >> $(METADATA) + @echo "RunFor: $(PACKAGE_NAME)" >> $(METADATA) +# add any other packages for which your test ought to run here + @echo "Requires: $(PACKAGE_NAME)" >> $(METADATA) +# add any other requirements for the script to run here + @echo "License: GPLv2" >> $(METADATA) + +# You may need other fields here; see the documentation + rhts-lint $(METADATA) diff --git a/tests/cmd-line-options/PURPOSE b/tests/cmd-line-options/PURPOSE new file mode 100644 index 0000000..cbf7099 --- /dev/null +++ b/tests/cmd-line-options/PURPOSE @@ -0,0 +1,5 @@ +Test Name: cmd-line-options +Author: Milos Malik +Location: /CoreOS/acl/Sanity/cmd-line-options +Short Description: Utilities are tested if they support basic command line options. +Safe: yes diff --git a/tests/cmd-line-options/runtest.sh b/tests/cmd-line-options/runtest.sh new file mode 100755 index 0000000..a852c11 --- /dev/null +++ b/tests/cmd-line-options/runtest.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +# Copyright (c) 2006 Red Hat, Inc. All rights reserved. This copyrighted material +# is made available to anyone wishing to use, modify, copy, or +# redistribute it subject to the terms and conditions of the GNU General +# Public License v.2. +# +# 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, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Author: Milos Malik + +rhts-run-simple-test $TEST ./test-core.sh diff --git a/tests/cmd-line-options/test-core.sh b/tests/cmd-line-options/test-core.sh new file mode 100755 index 0000000..92d8aed --- /dev/null +++ b/tests/cmd-line-options/test-core.sh @@ -0,0 +1,113 @@ +#!/bin/sh +# Description: sanity test for acl package +# Author: Milos Malik + +##### Variable Declaration ##### +VERSION=1.0 + +# FAIL unless test explicitly passes +RESULT=FAIL + +# Each pass increases SCORE by 1 +SCORE=0 +TOTAL=8 + +# Set language so we know what results to test for +set_lang=0 +old_lang=$LANG +new_lang=en_US.UTF-8 + +# Which package and which utility do we test? +PACKAGE=acl + +##### Function Declaration ##### + +log () { + printf "\n:: $1 ::\n" +} + +check_exit_code () { + echo -e "\t* exit code: $1" + if [ $1 $2 $3 ] ; then + let "SCORE += 1" + fi +} + +##### Begin Test ##### + +log "[`date +%H:%M:%S`] Begin Test - $TEST-$VERSION" + +# Warn if not running as root that test might fail +e_user=$(whoami) +if [[ x"${e_user}" != x"root" ]]; then + log "Warning, not running as root! This test might fail." +fi + +# Temporarily set LANG to value we can trust results from +if [[ x"${LANG}" != x"${new_lang}" ]]; then + log "Warning, LANG not set to ${new_lang}!" + log "Temporarily setting LANG to ${new_lang}, was ${old_lang}" + + set_lang=1 + export LANG=${new_lang} + log "Done, LANG=${new_lang}." +fi + +log "getfacl -h" +getfacl -h >& /dev/null +check_exit_code $? -eq 0 + +log "getfacl --help" +getfacl --help >& /dev/null +check_exit_code $? -eq 0 + +log "getfacl -v" +getfacl -v >& /dev/null +check_exit_code $? -eq 0 + +log "getfacl --version" +getfacl --version >& /dev/null +check_exit_code $? -eq 0 + +log "setfacl -h" +setfacl -h >& /dev/null +check_exit_code $? -eq 0 + +log "setfacl --help" +setfacl --help >& /dev/null +check_exit_code $? -eq 0 + +log "setfacl -v" +setfacl -v >& /dev/null +check_exit_code $? -eq 0 + +log "setfacl --version" +setfacl --version >& /dev/null +check_exit_code $? -eq 0 + +# Reset LANG to original value +if [[ ${set_lang} == 1 ]]; then + log "Resetting LANG to ${old_lang}." + export LANG=${old_lang} + log "Done, LANG=${old_lang}." +fi + +log "[`date +%H:%M:%S`] End Test - $TEST-$VERSION" + +##### Report results ##### + +log "SCORE: ${SCORE}/${TOTAL}" + +if [ ${SCORE} -eq ${TOTAL} ] ; then +# everything was OK + log "RESULT: PASS" + printf "\n\n" + exit 0 +else +# something failed + log "RESULT: FAIL" + printf "\n\n" + exit 1 +fi + +##### End Test ##### diff --git a/tests/tests.yml b/tests/tests.yml new file mode 100644 index 0000000..d6fb2ff --- /dev/null +++ b/tests/tests.yml @@ -0,0 +1,13 @@ +--- +# This first play always runs on the local staging system +- hosts: localhost + roles: + - role: standard-test-beakerlib + tags: + - classic + - container + - atomic + tests: + - cmd-line-options + required_packages: + - which # which package required for cmd-line-options