]> git.sur5r.net Git - i3/i3/commitdiff
Testcase for non-null-terminated WM_CLASS.
authorMichael Hofmann <mh21@mh21.de>
Sun, 29 Mar 2015 16:52:03 +0000 (18:52 +0200)
committerMichael Hofmann <mh21@mh21.de>
Mon, 30 Mar 2015 06:56:46 +0000 (08:56 +0200)
- fails most of the time

testcases/t/235-wm-class-change-handler.t

index e6cacdedfeaf3ee153409bb2406020e8c94cb94f..3685b30ce52ad7205d8382a602b1dfa4a778938e 100644 (file)
@@ -31,16 +31,17 @@ EOT
 my $pid = launch_with_config($config);
 
 sub change_window_class {
-    my ($window, $class) = @_;
+    my ($window, $class, $length) = @_;
     my $atomname = $x->atom(name => 'WM_CLASS');
     my $atomtype = $x->atom(name => 'STRING');
+    $length ||= length($class) + 1;
     $x->change_property(
         PROP_MODE_REPLACE,
         $window->id,
         $atomname->id,
         $atomtype->id,
         8,
-        length($class) + 1,
+        $length,
         $class
     );
     sync_with_i3;
@@ -65,6 +66,13 @@ is($con->{window_properties}->{instance}, 'special',
 is($con->{mark}, 'special_class_mark',
     'A `for_window` assignment should run for a match when the window changes class');
 
+change_window_class($win, "abcdefghijklmnopqrstuv\0abcd", 24);
+
+$con = @{get_ws_content($ws)}[0];
+
+is($con->{window_properties}->{class}, 'a',
+    'Non-null-terminated strings should be handled correctly');
+
 exit_gracefully($pid);
 
 done_testing;