mirror of
https://github.com/lm-sensors/lm-sensors.git
synced 2026-10-13 10:24:42 +00:00
I have just noticed that the FSF address is the old one in all files except COPYING. Please find a patch below to fix that. git-svn-id: http://lm-sensors.org/svn/lm-sensors/branches/lm-sensors-3.0.0@5163 7894878c-1315-0410-8ee3-d5d059ff63e0
102 lines
3.3 KiB
Perl
Executable File
102 lines
3.3 KiB
Perl
Executable File
#!/usr/bin/perl -w
|
|
|
|
# test-scanner.pl - test script for the libsensors config-file scanner
|
|
# Copyright (C) 2006 Mark M. Hoffman <mhoffman@lightlink.com>
|
|
#
|
|
# 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; version 2 of the License.
|
|
#
|
|
# 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.
|
|
#
|
|
|
|
require 5.004;
|
|
|
|
use strict;
|
|
use Test::More;
|
|
use Test::Cmd;
|
|
|
|
my ($scenario, $test);
|
|
my @scenarios = (
|
|
{ base => 'empty', status => 0,
|
|
desc => 'empty file' },
|
|
{ base => 'comment', status => 0,
|
|
desc => 'one comment line' },
|
|
{ base => 'comment-without-eol', status => 0,
|
|
desc => 'one comment line, without a trailing newline' },
|
|
{ base => 'keywords', status => 0,
|
|
desc => 'keywords with various whitespace variations' },
|
|
{ base => 'non-keywords', status => 0,
|
|
desc => 'various invalid keyword scenarios' },
|
|
{ base => 'names', status => 0,
|
|
desc => 'normal, unquoted names' },
|
|
{ base => 'names-errors', status => 0,
|
|
desc => 'invalid, unquoted names' },
|
|
{ base => 'names-quoted', status => 0,
|
|
desc => 'normal, quoted names' },
|
|
{ base => 'names-quoted-errors', status => 0,
|
|
desc => 'invalid, quoted names' },
|
|
);
|
|
|
|
plan tests => ($#scenarios + 1) * 3;
|
|
|
|
chomp(my $valgrind = `which valgrind 2>/dev/null`);
|
|
|
|
if ($valgrind) {
|
|
$test = Test::Cmd->new(prog => "$valgrind --tool=memcheck --show-reachable=yes --leak-check=full --quiet ./test-scanner", workdir => '');
|
|
} else {
|
|
diag("Couldn't find valgrind(1), running tests without it...");
|
|
$test = Test::Cmd->new(prog => "test-scanner", workdir => '');
|
|
}
|
|
|
|
foreach $scenario (@scenarios) {
|
|
my ($filename, @stdin, @stdout, @expout, @stderr, @experr, @diff);
|
|
|
|
$filename = $scenario->{"base"} . ".conf";
|
|
open INPUT, "< $filename" or die "Cannot open $filename: $!";
|
|
@stdin = <INPUT>;
|
|
close INPUT or die "Cannot close $filename: $!";
|
|
|
|
$filename = $scenario->{"base"} . ".conf.stdout";
|
|
open OUTPUT, "< $filename" or die "Cannot open $filename: $!";
|
|
@expout = <OUTPUT>;
|
|
close OUTPUT or die "Cannot close $filename: $!";
|
|
|
|
# if stderr file is not present, assume none is expected
|
|
$filename = $scenario->{"base"} . ".conf.stderr";
|
|
if (open ERROR, "< $filename") {
|
|
@experr = <ERROR>;
|
|
close ERROR or die "Cannot close $filename: $!";
|
|
} else {
|
|
@experr = ();
|
|
}
|
|
|
|
$test->string($scenario->{"desc"});
|
|
$test->run(stdin => \@stdin);
|
|
|
|
# test return status
|
|
ok($scenario->{"status"} == $?, "status: " . $scenario->{"desc"});
|
|
|
|
# force the captured outputs into an array - for some reason, the
|
|
# 'standard invocation' of diff_exact() chokes without this
|
|
@stdout = $test->stdout;
|
|
@stderr = $test->stderr;
|
|
|
|
# test stdout
|
|
ok($test->diff_exact(\@stdout, \@expout, \@diff),
|
|
"stdout: " . $scenario->{"desc"}) or print @diff;
|
|
|
|
# test stderr
|
|
ok($test->diff_exact(\@stderr, \@experr, \@diff),
|
|
"stderr: " . $scenario->{"desc"}) or print @diff;
|
|
}
|
|
|