diff options
author | Michael Stapelberg <stapelberg@users.noreply.github.com> | 2022-09-09 10:23:55 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-09 10:23:55 +0200 |
commit | ac368e7916515c958384c95186510df9fcd0a7ab (patch) | |
tree | de1ce33744c3e7037ab3947be9f51589e112111f | |
parent | 6fb58eb8413f555fbcde8d18f8e40f4c180a3cb1 (diff) | |
download | i3-ac368e7916515c958384c95186510df9fcd0a7ab.tar.gz i3-ac368e7916515c958384c95186510df9fcd0a7ab.zip |
config_parser: prevent trailing whitespace in output (string → word) (#5117)
fixes https://github.com/i3/i3/issues/5064
-rw-r--r-- | parser-specs/config.spec | 2 | ||||
-rw-r--r-- | testcases/t/317-bar-output-trailing-space.t | 71 |
2 files changed, 72 insertions, 1 deletions
diff --git a/parser-specs/config.spec b/parser-specs/config.spec index 30d3d687..617ed130 100644 --- a/parser-specs/config.spec +++ b/parser-specs/config.spec @@ -565,7 +565,7 @@ state BAR_POSITION: -> call cfg_bar_position($position); BAR state BAR_OUTPUT: - output = string + output = word -> call cfg_bar_output($output); BAR state BAR_TRAY_OUTPUT: diff --git a/testcases/t/317-bar-output-trailing-space.t b/testcases/t/317-bar-output-trailing-space.t new file mode 100644 index 00000000..540d30c9 --- /dev/null +++ b/testcases/t/317-bar-output-trailing-space.t @@ -0,0 +1,71 @@ +#!perl +# vim:ts=4:sw=4:expandtab +# +# Please read the following documents before working on tests: +# • https://build.i3wm.org/docs/testsuite.html +# (or docs/testsuite) +# +# • https://build.i3wm.org/docs/lib-i3test.html +# (alternatively: perldoc ./testcases/lib/i3test.pm) +# +# • https://build.i3wm.org/docs/ipc.html +# (or docs/ipc) +# +# • http://onyxneon.com/books/modern_perl/modern_perl_a4.pdf +# (unless you are already familiar with Perl) +# +# Verifies that any trailing whitespace in strings (including in +# “bar { output <output> }” in particular) is stripped. +# Ticket: #5064 +# Bug still in: 4.20-105-g4db383e4 +use i3test i3_autostart => 0; + +# Test with a single output. + +my $config = <<EOT; +# i3 config file (v4) +font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1 + +bar { + output anything +} +EOT + +my $pid = launch_with_config($config); + +my $i3 = i3(get_socket_path(0)); +my $bars = $i3->get_bar_config()->recv; +is(@$bars, 1, 'one bar configured'); +my $bar_id = shift @$bars; + +my $bar_config = $i3->get_bar_config($bar_id)->recv; +is_deeply($bar_config->{outputs}, [ 'anything' ], 'outputs do not have trailing whitespace'); + +exit_gracefully($pid); + +# Test with multiple outputs for a single bar. + +$config = <<EOT; +# i3 config file (v4) +font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1 + +bar { + output nospace + output singlespace +} +EOT + +$pid = launch_with_config($config); + +$i3 = i3(get_socket_path(0)); +$bars = $i3->get_bar_config()->recv; +is(@$bars, 1, 'one bar configured'); +$bar_id = shift @$bars; + +$bar_config = $i3->get_bar_config($bar_id)->recv; +is_deeply($bar_config->{outputs}, [ 'nospace', 'singlespace' ], 'outputs do not have trailing whitespace'); + +exit_gracefully($pid); + + +done_testing; |