tests: allow running make check without make install

desktop shell and weston keyboard both refer to themselves prefixed by
LIBEXECDIR, however this is only valid once installed.  make check will
currently either fail or run pre-existing versions.

This patch adds a way to override that location by setting the env var
WESTON_BUILD_DIR - which is then set by the test env script so make check
will test the versions in the build directory regardless of whether they're
installed or not.

Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
dev
Derek Foreman 10 years ago committed by Pekka Paalanen
parent 3d3f48548a
commit c7210434d4
  1. 7
      desktop-shell/shell.c
  2. 12
      shared/config-parser.c
  3. 3
      shared/config-parser.h
  4. 6
      src/screenshooter.c
  5. 6
      src/text-backend.c
  6. 2
      tests/weston-tests-env

@ -567,7 +567,7 @@ shell_configuration(struct desktop_shell *shell)
{ {
struct weston_config_section *section; struct weston_config_section *section;
int duration; int duration;
char *s; char *s, *client;
section = weston_config_get_section(shell->compositor->config, section = weston_config_get_section(shell->compositor->config,
"screensaver", NULL, NULL); "screensaver", NULL, NULL);
@ -578,8 +578,11 @@ shell_configuration(struct desktop_shell *shell)
section = weston_config_get_section(shell->compositor->config, section = weston_config_get_section(shell->compositor->config,
"shell", NULL, NULL); "shell", NULL, NULL);
asprintf(&client, "%s/%s", weston_config_get_libexec_dir(),
WESTON_SHELL_CLIENT);
weston_config_section_get_string(section, weston_config_section_get_string(section,
"client", &s, LIBEXECDIR "/" WESTON_SHELL_CLIENT); "client", &s, client);
free(client);
shell->client = s; shell->client = s;
weston_config_section_get_string(section, weston_config_section_get_string(section,
"binding-modifier", &s, "super"); "binding-modifier", &s, "super");

@ -282,6 +282,18 @@ weston_config_section_get_bool(struct weston_config_section *section,
return 0; return 0;
} }
WL_EXPORT
const char *
weston_config_get_libexec_dir(void)
{
const char *path = getenv("WESTON_BUILD_DIR");
if (path)
return path;
return LIBEXECDIR;
}
static struct weston_config_section * static struct weston_config_section *
config_add_section(struct weston_config *config, const char *name) config_add_section(struct weston_config *config, const char *name)
{ {

@ -92,6 +92,9 @@ int
weston_config_section_get_bool(struct weston_config_section *section, weston_config_section_get_bool(struct weston_config_section *section,
const char *key, const char *key,
int *value, int default_value); int *value, int default_value);
const char *
weston_config_get_libexec_dir(void);
struct weston_config * struct weston_config *
weston_config_parse(const char *name); weston_config_parse(const char *name);

@ -286,12 +286,16 @@ screenshooter_binding(struct weston_seat *seat, uint32_t time, uint32_t key,
void *data) void *data)
{ {
struct screenshooter *shooter = data; struct screenshooter *shooter = data;
const char *screenshooter_exe = LIBEXECDIR "/weston-screenshooter"; char *screenshooter_exe;
asprintf(&screenshooter_exe, "%s/%s", weston_config_get_libexec_dir(),
"/weston-screenshooter");
if (!shooter->client) if (!shooter->client)
shooter->client = weston_client_launch(shooter->ec, shooter->client = weston_client_launch(shooter->ec,
&shooter->process, &shooter->process,
screenshooter_exe, screenshooter_sigchld); screenshooter_exe, screenshooter_sigchld);
free(screenshooter_exe);
} }
struct weston_recorder { struct weston_recorder {

@ -937,12 +937,16 @@ static void
text_backend_configuration(struct text_backend *text_backend) text_backend_configuration(struct text_backend *text_backend)
{ {
struct weston_config_section *section; struct weston_config_section *section;
char *client;
section = weston_config_get_section(text_backend->compositor->config, section = weston_config_get_section(text_backend->compositor->config,
"input-method", NULL, NULL); "input-method", NULL, NULL);
asprintf(&client, "%s/weston-keyboard",
weston_config_get_libexec_dir());
weston_config_section_get_string(section, "path", weston_config_section_get_string(section, "path",
&text_backend->input_method.path, &text_backend->input_method.path,
LIBEXECDIR "/weston-keyboard"); client);
free(client);
} }
static void static void

@ -28,6 +28,7 @@ XWAYLAND_PLUGIN=$abs_builddir/.libs/xwayland.so
case $TESTNAME in case $TESTNAME in
*.la|*.so) *.la|*.so)
WESTON_BUILD_DIR=$abs_builddir \
$WESTON --backend=$BACKEND \ $WESTON --backend=$BACKEND \
--no-config \ --no-config \
--shell=$SHELL_PLUGIN \ --shell=$SHELL_PLUGIN \
@ -37,6 +38,7 @@ case $TESTNAME in
&> "$OUTLOG" &> "$OUTLOG"
;; ;;
*) *)
WESTON_BUILD_DIR=$abs_builddir \
WESTON_TEST_CLIENT_PATH=$abs_builddir/$TESTNAME $WESTON \ WESTON_TEST_CLIENT_PATH=$abs_builddir/$TESTNAME $WESTON \
--socket=test-$(basename $TESTNAME) \ --socket=test-$(basename $TESTNAME) \
--backend=$BACKEND \ --backend=$BACKEND \

Loading…
Cancel
Save