chiark / gitweb /
udev-test.pl: set udev_log="err"
[elogind.git] / test / udev-test.pl
index 72b4aef6bc67b49065535f5b3a9da28e3e63682d..a83b156d784b62e21c58dfdabc341f8d1210042a 100755 (executable)
 use warnings;
 use strict;
 
-my $PWD                = $ENV{PWD};
-my $sysfs      = "sys/";
-my $udev_bin   = "../test-udev";
-my $udev_root  = "udev-root/"; # !!! directory will be removed !!!
-my $udev_conf  = "udev-test.conf";
-my $udev_rules = "udev-test.rules";
-
-# uncomment following line to run udev with valgrind.
-# Should make this a runtime option to the script someday...
-#my $udev_bin  = "valgrind --tool=memcheck --leak-check=yes   ../udev";
+my $PWD                        = $ENV{PWD};
+my $sysfs              = "sys/";
+my $udev_bin           = "../udev/test-udev";
+my $valgrind           = 0;
+my $udev_bin_valgrind  = "valgrind --tool=memcheck --leak-check=yes --quiet $udev_bin";
+my $udev_root          = "udev-root/";
+my $udev_conf          = "udev-test.conf";
+my $udev_rules         = "udev-test.rules";
 
 my @tests = (
        {
@@ -290,7 +288,7 @@ EOF
                desc            => "import of shell-value file",
                subsys          => "block",
                devpath         => "/block/sda",
-               exp_name        => "subdir/info/node" ,
+               exp_name        => "subdir/err/node" ,
                rules           => <<EOF
 SUBSYSTEMS=="scsi", IMPORT{file}="udev-test.conf", NAME="subdir/%E{udev_log}/node"
 KERNEL=="ttyUSB0", NAME="visor"
@@ -1656,7 +1654,11 @@ sub udev {
        close CONF;
 
        $ENV{ACTION} = $action;
-       system("$udev_bin $subsys");
+       if ($valgrind > 0) {
+               system("$udev_bin_valgrind $subsys");
+       } else {
+               system("$udev_bin $subsys");
+       }
 }
 
 my $error = 0;
@@ -1847,26 +1849,35 @@ if (!($<==0)) {
 }
 
 # prepare
-make_udev_root ();
+make_udev_root();
 
 # create config file
 open CONF, ">$udev_conf" || die "unable to create config file: $udev_conf";
 print CONF "udev_root=\"$udev_root\"\n";
-print CONF "udev_rules=\"$udev_rules\"\n";
-print CONF "udev_log=\"info\"\n";
+print CONF "udev_rules=\"$PWD\"\n";
+print CONF "udev_log=\"err\"\n";
 close CONF;
 
 my $test_num = 1;
+my @list;
 
-if ($ARGV[0]) {
-       # only run one test
-       $test_num = $ARGV[0];
-
-       if (defined($tests[$test_num-1]->{desc})) {
-               print "udev-test will run test number $test_num only:\n\n";
-               run_test($tests[$test_num-1], $test_num);
+foreach my $arg (@ARGV) {
+       if ($arg =~ m/--valgrind/) {
+               $valgrind = 1;
+               printf("using valgrind\n");
        } else {
-               print "test does not exist.\n";
+               push(@list, $arg);
+       }
+}
+
+if ($list[0]) {
+       foreach my $arg (@list) {
+               if (defined($tests[$arg-1]->{desc})) {
+                       print "udev-test will run test number $arg:\n\n";
+                       run_test($tests[$arg-1], $arg);
+               } else {
+                       print "test does not exist.\n";
+               }
        }
 } else {
        # test all