diff options
author | marcel <marcel@FreeBSD.org> | 2005-09-19 02:59:09 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 2005-09-19 02:59:09 +0000 |
commit | 37a0bbb7e543c6b2a2f055d676d5a94f781d7738 (patch) | |
tree | b5a45458715ce67d2f673351863aa2e86c6240eb /tools/regression/geom_gpt/gctl.t | |
parent | c4edd4f5db75011203e2cd66344a1a2b600e8141 (diff) | |
download | FreeBSD-src-37a0bbb7e543c6b2a2f055d676d5a94f781d7738.zip FreeBSD-src-37a0bbb7e543c6b2a2f055d676d5a94f781d7738.tar.gz |
Add the beginnings of a testsuite for testing GPT control requests.
The testsuite is based on a simple driver program that builds a
request from the arguments passed to it and issues the request to
Geom. The driver emits FAIL with the error string or PASS depending
on whether the request completed with an error or not. A -v option
has been added to the driver and causes the request to be dumped.
The -v option to prove(1) controls the -v option to the driver.
The testsuite itself contains a hash of which the key constitutes
the arguments and the value is the expected result.
Diffstat (limited to 'tools/regression/geom_gpt/gctl.t')
-rw-r--r-- | tools/regression/geom_gpt/gctl.t | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/tools/regression/geom_gpt/gctl.t b/tools/regression/geom_gpt/gctl.t new file mode 100644 index 0000000..15335a0 --- /dev/null +++ b/tools/regression/geom_gpt/gctl.t @@ -0,0 +1,86 @@ +#!/usr/bin/env perl -w +# +# Copyright (c) 2005 Marcel Moolenaar +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# $FreeBSD$ + +my $srcdir = `dirname $0`; +chomp $srcdir; + +my $cmd = "/tmp/$$"; +my $out = "$cmd.out"; + +my %tests = ( + "" => "FAIL Verb missing", + "-s verb=invalid" => "FAIL 22 verb 'invalid'", + # create + "-s verb=create" => "FAIL 87 provider", + "-s verb=create -s provider=invalid" => "FAIL 22 provider 'invalid'", +); + +sub run ($$) { + local ($nr, $test) = @_; + local $st; + + if (exists $ENV{'TEST_VERBOSE'}) { + system("$cmd -v $test > $out 2>&1"); + system("cat $out"); + } + else { + system("$cmd $test > $out 2>&1"); + } + $st = `tail -1 $out`; + if ($st =~ "^$tests{$test}") { + print "ok $nr\n"; + } else { + print "not ok $nr # $st\n"; + } + unlink $out; +} + +# Compile the driver... +my $st = system("cc -o $cmd -g $srcdir/test.c -lgeom"); +if ($st != 0) { + print "1..0 # SKIP error compiling test.c\n"; + exit 0; +} + +# Make sure we have permission to use gctl... +if (`$cmd` =~ "^FAIL Permission denied") { + print "1..0 # SKIP not enough permission\n"; + unlink $cmd; + exit 0; +} + +$count = keys (%tests); +print "1..$count\n"; + +my $nr=0; +foreach $test (keys %tests) { + run ++$nr, $test; +} + +unlink $cmd; +exit 0; |