]> git.sur5r.net Git - i3/i3/blobdiff - docs/testsuite
Explaing the workspace number "1: www" behavior (#2674)
[i3/i3] / docs / testsuite
index 61a7221962af1161010cd23d7440fb549733874f..71c6a427862fb4b4a46c32f093923a25e21c2c63 100644 (file)
@@ -107,6 +107,11 @@ containing the appropriate i3 logfile for each testcase. The latest folder can
 always be found under the symlink +latest/+. Unless told differently, it will
 run the tests on a separate X server instance (using Xephyr).
 
+Xephyr will open a window where you can inspect the running test. You can run
+the tests without an X session with Xvfb, such as with +xvfb-run
+./complete-run+. This will also speed up the tests significantly especially on
+machines without a powerful video card.
+
 .Example invocation of complete-run.pl+
 ---------------------------------------
 $ cd ~/i3/testcases
@@ -155,6 +160,27 @@ $ ./complete-run.pl --parallel=1 --keep-xserver-output
 This will show the output of Xephyr, which is the X server implementation we
 use for testing.
 
+==== Coverage testing
+
+Coverage testing is possible with +lcov+, the front-end for GCC's coverage
+testing tool +gcov+. The testcases can generate a nice html report that tells
+you which functions and lines were covered during a run of the tests. You can
+use this tool to judge how effective your tests are.
+
+To use test coverage tools, first compile with coverage enabled.
+
+---------------------------------------------------
+COVERAGE=1 make
+---------------------------------------------------
+
+Then run the tests with the +--coverage-testing+ flag.
+
+---------------------------------------------------
+./complete-run.pl --coverage-testing
+---------------------------------------------------
+
+Then open +latest/i3-coverage/index.html+ in your web browser.
+
 ==== IPC interface
 
 The testsuite makes extensive use of the IPC (Inter-Process Communication)
@@ -170,7 +196,7 @@ In order to open new windows, change attributes, get events, etc., the
 testsuite uses X11::XCB, a new (and quite specific to i3 at the moment) Perl
 module which uses the XCB protocol description to generate Perl bindings to
 X11. They work in a very similar way to libxcb (which i3 uses) and provide
-relatively high-level interfaces (objects such as +X11::XCB::Window+) aswell as
+relatively high-level interfaces (objects such as +X11::XCB::Window+) as well as
 access to the low-level interface, which is very useful when testing a window
 manager.
 
@@ -424,7 +450,7 @@ cmd 'focus left';
 is($x->input_focus, $left->id, 'left window focused');
 ----------
 
-However, the test fails. Sometimes. Apparantly, there is a race condition in
+However, the test fails. Sometimes. Apparently, there is a race condition in
 your test. If you think about it, this is because you are using two different
 pieces of software: You tell i3 to update focus, i3 confirms that, and then you
 ask X11 to give you the current focus. There is a certain time i3 needs to
@@ -588,7 +614,7 @@ activation, we decreased the total amount of time necessary to run all tests
 it significantly more attractive to run the test suite more often (or at all)
 during development.
 
-An alternative approach to using socket activation is polling for the existance
+An alternative approach to using socket activation is polling for the existence
 of the IPC socket and connecting to it. While this might be slightly easier to
 implement, it wastes CPU time and is considerably uglier than this solution
 :). After all, +lib/SocketActivation.pm+ contains only 54 SLOC.