diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/udev-test.pl | 559 |
1 files changed, 295 insertions, 264 deletions
diff --git a/test/udev-test.pl b/test/udev-test.pl index e345b20c58..fc682b528a 100644 --- a/test/udev-test.pl +++ b/test/udev-test.pl @@ -33,30 +33,30 @@ my $conf_tmp = "udev-test.rules"; my @tests = ( { - desc => "label test of scsi disc", - subsys => "block", - devpath => "block/sda", - expected => "boot_disk" , - conf => <<EOF + desc => "label test of scsi disc", + subsys => "block", + devpath => "block/sda", + exp_name=> "boot_disk" , + conf => <<EOF BUS="scsi", SYSFS{vendor}="IBM-ESXS", NAME="boot_disk%n" KERNEL="ttyUSB0", NAME="visor" EOF }, { - desc => "label test of scsi partition", - subsys => "block", - devpath => "block/sda/sda1", - expected => "boot_disk1" , - conf => <<EOF + desc => "label test of scsi partition", + subsys => "block", + devpath => "block/sda/sda1", + exp_name=> "boot_disk1" , + conf => <<EOF BUS="scsi", SYSFS{vendor}="IBM-ESXS", NAME="boot_disk%n" EOF }, { - desc => "label test of pattern match", - subsys => "block", - devpath => "block/sda/sda1", - expected => "boot_disk1" , - conf => <<EOF + desc => "label test of pattern match", + subsys => "block", + devpath => "block/sda/sda1", + exp_name=> "boot_disk1" , + conf => <<EOF BUS="scsi", SYSFS{vendor}="?IBM-ESXS", NAME="boot_disk%n-1" BUS="scsi", SYSFS{vendor}="IBM-ESXS?", NAME="boot_disk%n-2" BUS="scsi", SYSFS{vendor}="IBM-ES??", NAME="boot_disk%n" @@ -64,169 +64,169 @@ BUS="scsi", SYSFS{vendor}="IBM-ESXSS", NAME="boot_disk%n-3" EOF }, { - desc => "label test of multiple sysfs files", - subsys => "block", - devpath => "block/sda/sda1", - expected => "boot_disk1" , - conf => <<EOF + desc => "label test of multiple sysfs files", + subsys => "block", + devpath => "block/sda/sda1", + exp_name => "boot_disk1" , + conf => <<EOF BUS="scsi", SYSFS{vendor}="IBM-ESXS", SYSFS{model}="ST336605LW !#", NAME="boot_diskX%n" BUS="scsi", SYSFS{vendor}="IBM-ESXS", SYSFS{model}="ST336605LW !#", NAME="boot_disk%n" EOF }, { - desc => "label test of max sysfs files", - subsys => "block", - devpath => "block/sda/sda1", - expected => "boot_disk1" , - conf => <<EOF + desc => "label test of max sysfs files", + subsys => "block", + devpath => "block/sda/sda1", + exp_name => "boot_disk1" , + conf => <<EOF BUS="scsi", SYSFS{vendor}="IBM-ESXS", SYSFS{model}="ST336605LW !#", SYSFS{scsi_level}="4", SYSFS{rev}="B245", SYSFS{type}="2", SYSFS{queue_depth}="32", NAME="boot_diskXX%n" BUS="scsi", SYSFS{vendor}="IBM-ESXS", SYSFS{model}="ST336605LW !#", SYSFS{scsi_level}="4", SYSFS{rev}="B245", SYSFS{type}="0", NAME="boot_disk%n" EOF }, { - desc => "catch device by *", - subsys => "tty", - devpath => "class/tty/ttyUSB0", - expected => "visor/0" , - conf => <<EOF + desc => "catch device by *", + subsys => "tty", + devpath => "class/tty/ttyUSB0", + exp_name => "visor/0" , + conf => <<EOF KERNEL="ttyUSB*", NAME="visor/%n" EOF }, { - desc => "catch device by * - take 2", - subsys => "tty", - devpath => "class/tty/ttyUSB0", - expected => "visor/0" , - conf => <<EOF + desc => "catch device by * - take 2", + subsys => "tty", + devpath => "class/tty/ttyUSB0", + exp_name => "visor/0" , + conf => <<EOF KERNEL="*USB1", NAME="bad" KERNEL="*USB0", NAME="visor/%n" EOF }, { - desc => "catch device by ?", - subsys => "tty", - devpath => "class/tty/ttyUSB0", - expected => "visor/0" , - conf => <<EOF + desc => "catch device by ?", + subsys => "tty", + devpath => "class/tty/ttyUSB0", + exp_name => "visor/0" , + conf => <<EOF KERNEL="ttyUSB??*", NAME="visor/%n-1" KERNEL="ttyUSB??", NAME="visor/%n-2" KERNEL="ttyUSB?", NAME="visor/%n" EOF }, { - desc => "catch device by character class", - subsys => "tty", - devpath => "class/tty/ttyUSB0", - expected => "visor/0" , - conf => <<EOF + desc => "catch device by character class", + subsys => "tty", + devpath => "class/tty/ttyUSB0", + exp_name => "visor/0" , + conf => <<EOF KERNEL="ttyUSB[A-Z]*", NAME="visor/%n-1" KERNEL="ttyUSB?[0-9]", NAME="visor/%n-2" KERNEL="ttyUSB[0-9]*", NAME="visor/%n" EOF }, { - desc => "replace kernel name", - subsys => "tty", - devpath => "class/tty/ttyUSB0", - expected => "visor" , - conf => <<EOF + desc => "replace kernel name", + subsys => "tty", + devpath => "class/tty/ttyUSB0", + exp_name => "visor" , + conf => <<EOF KERNEL="ttyUSB0", NAME="visor" EOF }, { - desc => "Handle comment lines in config file (and replace kernel name)", - subsys => "tty", - devpath => "class/tty/ttyUSB0", - expected => "visor" , - conf => <<EOF + desc => "Handle comment lines in config file (and replace kernel name)", + subsys => "tty", + devpath => "class/tty/ttyUSB0", + exp_name => "visor" , + conf => <<EOF # this is a comment KERNEL="ttyUSB0", NAME="visor" EOF }, { - desc => "Handle comment lines in config file with whitespace (and replace kernel name)", - subsys => "tty", - devpath => "class/tty/ttyUSB0", - expected => "visor" , - conf => <<EOF + desc => "Handle comment lines in config file with whitespace (and replace kernel name)", + subsys => "tty", + devpath => "class/tty/ttyUSB0", + exp_name => "visor" , + conf => <<EOF # this is a comment with whitespace before the comment KERNEL="ttyUSB0", NAME="visor" EOF }, { - desc => "Handle empty lines in config file (and replace kernel name)", - subsys => "tty", - devpath => "class/tty/ttyUSB0", - expected => "visor" , - conf => <<EOF + desc => "Handle empty lines in config file (and replace kernel name)", + subsys => "tty", + devpath => "class/tty/ttyUSB0", + exp_name => "visor" , + conf => <<EOF KERNEL="ttyUSB0", NAME="visor" EOF }, { - desc => "subdirectory handling", - subsys => "tty", - devpath => "class/tty/ttyUSB0", - expected => "sub/direct/ory/visor" , - conf => <<EOF + desc => "subdirectory handling", + subsys => "tty", + devpath => "class/tty/ttyUSB0", + exp_name => "sub/direct/ory/visor" , + conf => <<EOF KERNEL="ttyUSB0", NAME="sub/direct/ory/visor" EOF }, { - desc => "place on bus of scsi partition", - subsys => "block", - devpath => "block/sda/sda3", - expected => "first_disk3" , - conf => <<EOF + desc => "place on bus of scsi partition", + subsys => "block", + devpath => "block/sda/sda3", + exp_name => "first_disk3" , + conf => <<EOF BUS="scsi", PLACE="0:0:0:0", NAME="first_disk%n" EOF }, { - desc => "test NAME substitution chars", - subsys => "block", - devpath => "block/sda/sda3", - expected => "Major:8:minor:3:kernelnumber:3:bus:0:0:0:0" , - conf => <<EOF + desc => "test NAME substitution chars", + subsys => "block", + devpath => "block/sda/sda3", + exp_name => "Major:8:minor:3:kernelnumber:3:bus:0:0:0:0" , + conf => <<EOF BUS="scsi", PLACE="0:0:0:0", NAME="Major:%M:minor:%m:kernelnumber:%n:bus:%b" EOF }, { - desc => "test NAME substitution chars (with length limit)", - subsys => "block", - devpath => "block/sda/sda3", - expected => "M8-m3-n3-b0:0-sIBM" , - conf => <<EOF + desc => "test NAME substitution chars (with length limit)", + subsys => "block", + devpath => "block/sda/sda3", + exp_name => "M8-m3-n3-b0:0-sIBM" , + conf => <<EOF BUS="scsi", PLACE="0:0:0:0", NAME="M%M-m%m-n%n-b%3b-s%3s{vendor}" EOF }, { - desc => "old style SYSFS_ attribute", - subsys => "block", - devpath => "block/sda", - expected => "good" , - conf => <<EOF + desc => "old style SYSFS_ attribute", + subsys => "block", + devpath => "block/sda", + exp_name => "good" , + conf => <<EOF BUS="scsi", SYSFS_vendor="IBM-ESXS", NAME="good" EOF }, { - desc => "sustitution of sysfs value (%s{file})", - subsys => "block", - devpath => "block/sda", - expected => "disk-IBM-ESXS-sda" , - conf => <<EOF + desc => "sustitution of sysfs value (%s{file})", + subsys => "block", + devpath => "block/sda", + exp_name => "disk-IBM-ESXS-sda" , + conf => <<EOF BUS="scsi", SYSFS{vendor}="IBM-ESXS", NAME="disk-%s{vendor}-%k" KERNEL="ttyUSB0", NAME="visor" EOF }, { - desc => "program result substitution", - subsys => "block", - devpath => "block/sda/sda3", - expected => "special-device-3" , - conf => <<EOF + desc => "program result substitution", + subsys => "block", + devpath => "block/sda/sda3", + exp_name => "special-device-3" , + conf => <<EOF BUS="scsi", PROGRAM="/bin/echo -n special-device", RESULT="-special-*", NAME="%c-1-%n" BUS="scsi", PROGRAM="/bin/echo -n special-device", RESULT="special--*", NAME="%c-2-%n" BUS="scsi", PROGRAM="/bin/echo -n special-device", RESULT="special-device-", NAME="%c-3-%n" @@ -235,225 +235,225 @@ BUS="scsi", PROGRAM="/bin/echo -n special-device", RESULT="special-*", NAME="%c- EOF }, { - desc => "program result substitution", - subsys => "block", - devpath => "block/sda/sda3", - expected => "test-0:0:0:0" , - conf => <<EOF + desc => "program result substitution", + subsys => "block", + devpath => "block/sda/sda3", + exp_name => "test-0:0:0:0" , + conf => <<EOF BUS="scsi", PROGRAM="/bin/echo -n test-%b", RESULT="test-0:0*", NAME="%c" EOF }, { - desc => "program with escaped format char (tricky: callout returns format char!)", - subsys => "block", - devpath => "block/sda/sda3", - expected => "escape-3" , - conf => <<EOF + desc => "program with escaped format char (tricky: callout returns format char!)", + subsys => "block", + devpath => "block/sda/sda3", + exp_name => "escape-3" , + conf => <<EOF BUS="scsi", PROGRAM="/bin/echo -n escape-%%n", KERNEL="sda3", NAME="%c" EOF }, { - desc => "program with lots of arguments", - subsys => "block", - devpath => "block/sda/sda3", - expected => "foo9" , - conf => <<EOF + desc => "program with lots of arguments", + subsys => "block", + devpath => "block/sda/sda3", + exp_name => "foo9" , + conf => <<EOF BUS="scsi", PROGRAM="/bin/echo -n foo3 foo4 foo5 foo6 foo7 foo8 foo9", KERNEL="sda3", NAME="%c{7}" EOF }, { - desc => "program with subshell", - subsys => "block", - devpath => "block/sda/sda3", - expected => "bar9" , - conf => <<EOF + desc => "program with subshell", + subsys => "block", + devpath => "block/sda/sda3", + exp_name => "bar9" , + conf => <<EOF BUS="scsi", PROGRAM="/bin/sh -c 'echo foo3 foo4 foo5 foo6 foo7 foo8 foo9 | sed s/foo9/bar9/'", KERNEL="sda3", NAME="%c{7}" EOF }, { - desc => "program arguments combined with apostrophes", - subsys => "block", - devpath => "block/sda/sda3", - expected => "foo7" , - conf => <<EOF + desc => "program arguments combined with apostrophes", + subsys => "block", + devpath => "block/sda/sda3", + exp_name => "foo7" , + conf => <<EOF BUS="scsi", PROGRAM="/bin/echo -n 'foo3 foo4' 'foo5 foo6 foo7 foo8'", KERNEL="sda3", NAME="%c{5}" EOF }, { - desc => "characters before the %c{N} substitution", - subsys => "block", - devpath => "block/sda/sda3", - expected => "my-foo9" , - conf => <<EOF + desc => "characters before the %c{N} substitution", + subsys => "block", + devpath => "block/sda/sda3", + exp_name => "my-foo9" , + conf => <<EOF BUS="scsi", PROGRAM="/bin/echo -n foo3 foo4 foo5 foo6 foo7 foo8 foo9", KERNEL="sda3", NAME="my-%c{7}" EOF }, { - desc => "substitute the second to last argument", - subsys => "block", - devpath => "block/sda/sda3", - expected => "my-foo8" , - conf => <<EOF + desc => "substitute the second to last argument", + subsys => "block", + devpath => "block/sda/sda3", + exp_name => "my-foo8" , + conf => <<EOF BUS="scsi", PROGRAM="/bin/echo -n foo3 foo4 foo5 foo6 foo7 foo8 foo9", KERNEL="sda3", NAME="my-%c{6}" EOF }, { - desc => "program result substitution (numbered part of)", - subsys => "block", - devpath => "block/sda/sda3", - expected => "link1" , - conf => <<EOF + desc => "program result substitution (numbered part of)", + subsys => "block", + devpath => "block/sda/sda3", + exp_name => "link1" , + conf => <<EOF BUS="scsi", PROGRAM="/bin/echo -n node link1 link2", RESULT="node *", NAME="%c{1}", SYMLINK="%c{2} %c{3}" EOF }, { - desc => "program result substitution (numbered part of+)", - subsys => "block", - devpath => "block/sda/sda3", - expected => "link3" , - conf => <<EOF + desc => "program result substitution (numbered part of+)", + subsys => "block", + devpath => "block/sda/sda3", + exp_name => "link3" , + conf => <<EOF BUS="scsi", PROGRAM="/bin/echo -n node link1 link2 link3 link4", RESULT="node *", NAME="%c{1}", SYMLINK="%c{2+}" EOF }, { - desc => "invalid program for device with no bus", - subsys => "tty", - devpath => "class/tty/console", - expected => "TTY" , - conf => <<EOF + desc => "invalid program for device with no bus", + subsys => "tty", + devpath => "class/tty/console", + exp_name => "TTY" , + conf => <<EOF BUS="scsi", PROGRAM="/bin/echo -n foo", RESULT="foo", NAME="foo" KERNEL="console", NAME="TTY" EOF }, { - desc => "valid program for device with no bus", - subsys => "tty", - devpath => "class/tty/console", - expected => "foo" , - conf => <<EOF + desc => "valid program for device with no bus", + subsys => "tty", + devpath => "class/tty/console", + exp_name => "foo" , + conf => <<EOF PROGRAM="/bin/echo -n foo", RESULT="foo", NAME="foo" KERNEL="console", NAME="TTY" EOF }, { - desc => "invalid label for device with no bus", - subsys => "tty", - devpath => "class/tty/console", - expected => "TTY" , - conf => <<EOF + desc => "invalid label for device with no bus", + subsys => "tty", + devpath => "class/tty/console", + exp_name => "TTY" , + conf => <<EOF BUS="foo", SYSFS{dev}="5:1", NAME="foo" KERNEL="console", NAME="TTY" EOF }, { - desc => "valid label for device with no bus", - subsys => "tty", - devpath => "class/tty/console", - expected => "foo" , - conf => <<EOF + desc => "valid label for device with no bus", + subsys => "tty", + devpath => "class/tty/console", + exp_name => "foo" , + conf => <<EOF SYSFS{dev}="5:1", NAME="foo" KERNEL="console", NAME="TTY" EOF }, { - desc => "program and bus type match", - subsys => "block", - devpath => "block/sda", - expected => "scsi-0:0:0:0" , - conf => <<EOF + desc => "program and bus type match", + subsys => "block", + devpath => "block/sda", + exp_name => "scsi-0:0:0:0" , + conf => <<EOF BUS="usb", PROGRAM="/bin/echo -n usb-%b", NAME="%c" BUS="scsi", PROGRAM="/bin/echo -n scsi-%b", NAME="%c" BUS="foo", PROGRAM="/bin/echo -n foo-%b", NAME="%c" EOF }, { - desc => "symlink creation (same directory)", - subsys => "tty", - devpath => "class/tty/ttyUSB0", - expected => "visor0" , - conf => <<EOF + desc => "symlink creation (same directory)", + subsys => "tty", + devpath => "class/tty/ttyUSB0", + exp_name => "visor0" , + conf => <<EOF KERNEL="ttyUSB[0-9]*", NAME="ttyUSB%n", SYMLINK="visor%n" EOF }, { - desc => "symlink creation (relative link back)", - subsys => "block", - devpath => "block/sda/sda2", - expected => "1/2/a/b/symlink" , - conf => <<EOF + desc => "symlink creation (relative link back)", + subsys => "block", + devpath => "block/sda/sda2", + exp_name => "1/2/a/b/symlink" , + conf => <<EOF BUS="scsi", SYSFS{vendor}="IBM-ESXS", NAME="1/2/node", SYMLINK="1/2/a/b/symlink" EOF }, { - desc => "symlink creation (relative link forward)", - subsys => "block", - devpath => "block/sda/sda2", - expected => "1/2/symlink" , - conf => <<EOF + desc => "symlink creation (relative link forward)", + subsys => "block", + devpath => "block/sda/sda2", + exp_name => "1/2/symlink" , + conf => <<EOF BUS="scsi", SYSFS{vendor}="IBM-ESXS", NAME="1/2/a/b/node", SYMLINK="1/2/symlink" EOF }, { - desc => "symlink creation (relative link back and forward)", - subsys => "block", - devpath => "block/sda/sda2", - expected => "1/2/c/d/symlink" , - conf => <<EOF + desc => "symlink creation (relative link back and forward)", + subsys => "block", + devpath => "block/sda/sda2", + exp_name => "1/2/c/d/symlink" , + conf => <<EOF BUS="scsi", SYSFS{vendor}="IBM-ESXS", NAME="1/2/a/b/node", SYMLINK="1/2/c/d/symlink" EOF }, { - desc => "multiple symlinks", - subsys => "tty", - devpath => "class/tty/ttyUSB0", - expected => "second-0" , - conf => <<EOF + desc => "multiple symlinks", + subsys => "tty", + devpath => "class/tty/ttyUSB0", + exp_name => "second-0" , + conf => <<EOF KERNEL="ttyUSB0", NAME="visor", SYMLINK="first-%n second-%n third-%n" EOF }, { - desc => "create all possible partitions", - subsys => "block", - devpath => "block/sda", - expected => "boot_disk15" , - conf => <<EOF + desc => "create all possible partitions", + subsys => "block", + devpath => "block/sda", + exp_name => "boot_disk15" , + conf => <<EOF BUS="scsi", SYSFS{vendor}="IBM-ESXS", NAME{all_partitions}="boot_disk" EOF }, { - desc => "sysfs parent hierarchy", - subsys => "tty", - devpath => "class/tty/ttyUSB0", - expected => "visor" , - conf => <<EOF + desc => "sysfs parent hierarchy", + subsys => "tty", + devpath => "class/tty/ttyUSB0", + exp_name => "visor" , + conf => <<EOF SYSFS{idProduct}="2008", NAME="visor" EOF }, { - desc => "name test with ! in the name", - subsys => "block", - devpath => "block/rd!c0d0", - expected => "rd/c0d0" , - conf => <<EOF + desc => "name test with ! in the name", + subsys => "block", + devpath => "block/rd!c0d0", + exp_name => "rd/c0d0" , + conf => <<EOF BUS="scsi", NAME="%k" KERNEL="ttyUSB0", NAME="visor" EOF }, { - desc => "name test with ! in the name, but no matching rule", - subsys => "block", - devpath => "block/rd!c0d0", - expected => "rd/c0d0" , - conf => <<EOF + desc => "name test with ! in the name, but no matching rule", + subsys => "block", + devpath => "block/rd!c0d0", + exp_name => "rd/c0d0" , + conf => <<EOF KERNEL="ttyUSB0", NAME="visor" EOF }, { - desc => "ID rule", - subsys => "block", - devpath => "block/sda", - expected => "scsi-0:0:0:0", - conf => <<EOF + desc => "ID rule", + subsys => "block", + devpath => "block/sda", + exp_name => "scsi-0:0:0:0", + conf => <<EOF BUS="usb", ID="0:0:0:0", NAME="not-scsi" BUS="scsi", ID="0:0:0:1", NAME="no-match" BUS="scsi", ID=":0", NAME="short-id" @@ -462,11 +462,11 @@ BUS="scsi", ID="0:0:0:0", NAME="scsi-0:0:0:0" EOF }, { - desc => "ID wildcard all", - subsys => "block", - devpath => "block/sda", - expected => "scsi-0:0:0:0", - conf => <<EOF + desc => "ID wildcard all", + subsys => "block", + devpath => "block/sda", + exp_name => "scsi-0:0:0:0", + conf => <<EOF BUS="scsi", ID="*:1", NAME="no-match" BUS="scsi", ID="*:0:1", NAME="no-match" BUS="scsi", ID="*:0:0:1", NAME="no-match" @@ -475,62 +475,73 @@ BUS="scsi", ID="0:0:0:0", NAME="bad" EOF }, { - desc => "ID wildcard partial", - subsys => "block", - devpath => "block/sda", - expected => "scsi-0:0:0:0", - conf => <<EOF + desc => "ID wildcard partial", + subsys => "block", + devpath => "block/sda", + exp_name => "scsi-0:0:0:0", + conf => <<EOF BUS="scsi", ID="*:0", NAME="scsi-0:0:0:0" BUS="scsi", ID="0:0:0:0", NAME="bad" EOF }, { - desc => "ID wildcard partial 2", - subsys => "block", - devpath => "block/sda", - expected => "scsi-0:0:0:0", - conf => <<EOF + desc => "ID wildcard partial 2", + subsys => "block", + devpath => "block/sda", + exp_name => "scsi-0:0:0:0", + conf => <<EOF BUS="scsi", ID="*:0:0:0", NAME="scsi-0:0:0:0" BUS="scsi", ID="0:0:0:0", NAME="bad" EOF }, { - desc => "ignore SYSFS attribute whitespace", - subsys => "block", - devpath => "block/sda", - expected => "ignored", - conf => <<EOF + desc => "ignore SYSFS attribute whitespace", + subsys => "block", + devpath => "block/sda", + exp_name => "ignored", + conf => <<EOF BUS="scsi", SYSFS{whitespace_test}="WHITE SPACE", NAME="ignored" EOF }, { - desc => "do not ignore SYSFS attribute whitespace", - subsys => "block", - devpath => "block/sda", - expected => "matched-with-space", - conf => <<EOF + desc => "do not ignore SYSFS attribute whitespace", + subsys => "block", + devpath => "block/sda", + exp_name => "matched-with-space", + conf => <<EOF BUS="scsi", SYSFS{whitespace_test}="WHITE SPACE ", NAME="wrong-to-ignore" BUS="scsi", SYSFS{whitespace_test}="WHITE SPACE ", NAME="matched-with-space" EOF }, { - desc => "SYMLINK only rule", - subsys => "block", - devpath => "block/sda", - expected => "symlink-only2", - conf => <<EOF + desc => "SYMLINK only rule", + subsys => "block", + devpath => "block/sda", + exp_name => "symlink-only2", + conf => <<EOF BUS="scsi", KERNEL="sda", SYMLINK="symlink-only1" BUS="scsi", KERNEL="sda", SYMLINK="symlink-only2" BUS="scsi", KERNEL="sda", NAME="link", SYMLINK="symlink0" EOF }, { - desc => "permissions test", - subsys => "block", - devpath => "block/sda", - expected => "node", - perms => "5000::0444", - conf => <<EOF + desc => "permissions test", + subsys => "block", + devpath => "block/sda", + exp_name => "node", + perms => "5000::0444", + conf => <<EOF +BUS="scsi", KERNEL="sda", NAME="node", OWNER="5000", MODE="0444" +EOF + }, + { + desc => "major/minor number test", + subsys => "block", + devpath => "block/sda", + exp_name => "node", + perms => "5000::0444", + exp_majorminor => "8:0", + conf => <<EOF BUS="scsi", KERNEL="sda", NAME="node", OWNER="5000", MODE="0444" EOF }, @@ -560,17 +571,18 @@ my $error = 0; sub run_test { my ($config, $number) = @_; - + print "TEST $number: $config->{desc}\n"; - print "device \'$config->{devpath}\' expecting node \'$config->{expected}\'\n"; + print "device \'$config->{devpath}\' expecting node \'$config->{exp_name}\'\n"; udev("add", $config->{subsys}, $config->{devpath}, \$config->{conf}); - if (-e "$PWD/$udev_root$config->{expected}") { + if (-e "$PWD/$udev_root$config->{exp_name}") { + + my ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, + $atime, $mtime, $ctime, $blksize, $blocks) = stat("$PWD/$udev_root$config->{exp_name}"); + if (defined($config->{perms})) { my $wrong = 0; - my ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, - $atime, $mtime, $ctime, $blksize, $blocks) = stat("$PWD/$udev_root$config->{expected}"); - $config->{perms} =~ m/^(.*):(.*):(.*)$/; if ($1 ne "") { if ($uid != $1) { $wrong = 1; }; @@ -586,6 +598,25 @@ sub run_test { printf "created permissions are : %i:%i:%#o\n", $uid, $gid, $mode & 07777; } } + + if (defined($config->{exp_majorminor})) { + my $major = ($rdev >> 8) & 0xfff; + my $minor = ($rdev & 0xff) | (($rdev >> 12) & 0xfff00); + + my $wrong = 0; + $config->{exp_majorminor} =~ m/^(.*):(.*)$/; + if ($1 ne "") { + if ($major != $1) { $wrong = 1; }; + } + if ($2 ne "") { + if ($minor != $2) { $wrong = 1; }; + } + if ($wrong == 1) { + printf "expected major:minor is: %i:%i\n", $1, $2; + printf "created major:minor is : %i:%i\n", $major, $minor; + } + } + print "add: ok "; } else { print "add: error\n"; @@ -595,8 +626,8 @@ sub run_test { } udev("remove", $config->{subsys}, $config->{devpath}, \$config->{conf}); - if ((-e "$PWD/$udev_root$config->{expected}") || - (-l "$PWD/$udev_root$config->{expected}")) { + if ((-e "$PWD/$udev_root$config->{exp_name}") || + (-l "$PWD/$udev_root$config->{exp_name}")) { print "remove: error\n\n"; system("tree $udev_root"); $error++; |