]> git.sur5r.net Git - i3/i3/blob - testcases/t/207-shmlog.t
testsuite: use relative paths, set PATH to absolute path
[i3/i3] / testcases / t / 207-shmlog.t
1 #!perl
2 # vim:ts=4:sw=4:expandtab
3 #
4 # Please read the following documents before working on tests:
5 # • http://build.i3wm.org/docs/testsuite.html
6 #   (or docs/testsuite)
7 #
8 # • http://build.i3wm.org/docs/lib-i3test.html
9 #   (alternatively: perldoc ./testcases/lib/i3test.pm)
10 #
11 # • http://build.i3wm.org/docs/ipc.html
12 #   (or docs/ipc)
13 #
14 # • http://onyxneon.com/books/modern_perl/modern_perl_a4.pdf
15 #   (unless you are already familiar with Perl)
16 #
17 use i3test i3_autostart => 0;
18 use IPC::Run qw(run);
19 use File::Temp;
20
21 ################################################################################
22 # 1: test that shared memory logging does not work yet
23 ################################################################################
24
25 my $config = <<EOT;
26 # i3 config file (v4)
27 font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
28 EOT
29
30 # NB: launch_with_config sets --shmlog-size=0 because the logfile gets
31 # redirected via stdout redirection anyways.
32 my $pid = launch_with_config($config);
33
34 my $stdout;
35 my $stderr;
36 run [ 'i3-dump-log' ],
37     '>', \$stdout,
38     '2>', \$stderr;
39
40 like($stderr, qr#^i3-dump-log: ERROR: i3 is running, but SHM logging is not enabled\.#,
41     'shm logging not enabled');
42
43 ################################################################################
44 # 2: enable shared memory logging and verify new content shows up
45 ################################################################################
46
47 cmd 'shmlog on';
48
49 my $random_nop = mktemp('nop.XXXXXX');
50 cmd "nop $random_nop";
51
52 run [ 'i3-dump-log' ],
53     '>', \$stdout,
54     '2>', \$stderr;
55
56 like($stdout, qr#$random_nop#, 'random nop found in shm log');
57 like($stderr, qr#^$#, 'stderr empty');
58
59 ################################################################################
60 # 3: change size of the shared memory log buffer and verify old content is gone
61 ################################################################################
62
63 cmd 'shmlog ' . (23 * 1024 * 1024);
64
65 run [ 'i3-dump-log' ],
66     '>', \$stdout,
67     '2>', \$stderr;
68
69 unlike($stdout, qr#$random_nop#, 'random nop not found in shm log');
70 like($stderr, qr#^$#, 'stderr empty');
71
72 ################################################################################
73 # 4: disable logging and verify it no longer works
74 ################################################################################
75
76 cmd 'shmlog off';
77
78 run [ 'i3-dump-log' ],
79     '>', \$stdout,
80     '2>', \$stderr;
81
82 like($stderr, qr#^i3-dump-log: ERROR: i3 is running, but SHM logging is not enabled\.#,
83     'shm logging not enabled');
84
85 exit_gracefully($pid);
86
87 done_testing;