X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=test%2Fudev-test.pl;h=64d7f934445ef181fa133defdeec8b7515d6add0;hb=ccb03fc9015e6c8131e4d289a36e0145eaf2b5a2;hp=a9f5db03cfa21b0d543b946d0caae14828fc69b7;hpb=f274ece0f76b5709408821e317e87aef76123db6;p=elogind.git diff --git a/test/udev-test.pl b/test/udev-test.pl index a9f5db03c..64d7f9344 100755 --- a/test/udev-test.pl +++ b/test/udev-test.pl @@ -22,11 +22,14 @@ use strict; my $udev_bin = "./test-udev"; my $valgrind = 0; -my $udev_bin_valgrind = "valgrind --tool=memcheck --leak-check=yes --quiet $udev_bin"; +my $gdb = 0; +my $udev_bin_valgrind = "valgrind --tool=memcheck --leak-check=yes --track-origins=yes --quiet $udev_bin"; +my $udev_bin_gdb = "gdb --args $udev_bin"; my $udev_dev = "test/dev"; my $udev_run = "test/run"; my $udev_rules_dir = "$udev_run/udev/rules.d"; my $udev_rules = "$udev_rules_dir/udev-test.rules"; +my $EXIT_TEST_SKIP = 77; my @tests = ( { @@ -549,21 +552,21 @@ KERNEL=="tty33", OWNER="bad", GROUP="name" EOF }, { - desc => "permissions OWNER=5000", + desc => "permissions OWNER=1", devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda", exp_name => "node", - exp_perms => "5000::0600", + exp_perms => "1::0600", rules => < "permissions GROUP=100", + desc => "permissions GROUP=1", devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda", exp_name => "node", - exp_perms => ":100:0660", + exp_perms => ":1:0660", rules => < "permissions OWNER=5000 GROUP=100 MODE=0777", + desc => "permissions OWNER=1 GROUP=1 MODE=0777", devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda", exp_name => "node", - exp_perms => "5000:100:0777", + exp_perms => "1:1:0777", rules => < "permissions OWNER to 5000", + desc => "permissions OWNER to 1", devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0", exp_name => "ttyACM0", - exp_perms => "5000::", + exp_perms => "1::", rules => < "permissions GROUP to 100", + desc => "permissions GROUP to 1", devpath => "/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/tty/ttyACM0", exp_name => "ttyACM0", - exp_perms => ":100:0660", + exp_perms => ":1:0660", rules => < "permissions OWNER, GROUP, MODE", 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", + exp_perms => "1:1:0777", rules => < "permissions only rule", 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", + exp_perms => "1:1:0777", rules => < "multiple permissions only rule", 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", + exp_perms => "1:1:0777", rules => < "permissions only rule with override at SYMLINK+ rule", 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", + exp_perms => "1:2:0777", rules => < "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda", exp_name => "there", rules => < "TEST PROGRAM feeds OWNER, GROUP, MODE", devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda", exp_name => "sda", - exp_perms => "5000:100:0400", + exp_perms => "1:1:0400", exp_rem_error => "yes", rules => < 0) { system("$udev_bin_valgrind $action $devpath"); + } elsif ($gdb > 0) { + system("$udev_bin_gdb $action $devpath"); } else { system("$udev_bin", "$action", "$devpath"); } @@ -1485,6 +1490,13 @@ if (!($<==0)) { exit; } +# skip the test when running in a container +system("systemd-detect-virt", "-c", "-q"); +if ($? >> 8 == 0) { + print "Running in a container, skipping the test.\n"; + exit($EXIT_TEST_SKIP); +} + udev_setup(); my $test_num = 1; @@ -1494,6 +1506,9 @@ foreach my $arg (@ARGV) { if ($arg =~ m/--valgrind/) { $valgrind = 1; printf("using valgrind\n"); + } elsif ($arg =~ m/--gdb/) { + $gdb = 1; + printf("using gdb\n"); } else { push(@list, $arg); } @@ -1518,7 +1533,7 @@ if ($list[0]) { } } -print "$error errors occured\n\n"; +print "$error errors occurred\n\n"; # cleanup system("rm", "-rf", "$udev_dev");