X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=test%2Fudev-test.pl;h=dadec568ba907034e396f70963998db6a4f35f00;hb=35b38379bac87ebf4d0cc6884feff588ee859d5f;hp=ab27c74c6a5d5d103d4c6c76efe6c909972d11e2;hpb=ac28b86d631f23b5df74dbeb33e76a2b3f5d88bb;p=elogind.git diff --git a/test/udev-test.pl b/test/udev-test.pl index ab27c74c6..dadec568b 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 => < "test-0:0:0:0" , conf => < "program with escaped format char (tricky: callout returns format char!)", + subsys => "block", + devpath => "block/sda/sda3", + expected => "escape-3" , + conf => < "program with lots of arguments", + subsys => "block", + devpath => "block/sda/sda3", + expected => "foo9" , + conf => < "program with subshell", + subsys => "block", + devpath => "block/sda/sda3", + expected => "bar9" , + conf => < "program arguments combined with apostrophes", + subsys => "block", + devpath => "block/sda/sda3", + expected => "foo7" , + conf => < "characters before the %c{N} substitution", + subsys => "block", + devpath => "block/sda/sda3", + expected => "my-foo9" , + conf => < "substitute the second to last argument", + subsys => "block", + devpath => "block/sda/sda3", + expected => "my-foo8" , + conf => < "block/sda/sda3", expected => "link1" , conf => < "class/tty/console", expected => "TTY" , conf => < "class/tty/console", expected => "foo" , conf => < "devfs disk naming substitution", - subsys => "block", - devpath => "block/sda", - expected => "lun0/disc" , - conf => < "devfs disk naming substitution", - subsys => "block", - devpath => "block/sda/sda2", - expected => "lun0/part2" , - 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 => < "second-0" , conf => < "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", + subsys => "block", + devpath => "block/rd!c0d0", + expected => "rd/c0d0" , + 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 => < "ignore SYSFS attribute whitespace", + subsys => "block", + devpath => "block/sda", + expected => "ignored", + conf => < "do not ignore SYSFS attribute whitespace", + subsys => "block", + devpath => "block/sda", + expected => "matched-with-space", + 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}); @@ -392,6 +555,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