X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=test%2Fudev-test.pl;h=6b7f515442531b102b29f80164637a9edcd8fef9;hp=1bce65885eac9709113bb7f0807be090fa33ab86;hb=63ead27c228f9306f175b14a49df2415d09ece10;hpb=f0142622b8b68d58694d0c97396bb24d0830c5df diff --git a/test/udev-test.pl b/test/udev-test.pl index 1bce65885..6b7f51544 100644 --- a/test/udev-test.pl +++ b/test/udev-test.pl @@ -38,7 +38,7 @@ my @tests = ( devpath => "block/sda", expected => "boot_disk" , conf => < "block/sda/sda1", expected => "boot_disk1" , conf => < "block/sda/sda1", expected => "boot_disk1" , conf => < "block/sda/sda1", expected => "boot_disk1" , conf => < "block/sda/sda1", expected => "boot_disk1" , conf => < "visor/0" , conf => < "catch device by * - take 2", + subsys => "tty", + devpath => "class/tty/ttyUSB0", + expected => "visor/0" , + conf => < "Major:8:minor:3:kernelnumber:3:bus:0:0:0:0" , conf => < "test NAME substitution chars (with length limit)", + subsys => "block", + devpath => "block/sda/sda3", + expected => "M8-m3-n3-b0:0-sIBM" , + conf => < "old style SYSFS_ attribute", + subsys => "block", + devpath => "block/sda", + expected => "good" , + conf => < "sustitution of sysfs value (%s{file})", + subsys => "block", + devpath => "block/sda", + expected => "disk-IBM-ESXS-sda" , + conf => < "escape-3" , conf => < "program with lots of arguments", + subsys => "block", + devpath => "block/sda/sda3", + expected => "foo9" , + conf => < "block/sda/sda3", expected => "link1" , conf => < "class/tty/console", expected => "TTY" , conf => < "class/tty/console", expected => "foo" , conf => < "block/sda/sda2", expected => "1/2/a/b/symlink" , conf => < "block/sda/sda2", expected => "1/2/symlink" , conf => < "block/sda/sda2", expected => "1/2/c/d/symlink" , conf => < "sysfs parent heirachy", + desc => "create all possible partitions", + subsys => "block", + devpath => "block/sda", + expected => "boot_disk15" , + conf => < "sysfs parent hierarchy", subsys => "tty", devpath => "class/tty/ttyUSB0", expected => "visor" , conf => < < "name test with ! in the name, but no matching rule", + subsys => "block", + devpath => "block/rd!c0d0", + expected => "rd/c0d0" , + conf => < "ID rule", + subsys => "block", + devpath => "block/sda", + expected => "scsi-0:0:0:0", + conf => < "ID wildcard all", + subsys => "block", + devpath => "block/sda", + expected => "scsi-0:0:0:0", + conf => < "ID wildcard partial", + subsys => "block", + devpath => "block/sda", + expected => "scsi-0:0:0:0", + conf => < "ID wildcard partial 2", + subsys => "block", + devpath => "block/sda", + expected => "scsi-0:0:0:0", + conf => <$main_conf" || die "unable to create config file: $main_conf"; -print CONF "udev_root=\"$udev_root\"\n"; -print CONF "udev_db=\"$udev_db\"\n"; -print CONF "udev_rules=\"$conf_tmp\"\n"; -print CONF "udev_permissions=\"$perm\"\n"; -close CONF; - -foreach my $config (@tests) { - print "TEST: $config->{desc}\n"; +sub run_test { + my ($config, $number) = @_; + + print "TEST $number: $config->{desc}\n"; print "device \'$config->{devpath}\' expecting node \'$config->{expected}\'\n"; udev("add", $config->{subsys}, $config->{devpath}, \$config->{conf}); @@ -402,6 +500,37 @@ foreach my $config (@tests) { } } +# prepare +system("rm -rf $udev_root"); +mkdir($udev_root) || die "unable to create udev_root: $udev_root\n"; + +# create initial config file +open CONF, ">$main_conf" || die "unable to create config file: $main_conf"; +print CONF "udev_root=\"$udev_root\"\n"; +print CONF "udev_db=\"$udev_db\"\n"; +print CONF "udev_rules=\"$conf_tmp\"\n"; +print CONF "udev_permissions=\"$perm\"\n"; +close CONF; + +my $test_num = 1; + +if ($ARGV[0]) { + # only run one test + $test_num = $ARGV[0]; + print "udev-test will run test number $test_num only\n"; + + run_test($tests[$test_num-1], $test_num); +} else { + # test all + print "\nudev-test will run ".($#tests + 1)." tests:\n\n"; + + foreach my $config (@tests) { + run_test($config, $test_num); + $test_num++; + + } +} + print "$error errors occured\n\n"; # cleanup