+ devpath => "/block/sda",
+ exp_name => "node",
+ exp_perms => "5000::0660",
+ conf => <<EOF
+BUS="scsi", KERNEL="sda", NAME="node", OWNER="5000"
+EOF
+ },
+ {
+ desc => "permissions GROUP=100",
+ subsys => "block",
+ devpath => "/block/sda",
+ exp_name => "node",
+ exp_perms => ":100:0660",
+ conf => <<EOF
+BUS="scsi", KERNEL="sda", NAME="node", GROUP="100"
+EOF
+ },
+ {
+ desc => "permissions MODE=0777",
+ subsys => "block",
+ devpath => "/block/sda",
+ exp_name => "node",
+ exp_perms => "::0777",
+ conf => <<EOF
+BUS="scsi", KERNEL="sda", NAME="node", MODE="0777"
+EOF
+ },
+ {
+ desc => "permissions OWNER=5000 GROUP=100 MODE=0777",
+ subsys => "block",
+ devpath => "/block/sda",
+ exp_name => "node",
+ exp_perms => "5000:100:0777",
+ conf => <<EOF
+BUS="scsi", KERNEL="sda", NAME="node", OWNER="5000", GROUP="100", MODE="0777"
+EOF
+ },
+ {
+ desc => "permissions OWNER to 5000",
+ subsys => "tty",
+ devpath => "/class/tty/ttyUSB0",
+ exp_name => "ttyUSB0",
+ exp_perms => "5000::",
+ conf => <<EOF
+KERNEL="ttyUSB[0-9]*", NAME="ttyUSB%n", OWNER="5000"
+EOF
+ },
+ {
+ desc => "permissions GROUP to 100",
+ subsys => "tty",
+ devpath => "/class/tty/ttyUSB0",
+ exp_name => "ttyUSB0",
+ exp_perms => ":100:0660",
+ conf => <<EOF
+KERNEL="ttyUSB[0-9]*", NAME="ttyUSB%n", GROUP="100"
+EOF
+ },
+ {
+ desc => "permissions MODE to 0060",
+ subsys => "tty",
+ devpath => "/class/tty/ttyUSB0",
+ exp_name => "ttyUSB0",
+ exp_perms => "::0060",
+ conf => <<EOF
+KERNEL="ttyUSB[0-9]*", NAME="ttyUSB%n", MODE="0060"
+EOF
+ },
+ {
+ desc => "permissions OWNER, GROUP, MODE",
+ subsys => "tty",
+ devpath => "/class/tty/ttyUSB0",
+ exp_name => "ttyUSB0",
+ exp_perms => "5000:100:0777",
+ conf => <<EOF
+KERNEL="ttyUSB[0-9]*", NAME="ttyUSB%n", OWNER="5000", GROUP="100", MODE="0777"
+EOF
+ },
+ {
+ desc => "permissions only rule",
+ subsys => "tty",
+ devpath => "/class/tty/ttyUSB0",
+ exp_name => "ttyUSB0",
+ exp_perms => "5000:100:0777",
+ conf => <<EOF
+KERNEL="ttyUSB[0-9]*", OWNER="5000", GROUP="100", MODE="0777"
+KERNEL="ttyUSX[0-9]*", OWNER="5001", GROUP="101", MODE="0444"
+KERNEL="ttyUSB[0-9]*", NAME="ttyUSB%n"
+EOF
+ },
+ {
+ desc => "multiple permissions only rule",
+ subsys => "tty",
+ devpath => "/class/tty/ttyUSB0",
+ exp_name => "ttyUSB0",
+ exp_perms => "3000:4000:0777",
+ conf => <<EOF
+SUBSYSTEM="tty", OWNER="3000"
+SUBSYSTEM="tty", GROUP="4000"
+SUBSYSTEM="tty", MODE="0777"
+KERNEL="ttyUSX[0-9]*", OWNER="5001", GROUP="101", MODE="0444"
+KERNEL="ttyUSB[0-9]*", NAME="ttyUSB%n"
+EOF
+ },
+ {
+ desc => "permissions only rule with override at NAME rule",
+ subsys => "tty",
+ devpath => "/class/tty/ttyUSB0",
+ exp_name => "ttyUSB0",
+ exp_perms => "3000:8000:0777",
+ conf => <<EOF
+SUBSYSTEM="tty", OWNER="3000"
+SUBSYSTEM="tty", GROUP="4000"
+SUBSYSTEM="tty", MODE="0777"
+KERNEL="ttyUSX[0-9]*", OWNER="5001", GROUP="101", MODE="0444"
+KERNEL="ttyUSB[0-9]*", NAME="ttyUSB%n", GROUP="8000"
+EOF
+ },
+ {
+ desc => "major/minor number test",
+ subsys => "block",
+ devpath => "/block/sda",
+ exp_name => "node",
+ exp_majorminor => "8:0",
+ conf => <<EOF
+BUS="scsi", KERNEL="sda", NAME="node"
+EOF
+ },
+ {
+ desc => "big minor number test",
+ subsys => "i2c-dev",
+ devpath => "/class/i2c-dev/i2c-300",
+ exp_name => "node",
+ exp_majorminor => "89:300",
+ conf => <<EOF
+KERNEL="i2c-300", NAME="node"
+EOF
+ },
+ {
+ desc => "big major number test",
+ subsys => "i2c-dev",
+ devpath => "/class/i2c-dev/i2c-fake1",
+ exp_name => "node",
+ exp_majorminor => "4095:1",
+ conf => <<EOF
+KERNEL="i2c-fake1", NAME="node"
+EOF
+ },
+ {
+ desc => "big major and big minor number test",
+ subsys => "i2c-dev",
+ devpath => "/class/i2c-dev/i2c-fake2",
+ exp_name => "node",
+ exp_majorminor => "4094:89999",
+ conf => <<EOF
+KERNEL="i2c-fake2", NAME="node"
+EOF
+ },
+ {
+ desc => "multiple symlinks with format char",
+ subsys => "tty",
+ devpath => "/class/tty/ttyUSB0",
+ exp_name => "symlink2-ttyUSB0",
+ exp_target => "ttyUSB0",
+ conf => <<EOF
+KERNEL="ttyUSB[0-9]*", NAME="ttyUSB%n", SYMLINK="symlink1-%n symlink2-%k symlink3-%b"
+EOF
+ },
+ {
+ desc => "symlink creation (same directory)",
+ subsys => "tty",
+ devpath => "/class/tty/ttyUSB0",
+ exp_name => "visor0",
+ exp_target => "ttyUSB0",
+ conf => <<EOF
+KERNEL="ttyUSB[0-9]*", NAME="ttyUSB%n", SYMLINK="visor%n"
+EOF
+ },
+ {
+ desc => "symlink creation (relative link forward)",
+ subsys => "block",
+ devpath => "/block/sda/sda2",
+ exp_name => "1/2/symlink" ,
+ exp_target => "a/b/node",
+ 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",
+ exp_name => "1/2/c/d/symlink" ,
+ exp_target => "../../a/b/node",
+ 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",
+ exp_name => "second-0" ,
+ exp_target => "visor" ,
+ conf => <<EOF
+KERNEL="ttyUSB0", NAME="visor", SYMLINK="first-%n second-%n third-%n"
+EOF
+ },
+ {
+ desc => "symlink only rule",
+ subsys => "block",
+ devpath => "/block/sda",