--- generator/tests.ml | 38 +++++++++++++++ tests/regressions/Makefile.am | 46 ++---------------- tests/regressions/rhbz1001875.sh | 7 +-- tests/regressions/rhbz1044014.sh | 9 +--- tests/regressions/rhbz1054761.sh | 5 -- tests/regressions/rhbz1091803.sh | 5 -- tests/regressions/rhbz563450.sh | 8 +-- tests/regressions/rhbz563450b.sh | 6 +-- tests/regressions/rhbz690819.sh | 7 +-- tests/regressions/rhbz789960.sh | 2 +- tests/regressions/rhbz914931.c | 10 +--- tests/regressions/test-noexec-stack.pl | 48 ++++++++---------- tests/regressions/tests.mk | 89 ++++++++++++++++++++++++++++++++++ 13 files changed, 165 insertions(+), 115 deletions(-) create mode 100644 tests/regressions/tests.mk diff --git a/generator/tests.ml b/generator/tests.ml index 9fe63ec..4ffbec4 100644 --- a/generator/tests.ml +++ b/generator/tests.ml @@ -324,6 +324,44 @@ let tests = [ ]; }; + "tests/regressions", { + defaults with + check_fast = [ + "rhbz501893"; + "rhbz1055452"; + ]; + check = [ + "rhbz503169c13.sh"; + "rhbz557655.sh"; + "rhbz563450.sh"; + "rhbz563450b.sh"; + "rhbz576879.sh"; + "rhbz578407.sh"; + "rhbz580246.sh"; + "rhbz602997.sh"; + "rhbz690819.sh"; + "rhbz789960.sh"; + "rhbz790721"; + "rhbz811649.sh"; + "rhbz895904.sh"; + "rhbz914931"; + "rhbz957772.sh"; + "rhbz975797.sh"; + "rhbz1001875.sh"; + "rhbz1044014.sh"; + "rhbz1054761.sh"; + "rhbz1091803.sh"; + "test-noexec-stack.pl"; + ]; + check_slow = [ + "rhbz909624.sh" + ]; + check_data = [ + "rhbz557655-expected.stderr"; + "rhbz557655-expected.stdout"; + ]; + }; + "inspector", { defaults with check = [ diff --git a/tests/regressions/Makefile.am b/tests/regressions/Makefile.am index a5e7cfc..4599373 100644 --- a/tests/regressions/Makefile.am +++ b/tests/regressions/Makefile.am @@ -17,6 +17,8 @@ include $(top_srcdir)/subdir-rules.mk +generator_built = tests.mk + EXTRA_DIST = \ rhbz503169c13.sh \ rhbz557655.sh \ @@ -44,48 +46,11 @@ EXTRA_DIST = \ rhbz1091803.sh \ test-noexec-stack.pl -TESTS = \ - rhbz501893 \ - rhbz503169c13.sh \ - rhbz557655.sh \ - rhbz563450.sh \ - rhbz563450b.sh \ - rhbz576879.sh \ - rhbz578407.sh \ - rhbz580246.sh \ - rhbz602997.sh \ - rhbz690819.sh \ - rhbz789960.sh \ - rhbz790721 \ - rhbz811649.sh \ - rhbz895904.sh \ - rhbz914931 \ - rhbz957772.sh \ - rhbz975797.sh \ - rhbz1001875.sh \ - rhbz1054761.sh \ - rhbz1055452 \ - rhbz1091803.sh \ - test-noexec-stack.pl - -if HAVE_LIBVIRT -TESTS += rhbz1044014.sh -endif - -tests_not_run = \ +# There are a couple of tests that we don't run: +EXTRA_DIST += \ rhbz727178.sh \ rhbz909624.sh -TESTS_ENVIRONMENT = \ - NOEXEC_CHECK="$(top_builddir)/src/.libs/libguestfs.so $(top_builddir)/daemon/guestfsd" \ - $(top_builddir)/run --test - -check_PROGRAMS = \ - rhbz501893 \ - rhbz790721 \ - rhbz914931 \ - rhbz1055452 - rhbz501893_SOURCES = rhbz501893.c rhbz501893_CPPFLAGS = \ -I$(top_srcdir)/src -I$(top_builddir)/src @@ -122,6 +87,3 @@ rhbz1055452_CFLAGS = \ $(WARN_CFLAGS) $(WERROR_CFLAGS) rhbz1055452_LDADD = \ $(top_builddir)/src/libguestfs.la - -check-slow: - $(MAKE) TESTS="rhbz909624.sh" check diff --git a/tests/regressions/rhbz1001875.sh b/tests/regressions/rhbz1001875.sh index 885fd8c..6812333 100755 --- a/tests/regressions/rhbz1001875.sh +++ b/tests/regressions/rhbz1001875.sh @@ -1,6 +1,6 @@ #!/bin/bash - # libguestfs -# Copyright (C) 2013 Red Hat Inc. +# Copyright (C) 2013-2014 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 @@ -23,11 +23,6 @@ set -e export LANG=C -if [ -n "$SKIP_TEST_RHBZ1001875_SH" ]; then - echo "$0: test skipped because environment variable is set." - exit 77 -fi - rm -f rhbz1001875.img rhbz1001875-[123].tar guestfish -N rhbz1001875.img=fs -m /dev/sda1 <<EOF diff --git a/tests/regressions/rhbz1044014.sh b/tests/regressions/rhbz1044014.sh index 8e0df2a..7296eba 100755 --- a/tests/regressions/rhbz1044014.sh +++ b/tests/regressions/rhbz1044014.sh @@ -22,11 +22,6 @@ set -e export LANG=C -if [ -n "$SKIP_TEST_RHBZ1044014_SH" ]; then - echo "$0: test skipped because environment variable is set." - exit 77 -fi - # Check we are running against the libvirt backend. backend="$(guestfish get-backend)" if [[ ! ( "$backend" =~ ^libvirt ) ]]; then @@ -34,12 +29,12 @@ if [[ ! ( "$backend" =~ ^libvirt ) ]]; then exit 77 fi -if [ ! -x ../../src/libvirt-is-version ]; then +if [ ! -x $top_builddir/src/libvirt-is-version ]; then echo "$0: test skipped because libvirt-is-version is not built yet" exit 77 fi -if ! ../../src/libvirt-is-version 1 2 1; then +if ! $top_builddir/src/libvirt-is-version 1 2 1; then echo "$0: test skipped because libvirt is too old (< 1.2.1)" exit 77 fi diff --git a/tests/regressions/rhbz1054761.sh b/tests/regressions/rhbz1054761.sh index 344479d..c37e237 100755 --- a/tests/regressions/rhbz1054761.sh +++ b/tests/regressions/rhbz1054761.sh @@ -23,11 +23,6 @@ set -e export LANG=C -if [ -n "$SKIP_TEST_RHBZ1054761_SH" ]; then - echo "$0: test skipped because environment variable is set." - exit 77 -fi - rm -f rhbz1054761-[ab].img guestfish -N rhbz1054761-a.img=disk -N rhbz1054761-b.img=disk <<EOF diff --git a/tests/regressions/rhbz1091803.sh b/tests/regressions/rhbz1091803.sh index 6851a1c..2e4d373 100755 --- a/tests/regressions/rhbz1091803.sh +++ b/tests/regressions/rhbz1091803.sh @@ -23,11 +23,6 @@ set -e export LANG=C -if [ -n "$SKIP_TEST_RHBZ1091803_SH" ]; then - echo "$0: test skipped because environment variable is set." - exit 77 -fi - guestfish <<EOF scratch 100M run diff --git a/tests/regressions/rhbz563450.sh b/tests/regressions/rhbz563450.sh index d7cf751..adf1df4 100755 --- a/tests/regressions/rhbz563450.sh +++ b/tests/regressions/rhbz563450.sh @@ -22,7 +22,7 @@ set -e export LANG=C -if [ ! -s ../guests/fedora.img -o ! -s ../data/test.iso -o ! -s ../guests/debian.img ]; then +if [ ! -s $phonydir/fedora.img -o ! -s $datadir/test.iso -o ! -s $phonydir/debian.img ]; then echo "$0: test skipped because there is no fedora.img nor test.iso nor debian.img" exit 77 fi @@ -30,9 +30,9 @@ fi rm -f test.out guestfish --ro > test.out <<EOF -add-drive-ro ../guests/fedora.img -add-cdrom ../data/test.iso -add-drive-ro ../guests/debian.img +add-drive-ro $phonydir/fedora.img +add-cdrom $datadir/test.iso +add-drive-ro $phonydir/debian.img run diff --git a/tests/regressions/rhbz563450b.sh b/tests/regressions/rhbz563450b.sh index 26aaf6f..eb91a38 100755 --- a/tests/regressions/rhbz563450b.sh +++ b/tests/regressions/rhbz563450b.sh @@ -1,6 +1,6 @@ #!/bin/bash - # libguestfs -# Copyright (C) 2013 Red Hat Inc. +# Copyright (C) 2013-2014 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 @@ -22,7 +22,7 @@ set -e export LANG=C -if [ ! -s ../data/test.iso ]; then +if [ ! -s $datadir/test.iso ]; then echo "$0: test skipped because there is no test.iso" exit 77 fi @@ -30,7 +30,7 @@ fi rm -f test.out guestfish --ro > test.out <<EOF -add-cdrom ../data/test.iso +add-cdrom $datadir/test.iso run diff --git a/tests/regressions/rhbz690819.sh b/tests/regressions/rhbz690819.sh index 0af0b64..5b785d7 100755 --- a/tests/regressions/rhbz690819.sh +++ b/tests/regressions/rhbz690819.sh @@ -1,6 +1,6 @@ #!/bin/bash - # libguestfs -# Copyright (C) 2011 Red Hat Inc. +# Copyright (C) 2011-2014 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 @@ -23,11 +23,6 @@ set -e export LANG=C -if [ -n "$SKIP_TEST_RHBZ690819_SH" ]; then - echo "$0: test skipped because environment variable is set." - exit 77 -fi - arch="$(uname -m)" if [[ "$arch" =~ ^arm || "$arch" = "aarch64" ]]; then echo "$0: test skipped because ARM does not support 'ide' interface." diff --git a/tests/regressions/rhbz789960.sh b/tests/regressions/rhbz789960.sh index 056b7ed..9888a17 100755 --- a/tests/regressions/rhbz789960.sh +++ b/tests/regressions/rhbz789960.sh @@ -24,7 +24,7 @@ export LANG=C rm -f test.out -guestfish -a ../guests/fedora.img --ro > test.out <<EOF +guestfish -a $phonydir/fedora.img --ro > test.out <<EOF run # Not a device at all, should fail. diff --git a/tests/regressions/rhbz914931.c b/tests/regressions/rhbz914931.c index faa3dd2..6479121 100644 --- a/tests/regressions/rhbz914931.c +++ b/tests/regressions/rhbz914931.c @@ -1,5 +1,5 @@ /* libguestfs - * Copyright (C) 2013 Red Hat Inc. + * Copyright (C) 2013-2014 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 @@ -39,14 +39,6 @@ main (int argc, char *argv[]) int r; char *str; - /* Allow this test to be skipped. */ - str = getenv ("SKIP_TEST_RHBZ914931"); - if (str && STREQ (str, "1")) { - printf ("%s: test skipped because environment variable is set.\n", - program_name); - exit (77); - } - g = guestfs_create (); if (!g) { perror ("guestfs_create"); diff --git a/tests/regressions/test-noexec-stack.pl b/tests/regressions/test-noexec-stack.pl index 68bbb0b..e54b1df 100755 --- a/tests/regressions/test-noexec-stack.pl +++ b/tests/regressions/test-noexec-stack.pl @@ -1,5 +1,5 @@ #!/usr/bin/perl -# Copyright (C) 2009 Red Hat Inc. +# Copyright (C) 2009-2014 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 @@ -18,67 +18,61 @@ use strict; use warnings; -if ($ENV{SKIP_TEST_NOEXEC_STACK_PL}) { - print "$0: skipped test because environment variable is set\n"; - exit 77; -} - -die("NOEXEC_CHECK not set") unless(exists($ENV{NOEXEC_CHECK})); - -my @files = split(/ /, $ENV{NOEXEC_CHECK}); +my @files = ( "$ENV{top_builddir}/src/.libs/libguestfs.so", + "$ENV{top_builddir}/daemon/guestfsd" ); FILES: foreach my $file (@files) { my $output; my @cmd = ('readelf', '-l', $file); - open($output, '-|', @cmd) - or die("$0: failed to run: '".join(' ', @cmd)."': $!\n"); + open ($output, '-|', @cmd) + or die ("$0: failed to run: '".join(' ', @cmd)."': $!\n"); my $offset; my $line = 1; # Find the offset of the Flags field - while(<$output>) { - next unless(/^\s*Type\b/); + while (<$output>) { + next unless /^\s*Type\b/; my @lines; - push(@lines, $_); + push (@lines, $_); # Look for a Flg field on this line (32 bit) - $offset = index($_, 'Flg '); + $offset = index ($_, 'Flg '); - if(-1 == $offset) { + if (-1 == $offset) { # 64 bit is split over 2 lines. Look for a Flags field on the next # line $_ = <$output>; - $offset = index($_, 'Flags '); + $offset = index ($_, 'Flags '); $line = 2; - push(@lines, $_); + push (@lines, $_); } - die("Unrecognised header: ".join("\n", @lines)) if(-1 == $offset); + die "Unrecognised header: ".join("\n", @lines) if -1 == $offset; last; } # Find the GNU_STACK entry - while(<$output>) { - next unless(/^\s*GNU_STACK\b/); + while (<$output>) { + next unless /^\s*GNU_STACK\b/; # Skip over input lines according to the header - for(my $i = 1; $i < $line; $i++) { + for (my $i = 1; $i < $line; $i++) { $_ = <$output>; } - my $flags = substr($_, $offset, 3); + my $flags = substr ($_, $offset, 3); - $flags =~ /^[ R][ W]([ E])$/ or die("Unrecognised flags: $flags"); + $flags =~ /^[ R][ W]([ E])$/ or die "Unrecognised flags: $flags"; - if('E' eq $1) { + if ('E' eq $1) { print "***** $file has an executable stack *****\n"; - exit(1); + exit 1; } next FILES; } - die("Didn't find GNU_STACK entry"); + die "Didn't find GNU_STACK entry"; } diff --git a/tests/regressions/tests.mk b/tests/regressions/tests.mk new file mode 100644 index 0000000..4fa0414 --- /dev/null +++ b/tests/regressions/tests.mk @@ -0,0 +1,89 @@ +# libguestfs generated file +# WARNING: THIS FILE IS GENERATED FROM: +# generator/ *.ml +# ANY CHANGES YOU MAKE TO THIS FILE WILL BE LOST. +# +# Copyright (C) 2009-2014 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, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +localtestsdir = $(alltestsdir)/tests/regressions + +localtests_DATA = \ + rhbz557655-expected.stderr \ + rhbz557655-expected.stdout + +localtests_SCRIPTS = \ + rhbz1001875.sh \ + rhbz1044014.sh \ + rhbz1054761.sh \ + rhbz1091803.sh \ + rhbz503169c13.sh \ + rhbz557655.sh \ + rhbz563450.sh \ + rhbz563450b.sh \ + rhbz576879.sh \ + rhbz578407.sh \ + rhbz580246.sh \ + rhbz602997.sh \ + rhbz690819.sh \ + rhbz789960.sh \ + rhbz811649.sh \ + rhbz895904.sh \ + rhbz909624.sh \ + rhbz957772.sh \ + rhbz975797.sh \ + test-noexec-stack.pl + +localtests_PROGRAMS = \ + rhbz1055452 \ + rhbz501893 \ + rhbz790721 \ + rhbz914931 + +# Note that we cannot create a simple 'check:' target since +# automake will (silently) overrule it, so we do this instead: + +TESTS_ENVIRONMENT = $(top_builddir)/run +TESTS = $(top_builddir)/test-harness + +check-valgrind: + $(top_builddir)/run $(top_builddir)/test-harness --valgrind + +check-direct: + $(top_builddir)/run $(top_builddir)/test-harness --direct + +check-valgrind-direct: + $(top_builddir)/run $(top_builddir)/test-harness --valgrind --direct + +check-uml: + $(top_builddir)/run $(top_builddir)/test-harness --uml + +check-valgrind-uml: + $(top_builddir)/run $(top_builddir)/test-harness --valgrind --uml + +check-with-upstream-qemu: + $(top_builddir)/run $(top_builddir)/test-harness --upstream-qemu + +check-with-upstream-libvirt: + $(top_builddir)/run $(top_builddir)/test-harness --upstream-libvirt + +check-fast: + $(top_builddir)/run $(top_builddir)/test-harness --fast + +check-slow: + $(top_builddir)/run $(top_builddir)/test-harness --slow + +EXTRA_DIST += tests.mk -- 2.0.4