EOF
},
{
- desc => "label test of max sysfs files",
+ desc => "label test of max sysfs files (skip invalid rule)",
subsys => "block",
devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
exp_name => "boot_disk1" ,
{
desc => "catch device by *",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "modem/0" ,
rules => <<EOF
KERNEL=="ttyACM*", NAME="modem/%n"
{
desc => "catch device by * - take 2",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "modem/0" ,
rules => <<EOF
KERNEL=="*ACM1", NAME="bad"
{
desc => "catch device by ?",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "modem/0" ,
rules => <<EOF
KERNEL=="ttyACM??*", NAME="modem/%n-1"
{
desc => "catch device by character class",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "modem/0" ,
rules => <<EOF
KERNEL=="ttyACM[A-Z]*", NAME="modem/%n-1"
{
desc => "replace kernel name",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "modem" ,
rules => <<EOF
KERNEL=="ttyACM0", NAME="modem"
{
desc => "Handle comment lines in config file (and replace kernel name)",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "modem" ,
rules => <<EOF
# this is a comment
{
desc => "Handle comment lines in config file with whitespace (and replace kernel name)",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "modem" ,
rules => <<EOF
# this is a comment with whitespace before the comment
{
desc => "Handle whitespace only lines (and replace kernel name)",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "whitespace" ,
rules => <<EOF
{
desc => "Handle empty lines in config file (and replace kernel name)",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "modem" ,
rules => <<EOF
{
desc => "Handle backslashed multi lines in config file (and replace kernel name)",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "modem" ,
rules => <<EOF
KERNEL=="ttyACM0", \\
{
desc => "preserve backslashes, if they are not for a newline",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "aaa",
rules => <<EOF
KERNEL=="ttyACM0", PROGRAM=="/bin/echo -e \\101", RESULT=="A", NAME="aaa"
{
desc => "Handle stupid backslashed multi lines in config file (and replace kernel name)",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "modem" ,
rules => <<EOF
#
\\
-\\\\
+\\
#\\
{
desc => "subdirectory handling",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "sub/direct/ory/modem" ,
rules => <<EOF
KERNEL=="ttyACM0", NAME="sub/direct/ory/modem"
{
desc => "sysfs parent hierarchy",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "modem" ,
rules => <<EOF
ATTRS{idProduct}=="007b", NAME="modem"
{
desc => "permissions USER=bad GROUP=name",
subsys => "tty",
- devpath => "/class/tty/tty33",
+ devpath => "/devices/virtual/tty/tty33",
exp_name => "tty33",
exp_perms => "0:0:0660",
rules => <<EOF
{
desc => "permissions OWNER to 5000",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "ttyACM0",
exp_perms => "5000::",
rules => <<EOF
{
desc => "permissions GROUP to 100",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "ttyACM0",
exp_perms => ":100:0660",
rules => <<EOF
{
desc => "permissions MODE to 0060",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "ttyACM0",
exp_perms => "::0060",
rules => <<EOF
{
desc => "permissions OWNER, GROUP, MODE",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "ttyACM0",
exp_perms => "5000:100:0777",
rules => <<EOF
{
desc => "permissions only rule",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "ttyACM0",
exp_perms => "5000:100:0777",
rules => <<EOF
{
desc => "multiple permissions only rule",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "ttyACM0",
exp_perms => "3000:4000:0777",
rules => <<EOF
{
desc => "permissions only rule with override at NAME rule",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "ttyACM0",
exp_perms => "3000:8000:0777",
rules => <<EOF
{
desc => "multiple symlinks with format char",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "symlink2-ttyACM0",
exp_target => "ttyACM0",
rules => <<EOF
{
desc => "multiple symlinks with a lot of s p a c e s",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "one",
not_exp_name => " ",
exp_target => "ttyACM0",
{
desc => "symlink creation (same directory)",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "modem0",
exp_target => "ttyACM0",
rules => <<EOF
{
desc => "multiple symlinks",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "second-0" ,
exp_target => "modem" ,
rules => <<EOF
{
desc => "symlink node to itself",
subsys => "tty",
- devpath => "/class/tty/tty0",
+ devpath => "/devices/virtual/tty/tty0",
exp_name => "link",
exp_target => "link",
exp_add_error => "yes",
{
desc => "symlink %n substitution",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "symlink0",
exp_target => "ttyACM0",
rules => <<EOF
{
desc => "symlink %k substitution",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "symlink-ttyACM0",
exp_target => "ttyACM0",
rules => <<EOF
{
desc => "symlink %M:%m substitution",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "major-166:0",
exp_target => "ttyACM0",
rules => <<EOF
{
desc => "symlink %c substitution",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "test",
exp_target => "ttyACM0",
rules => <<EOF
{
desc => "symlink %c{N} substitution",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "test",
exp_target => "ttyACM0",
rules => <<EOF
{
desc => "symlink %c{N+} substitution",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "this",
exp_target => "ttyACM0",
rules => <<EOF
{
desc => "symlink %s{filename} substitution",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "166:0",
exp_target => "ttyACM0",
rules => <<EOF
{
desc => "symlink %Ns{filename} substitution",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "166",
exp_target => "ttyACM0",
rules => <<EOF
devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
exp_name => "true",
rules => <<EOF
+ENV{ENV_KEY_TEST}="test"
SUBSYSTEMS=="scsi", KERNEL=="sda1", ENV{ENV_KEY_TEST}=="go", NAME="wrong"
SUBSYSTEMS=="scsi", KERNEL=="sda1", ENV{ENV_KEY_TEST}=="test", NAME="true"
SUBSYSTEMS=="scsi", KERNEL=="sda1", ENV{ENV_KEY_TEST}=="bad", NAME="bad"
devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1",
exp_name => "true",
rules => <<EOF
+ENV{ENV_KEY_TEST}="test"
SUBSYSTEMS=="scsi", KERNEL=="sda1", ENV{ENV_KEY_TEST}=="go", NAME="wrong"
SUBSYSTEMS=="scsi", KERNEL=="sda1", ENV{ENV_KEY_TEST}=="yes", ENV{ACTION}=="add", ENV{DEVPATH}=="/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sdax1", NAME="no"
SUBSYSTEMS=="scsi", KERNEL=="sda1", ENV{ENV_KEY_TEST}=="test", ENV{ACTION}=="add", ENV{DEVPATH}=="/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1", NAME="true"
SUBSYSTEM=="block", KERNEL=="*[!0-9]", ENV{PARTITION}="false", ENV{MAINDEVICE}="true"
ENV{MAINDEVICE}=="true", NAME="disk"
ENV{PARTITION}=="true", NAME="part"
-NAME="bad"
+SUBSYSTEM=="block", NAME="bad"
EOF
},
{
{
desc => "read sysfs value from device down in the chain",
subsys => "block",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "serial-354172020305000",
rules => <<EOF
KERNEL=="ttyACM*", NAME="serial-%s{serial}"
subsys => "block",
devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
exp_name => "ok",
- exp_perms => "root:nobody:0640",
+ exp_perms => "root:tty:0640",
rules => <<EOF
-KERNEL=="sda", GROUP:="nobody"
+KERNEL=="sda", GROUP:="tty"
KERNEL=="sda", GROUP="not-ok", MODE="0640", NAME="ok"
EOF
},
{
- desc => "final assignment",
+ desc => "final assignment 2",
subsys => "block",
devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
exp_name => "ok",
- exp_perms => "root:nobody:0640",
+ exp_perms => "root:tty:0640",
rules => <<EOF
-KERNEL=="sda", GROUP:="nobody"
+KERNEL=="sda", GROUP:="tty"
SUBSYSTEM=="block", MODE:="640"
KERNEL=="sda", GROUP="not-ok", MODE="0666", NAME="ok"
EOF
{
desc => "reset list to current value",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "three",
not_exp_name => "two",
exp_target => "node",
{
desc => "test empty NAME",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "node",
not_exp_name => "wrong",
exp_add_error => "yes",
{
desc => "test empty NAME 2",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "right",
rules => <<EOF
KERNEL=="ttyACM[0-9]*", NAME="right"
{
desc => "test multi matches",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "right",
rules => <<EOF
KERNEL=="ttyACM*|nothing", NAME="right"
{
desc => "test multi matches 2",
subsys => "tty",
- devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-1/5-1:1.0/tty/ttyACM0",
+ devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0",
exp_name => "right",
rules => <<EOF
KERNEL=="dontknow*|*nothing", NAME="nomatch"
exp_name => "yes",
rules => <<EOF
# 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
- # 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
-KERNEL="sda1", NAME=="no"
+ # 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
+KERNEL=="sda1", NAME=="no"
KERNEL=="sda1", NAME="yes"
EOF
},
exp_name => "there",
rules => <<EOF
TEST=="/etc/hosts", NAME="there"
-NAME="notthere"
+TEST!="/etc/hosts", NAME="notthere"
+EOF
+ },
+ {
+ desc => "TEST invalid NAME= only (skip invalid rule)",
+ subsys => "block",
+ devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+ exp_name => "yes",
+ rules => <<EOF
+SUBSYSTEM=="block", NAME="yes"
+NAME="no"
EOF
},
{
);
# set env
-$ENV{ENV_KEY_TEST} = "test";
$ENV{SYSFS_PATH} = $sysfs;
$ENV{UDEV_CONFIG_FILE} = $udev_conf;
close CONF;
$ENV{ACTION} = $action;
+ $ENV{SUBSYSTEM} = $subsys;
if ($valgrind > 0) {
- system("$udev_bin_valgrind $subsys");
+ system("$udev_bin_valgrind");
} else {
- system("$udev_bin $subsys");
+ system("$udev_bin");
}
}