From 506d8797b25241d3e44a039580820dbeb9c1ee01 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Wed, 3 Aug 2011 00:03:13 +0200 Subject: [PATCH] tests: implement i3test::launch_with_config, use it in t/65-for_window --- testcases/t/65-for_window.t | 92 ++++++++++++------------------------- testcases/t/lib/i3test.pm | 37 ++++++++++++++- 2 files changed, 64 insertions(+), 65 deletions(-) diff --git a/testcases/t/65-for_window.t b/testcases/t/65-for_window.t index 26ccb7cf..f156f11b 100644 --- a/testcases/t/65-for_window.t +++ b/testcases/t/65-for_window.t @@ -6,15 +6,9 @@ use X11::XCB qw(:all); use X11::XCB::Connection; use i3test; -use Cwd qw(abs_path); -use Proc::Background; -use File::Temp qw(tempfile tempdir); my $x = X11::XCB::Connection->new; -# assuming we are run by complete-run.pl -my $i3_path = abs_path("../i3"); - ############################################################## # 1: test the following directive: # for_window [class="borderless"] border none @@ -23,22 +17,14 @@ my $i3_path = abs_path("../i3"); # "borderless" (should get no border) ############################################################## -my $socketpath = File::Temp::tempnam('/tmp', 'i3-test-socket-'); - -my ($fh, $tmpfile) = tempfile(); -say $fh "# i3 config file (v4)"; -say $fh "font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1"; -say $fh "ipc-socket $socketpath"; -say $fh q|for_window [class="borderless"] border none|; -close($fh); - -diag("Starting i3"); -my $i3cmd = "exec " . abs_path("../i3") . " -V -d all --disable-signalhandler -c $tmpfile >/dev/null 2>/dev/null"; -my $process = Proc::Background->new($i3cmd); -sleep 1; +my $config = <pid); # only once ############################################################## -($fh, $tmpfile) = tempfile(); -say $fh "# i3 config file (v4)"; -say $fh "font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1"; -say $fh "ipc-socket $socketpath"; -say $fh q|for_window [class="borderless"] border none|; -say $fh q|for_window [title="special borderless title"] border none|; -close($fh); +$config = </dev/null 2>/dev/null"; -my $process = Proc::Background->new($i3cmd); -sleep 1; - -# force update of the cached socket path in lib/i3test -get_socket_path(0); +$process = launch_with_config($config); $tmp = fresh_workspace; @@ -176,22 +155,16 @@ exit_gracefully($process->pid); # 3: match on the title, set border style *and* a mark ############################################################## -($fh, $tmpfile) = tempfile(); -say $fh "# i3 config file (v4)"; -say $fh "font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1"; -say $fh "ipc-socket $socketpath"; -say $fh q|for_window [class="borderless"] border none|; -say $fh q|for_window [title="special borderless title"] border none|; -say $fh q|for_window [title="special mark title"] border none, mark bleh|; -close($fh); - -diag("Starting i3"); -my $i3cmd = "exec " . abs_path("../i3") . " -V -d all --disable-signalhandler -c $tmpfile >/dev/null 2>/dev/null"; -my $process = Proc::Background->new($i3cmd); -sleep 1; +$config = <pid); # 4: multiple criteria for the for_window command ############################################################## -($fh, $tmpfile) = tempfile(); -say $fh "# i3 config file (v4)"; -say $fh "font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1"; -say $fh "ipc-socket $socketpath"; -say $fh q|for_window [class="borderless" title="usethis"] border none|; -close($fh); - -diag("Starting i3"); -my $i3cmd = "exec " . abs_path("../i3") . " -V -d all --disable-signalhandler -c $tmpfile >/tmp/a 2>/dev/null"; -my $process = Proc::Background->new($i3cmd); -sleep 1; +$config = <new(); my $_cached_socket_path = undef; +my $tmp_socket_path = undef; BEGIN { my $window_count = 0; @@ -229,4 +233,33 @@ sub get_socket_path { return $socketpath; } +# +# launches a new i3 process with the given string as configuration file. +# useful for tests which test specific config file directives. +# +# be sure to use !NO_I3_INSTANCE! somewhere in the file to signal +# complete-run.pl that it should not create an instance of i3 +# +sub launch_with_config { + my ($config) = @_; + + if (!defined($tmp_socket_path)) { + $tmp_socket_path = File::Temp::tempnam('/tmp', 'i3-test-socket-'); + } + + my ($fh, $tmpfile) = tempfile('i3-test-config-XXXXX', UNLINK => 1); + say $fh $config; + say $fh "ipc-socket $tmp_socket_path"; + close($fh); + + my $i3cmd = "exec " . abs_path("../i3") . " -V -d all --disable-signalhandler -c $tmpfile >/dev/null 2>/dev/null"; + my $process = Proc::Background->new($i3cmd); + sleep 1; + + # force update of the cached socket path in lib/i3test + get_socket_path(0); + + return $process; +} + 1 -- 2.39.5