tests: add inject_randr15 (#2573)

This tool is similar to xtrace in usage in that it intercepts traffic to
the X server. The motivating feature for writing the tool is its ability
to inject prepared reply messages instead of the server’s reply. In
this particular case, we’ll inject a RRGetMonitors reply to test i3’s
RandR 1.5 code paths.

The added testcase is a noop for now, but with the code that’s lingering
in the randr15 branch, i3 does actually detect monitors as per the
injected reply:

    2016-11-20 21:10:05 - randr.c:__randr_query_outputs:618 -
      RandR 1.5 available, querying monitors
    2016-11-20 21:10:05 - randr.c:__randr_query_outputs:628 -
      1 RandR monitors found (timestamp 0)
    2016-11-20 21:10:05 - randr.c:__randr_query_outputs:646 -
      name DP3, x 0, y 0, width 3840 px, height 2160 px, width 520 mm,
      height 290 mm, primary 1, automatic 1

This is preparation work for issue #1799
This commit is contained in:
Michael Stapelberg
2016-11-20 23:20:14 -08:00
committed by GitHub
parent aa20c416c3
commit 3e7a07e48d
5 changed files with 543 additions and 2 deletions

View File

@ -45,7 +45,10 @@ dist_xsessions_DATA = \
noinst_LIBRARIES = libi3.a
check_PROGRAMS = test.commands_parser test.config_parser
check_PROGRAMS = \
test.commands_parser \
test.config_parser \
test.inject_randr15
check_SCRIPTS = \
testcases/complete-run.pl
@ -401,6 +404,19 @@ i3_config_wizard_i3_config_wizard_SOURCES = \
i3-config-wizard/main.c \
i3-config-wizard/xcb.h
test_inject_randr15_CPPFLAGS = \
$(AM_CPPFLAGS)
test_inject_randr15_CFLAGS = \
$(AM_CFLAGS) \
$(i3_CFLAGS)
test_inject_randr15_SOURCES = \
testcases/inject_randr1.5.c
test_inject_randr15_LDADD = \
$(i3_LDADD)
test_commands_parser_CPPFLAGS = \
$(AM_CPPFLAGS) \
-DTEST_PARSER