X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=test%2Fudev-test.pl;h=97c009492124005ae641c5c38fe4bf56b4df56f1;hb=64682333bb02d946c179bc729da687f6c85bf9e8;hp=9a54b6192aa286a0b65d693f9d4a889abe437558;hpb=a367f04ee0a45a9ad342e04532c73eb0cc179793;p=elogind.git diff --git a/test/udev-test.pl b/test/udev-test.pl index 9a54b6192..97c009492 100644 --- a/test/udev-test.pl +++ b/test/udev-test.pl @@ -21,15 +21,14 @@ use warnings; use strict; -my $PWD = `pwd`; -chomp($PWD); - +my $PWD = $ENV{PWD}; my $sysfs = "sys/"; my $udev_bin = "../udev"; my $udev_root = "udev-root/"; # !!! directory will be removed !!! -my $udev_db = "udev.tdb"; +my $udev_db = ".udev.tdb"; my $perm = "udev.permissions"; -my $conf_tmp = "udev-test.config"; +my $main_conf = "udev-test.conf"; +my $conf_tmp = "udev-test.rules"; my @tests = ( @@ -39,8 +38,8 @@ my @tests = ( devpath => "block/sda", expected => "boot_disk" , conf => < "block/sda/sda1", expected => "boot_disk1" , conf => < "label test of pattern match", + subsys => "block", + devpath => "block/sda/sda1", + expected => "boot_disk1" , + conf => < "label test of multiple sysfs files", + subsys => "block", + devpath => "block/sda/sda1", + expected => "boot_disk1" , + conf => < "label test of max sysfs files", + subsys => "block", + devpath => "block/sda/sda1", + expected => "boot_disk1" , + conf => < "catch device by *", + subsys => "tty", + devpath => "class/tty/ttyUSB0", + expected => "visor/0" , + conf => < "catch device by ?", + subsys => "tty", + devpath => "class/tty/ttyUSB0", + expected => "visor/0" , + conf => < "catch device by character class", + subsys => "tty", + devpath => "class/tty/ttyUSB0", + expected => "visor/0" , + conf => < "visor" , conf => < "Handle comment lines in config file (and replace kernel name)", + subsys => "tty", + devpath => "class/tty/ttyUSB0", + expected => "visor" , + conf => < "Handle comment lines in config file with whitespace (and replace kernel name)", + subsys => "tty", + devpath => "class/tty/ttyUSB0", + expected => "visor" , + conf => < "Handle empty lines in config file (and replace kernel name)", + subsys => "tty", + devpath => "class/tty/ttyUSB0", + expected => "visor" , + conf => < "subdirectory handling", + subsys => "tty", + devpath => "class/tty/ttyUSB0", + expected => "sub/direct/ory/visor" , + conf => < "callout result substitution", subsys => "block", devpath => "block/sda/sda3", expected => "special-device-3" , @@ -90,6 +194,138 @@ CALLOUT, BUS="scsi", PROGRAM="/bin/echo -n special-device", ID="special--*", NAM CALLOUT, BUS="scsi", PROGRAM="/bin/echo -n special-device", ID="special-device-", NAME="%c-3-%n" CALLOUT, BUS="scsi", PROGRAM="/bin/echo -n special-device", ID="special-devic", NAME="%c-4-%n" CALLOUT, BUS="scsi", PROGRAM="/bin/echo -n special-device", ID="special-*", NAME="%c-%n" +EOF + }, + { + desc => "callout program substitution", + subsys => "block", + devpath => "block/sda/sda3", + expected => "test-0:0:0:0" , + conf => < "callout program substitution (numbered part of)", + subsys => "block", + devpath => "block/sda/sda3", + expected => "link1" , + conf => < "invalid callout for device with no bus", + subsys => "tty", + devpath => "class/tty/console", + expected => "TTY" , + conf => < "valid callout for device with no bus", + subsys => "tty", + devpath => "class/tty/console", + expected => "foo" , + conf => < "invalid label for device with no bus", + subsys => "tty", + devpath => "class/tty/console", + expected => "TTY" , + conf => < "valid label for device with no bus", + subsys => "tty", + devpath => "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 => < "callout bus type", + subsys => "block", + devpath => "block/sda", + expected => "scsi-0:0:0:0" , + conf => < "symlink creation (same directory)", + subsys => "tty", + devpath => "class/tty/ttyUSB0", + expected => "visor0" , + conf => < "symlink creation (relative link back)", + subsys => "block", + devpath => "block/sda/sda2", + expected => "1/2/a/b/symlink" , + conf => < "symlink creation (relative link forward)", + subsys => "block", + devpath => "block/sda/sda2", + expected => "1/2/symlink" , + conf => < "symlink creation (relative link back and forward)", + subsys => "block", + devpath => "block/sda/sda2", + expected => "1/2/c/d/symlink" , + conf => < "multiple symlinks", + subsys => "tty", + devpath => "class/tty/ttyUSB0", + expected => "second-0" , + conf => <$conf_tmp" || die "unable to create config file: $conf_tmp"; @@ -124,11 +356,19 @@ system("rm -rf $udev_root"); mkdir($udev_root) || die "unable to create udev_root: $udev_root\n"; # test -my $error; +my $error = 0; print "\nudev-test will run ".($#tests + 1)." tests:\n\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; + foreach my $config (@tests) { - $config->{conf} =~ m/^([A-Z]*).*/; + $config->{conf} =~ m/([A-Z]+)\s*,/; my $method = $1; print "TEST: $config->{desc}\n"; @@ -142,11 +382,11 @@ foreach my $config (@tests) { system("tree $udev_root"); print "\n"; $error++; -# next; } udev("remove", $config->{subsys}, $config->{devpath}, \$config->{conf}); - if (-e "$PWD/$udev_root$config->{expected}") { + if ((-e "$PWD/$udev_root$config->{expected}") || + (-l "$PWD/$udev_root$config->{expected}")) { print "remove: error\n\n"; system("tree $udev_root"); $error++; @@ -158,7 +398,8 @@ foreach my $config (@tests) { print "$error errors occured\n\n"; # cleanup +unlink($udev_db); system("rm -rf $udev_root"); unlink($conf_tmp); -unlink($udev_db); +unlink($main_conf);