my ($command) = @_;
my $stdout;
- run [ '../test.config_parser', $command ],
+ run [ 'test.config_parser', $command ],
'>/dev/null',
'2>', \$stdout;
# TODO: use a timeout, so that we can error out if it doesn’t terminate
bindsym Mod1 + Shift + x resize grow
bindcode Mod1+44 resize shrink
bindsym --release Mod1+x exec foo
+ bindsym --whole-window button3 nop
+ bindsym --release --whole-window button3 nop
+ bindsym --border button3 nop
+ bindsym --release --border button3 nop
+ bindsym --exclude-titlebar button3 nop
+ bindsym --whole-window --border --exclude-titlebar button3 nop
}
EOT
my $expected = <<'EOT';
-cfg_enter_mode(meh)
-cfg_mode_binding(bindsym, Mod1,Shift, x, (null), (null), resize grow)
-cfg_mode_binding(bindcode, Mod1, 44, (null), (null), resize shrink)
-cfg_mode_binding(bindsym, Mod1, x, --release, (null), exec foo)
+cfg_enter_mode((null), meh)
+cfg_mode_binding(bindsym, Mod1,Shift, x, (null), (null), (null), (null), resize grow)
+cfg_mode_binding(bindcode, Mod1, 44, (null), (null), (null), (null), resize shrink)
+cfg_mode_binding(bindsym, Mod1, x, --release, (null), (null), (null), exec foo)
+cfg_mode_binding(bindsym, (null), button3, (null), (null), --whole-window, (null), nop)
+cfg_mode_binding(bindsym, (null), button3, --release, (null), --whole-window, (null), nop)
+cfg_mode_binding(bindsym, (null), button3, (null), --border, (null), (null), nop)
+cfg_mode_binding(bindsym, (null), button3, --release, --border, (null), (null), nop)
+cfg_mode_binding(bindsym, (null), button3, (null), (null), (null), --exclude-titlebar, nop)
+cfg_mode_binding(bindsym, (null), button3, (null), --border, --whole-window, --exclude-titlebar, nop)
EOT
is(parser_calls($config),
$expected,
- 'single number (move workspace 3) ok');
+ 'mode bindings ok');
################################################################################
# exec and exec_always
$config = <<'EOT';
assign [class="^Chrome"] 4
+assign [class="^Chrome"] workspace number 3
assign [class="^Chrome"] named workspace
assign [class="^Chrome"] "quoted named workspace"
assign [class="^Chrome"] → "quoted named workspace"
$expected = <<'EOT';
cfg_criteria_add(class, ^Chrome)
-cfg_assign(4)
+cfg_assign(4, 0)
cfg_criteria_add(class, ^Chrome)
-cfg_assign(named workspace)
+cfg_assign(3, 1)
cfg_criteria_add(class, ^Chrome)
-cfg_assign(quoted named workspace)
+cfg_assign(named workspace, 0)
cfg_criteria_add(class, ^Chrome)
-cfg_assign(quoted named workspace)
+cfg_assign(quoted named workspace, 0)
+cfg_criteria_add(class, ^Chrome)
+cfg_assign(quoted named workspace, 0)
EOT
is(parser_calls($config),
hide_edge_borders vertical
hide_edge_borders horizontal
hide_edge_borders both
+hide_edge_borders smart
EOT
$expected = <<'EOT';
cfg_hide_edge_borders(vertical)
cfg_hide_edge_borders(horizontal)
cfg_hide_edge_borders(both)
+cfg_hide_edge_borders(smart)
EOT
is(parser_calls($config),
################################################################################
$config = <<'EOT';
-client.focused #4c7899 #285577 #ffffff #2e9ef4
+client.focused #4c7899 #285577 #ffffff #2e9ef4 #b34d4c
client.focused_inactive #333333 #5f676a #ffffff #484e50
client.unfocused #333333 #222222 #888888 #292d2e
-client.urgent #2f343a #900000 #ffffff #900000
+client.urgent #2f343a #900000 #ffffff #900000 #c00000
client.placeholder #000000 #0c0c0c #ffffff #000000
EOT
$expected = <<'EOT';
-cfg_color(client.focused, #4c7899, #285577, #ffffff, #2e9ef4)
-cfg_color(client.focused_inactive, #333333, #5f676a, #ffffff, #484e50)
-cfg_color(client.unfocused, #333333, #222222, #888888, #292d2e)
-cfg_color(client.urgent, #2f343a, #900000, #ffffff, #900000)
-cfg_color(client.placeholder, #000000, #0c0c0c, #ffffff, #000000)
+cfg_color(client.focused, #4c7899, #285577, #ffffff, #2e9ef4, #b34d4c)
+cfg_color(client.focused_inactive, #333333, #5f676a, #ffffff, #484e50, NULL)
+cfg_color(client.unfocused, #333333, #222222, #888888, #292d2e, NULL)
+cfg_color(client.urgent, #2f343a, #900000, #ffffff, #900000, #c00000)
+cfg_color(client.placeholder, #000000, #0c0c0c, #ffffff, #000000, NULL)
EOT
is(parser_calls($config),
client.focused #4c7899 #285577 #ffffff #2e9ef4
EOT
-my $expected_all_tokens = <<'EOT';
-ERROR: CONFIG: Expected one of these tokens: <end>, '#', 'set', 'bindsym', 'bindcode', 'bind', 'bar', 'font', 'mode', 'floating_minimum_size', 'floating_maximum_size', 'floating_modifier', 'default_orientation', 'workspace_layout', 'new_window', 'new_float', 'hide_edge_borders', 'for_window', 'assign', 'no_focus', 'focus_follows_mouse', 'mouse_warping', 'force_focus_wrapping', 'force_xinerama', 'force-xinerama', 'workspace_auto_back_and_forth', 'fake_outputs', 'fake-outputs', 'force_display_urgency_hint', 'focus_on_window_activation', 'show_marks', 'workspace', 'ipc_socket', 'ipc-socket', 'restart_state', 'popup_during_fullscreen', 'exec_always', 'exec', 'client.background', 'client.focused_inactive', 'client.focused', 'client.unfocused', 'client.urgent', 'client.placeholder'
-EOT
+my $expected_all_tokens = "ERROR: CONFIG: Expected one of these tokens: <end>, '#', '" . join("', '", 'set ', 'set ', qw(
+ set_from_resource
+ bindsym
+ bindcode
+ bind
+ bar
+ font
+ mode
+ floating_minimum_size
+ floating_maximum_size
+ floating_modifier
+ default_orientation
+ workspace_layout
+ new_window
+ new_float
+ hide_edge_borders
+ for_window
+ assign
+ no_focus
+ focus_follows_mouse
+ mouse_warping
+ force_focus_wrapping
+ force_xinerama
+ force-xinerama
+ disable_randr15
+ disable-randr15
+ workspace_auto_back_and_forth
+ fake_outputs
+ fake-outputs
+ force_display_urgency_hint
+ focus_on_window_activation
+ show_marks
+ workspace
+ ipc_socket
+ ipc-socket
+ restart_state
+ popup_during_fullscreen
+ exec_always
+ exec
+ client.background
+ client.focused_inactive
+ client.focused
+ client.unfocused
+ client.urgent
+ client.placeholder
+ )) . "'\n";
my $expected_end = <<'EOT';
ERROR: CONFIG: (in file <stdin>)
ERROR: CONFIG: Line 1: hide_edge_border both
ERROR: CONFIG: ^^^^^^^^^^^^^^^^^^^^^
ERROR: CONFIG: Line 2: client.focused #4c7899 #285577 #ffffff #2e9ef4
-cfg_color(client.focused, #4c7899, #285577, #ffffff, #2e9ef4)
+cfg_color(client.focused, #4c7899, #285577, #ffffff, #2e9ef4, NULL)
EOT
$expected = $expected_all_tokens . $expected_end;
EOT
$expected = <<'EOT';
-ERROR: CONFIG: Expected one of these tokens: 'none', 'vertical', 'horizontal', 'both', '1', 'yes', 'true', 'on', 'enable', 'active'
+ERROR: CONFIG: Expected one of these tokens: 'none', 'vertical', 'horizontal', 'both', 'smart', '1', 'yes', 'true', 'on', 'enable', 'active'
ERROR: CONFIG: (in file <stdin>)
ERROR: CONFIG: Line 1: hide_edge_borders FOOBAR
ERROR: CONFIG: ^^^^^^
ERROR: CONFIG: Line 2: client.focused #4c7899 #285577 #ffffff #2e9ef4
-cfg_color(client.focused, #4c7899, #285577, #ffffff, #2e9ef4)
+cfg_color(client.focused, #4c7899, #285577, #ffffff, #2e9ef4, NULL)
EOT
is(parser_calls($config),
EOT
$expected = <<'EOT';
-cfg_enter_mode(yo)
-cfg_mode_binding(bindsym, (null), x, (null), (null), resize shrink left)
+cfg_enter_mode((null), yo)
+cfg_mode_binding(bindsym, (null), x, (null), (null), (null), (null), resize shrink left)
ERROR: CONFIG: Expected one of these tokens: <end>, '#', 'set', 'bindsym', 'bindcode', 'bind', '}'
ERROR: CONFIG: (in file <stdin>)
ERROR: CONFIG: Line 1: mode "yo" {
EOT
$expected = <<'EOT';
+cfg_bar_start()
cfg_bar_output(LVDS-1)
-ERROR: CONFIG: Expected one of these tokens: <end>, '#', 'set', 'i3bar_command', 'status_command', 'socket_path', 'mode', 'hidden_state', 'id', 'modifier', 'wheel_up_cmd', 'wheel_down_cmd', 'position', 'output', 'tray_output', 'font', 'separator_symbol', 'binding_mode_indicator', 'workspace_buttons', 'strip_workspace_numbers', 'verbose', 'colors', '}'
+ERROR: CONFIG: Expected one of these tokens: <end>, '#', 'set', 'i3bar_command', 'status_command', 'socket_path', 'mode', 'hidden_state', 'id', 'modifier', 'wheel_up_cmd', 'wheel_down_cmd', 'bindsym', 'position', 'output', 'tray_output', 'tray_padding', 'font', 'separator_symbol', 'binding_mode_indicator', 'workspace_buttons', 'strip_workspace_numbers', 'verbose', 'colors', '}'
ERROR: CONFIG: (in file <stdin>)
ERROR: CONFIG: Line 1: bar {
ERROR: CONFIG: Line 2: output LVDS-1