tests: allow running make check without make install
authorDerek Foreman <derekf@osg.samsung.com>
Thu, 21 Aug 2014 16:32:38 +0000 (11:32 -0500)
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>
Fri, 22 Aug 2014 14:47:33 +0000 (17:47 +0300)
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>
desktop-shell/shell.c
shared/config-parser.c
shared/config-parser.h
src/screenshooter.c
src/text-backend.c
tests/weston-tests-env

index 20536d7..99f3343 100644 (file)
@@ -567,7 +567,7 @@ shell_configuration(struct desktop_shell *shell)
 {
        struct weston_config_section *section;
        int duration;
-       char *s;
+       char *s, *client;
 
        section = weston_config_get_section(shell->compositor->config,
                                            "screensaver", NULL, NULL);
@@ -578,8 +578,11 @@ shell_configuration(struct desktop_shell *shell)
 
        section = weston_config_get_section(shell->compositor->config,
                                            "shell", NULL, NULL);
+       asprintf(&client, "%s/%s", weston_config_get_libexec_dir(),
+                                  WESTON_SHELL_CLIENT);
        weston_config_section_get_string(section,
-                                        "client", &s, LIBEXECDIR "/" WESTON_SHELL_CLIENT);
+                                        "client", &s, client);
+       free(client);
        shell->client = s;
        weston_config_section_get_string(section,
                                         "binding-modifier", &s, "super");
index 8defbbb..4542ca6 100644 (file)
@@ -282,6 +282,18 @@ weston_config_section_get_bool(struct weston_config_section *section,
        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 *
 config_add_section(struct weston_config *config, const char *name)
 {
index 745562b..1ecc8cc 100644 (file)
@@ -92,6 +92,9 @@ int
 weston_config_section_get_bool(struct weston_config_section *section,
                               const char *key,
                               int *value, int default_value);
+const char *
+weston_config_get_libexec_dir(void);
+
 struct weston_config *
 weston_config_parse(const char *name);
 
index 4403933..af2c754 100644 (file)
@@ -286,12 +286,16 @@ screenshooter_binding(struct weston_seat *seat, uint32_t time, uint32_t key,
                      void *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)
                shooter->client = weston_client_launch(shooter->ec,
                                        &shooter->process,
                                        screenshooter_exe, screenshooter_sigchld);
+       free(screenshooter_exe);
 }
 
 struct weston_recorder {
index 1d549d4..7d2a064 100644 (file)
@@ -937,12 +937,16 @@ static void
 text_backend_configuration(struct text_backend *text_backend)
 {
        struct weston_config_section *section;
+       char *client;
 
        section = weston_config_get_section(text_backend->compositor->config,
                                            "input-method", NULL, NULL);
+       asprintf(&client, "%s/weston-keyboard",
+                weston_config_get_libexec_dir());
        weston_config_section_get_string(section, "path",
                                         &text_backend->input_method.path,
-                                        LIBEXECDIR "/weston-keyboard");
+                                        client);
+       free(client);
 }
 
 static void
index 473e092..e332354 100755 (executable)
@@ -28,6 +28,7 @@ XWAYLAND_PLUGIN=$abs_builddir/.libs/xwayland.so
 
 case $TESTNAME in
        *.la|*.so)
+               WESTON_BUILD_DIR=$abs_builddir \
                $WESTON --backend=$BACKEND \
                        --no-config \
                        --shell=$SHELL_PLUGIN \
@@ -37,6 +38,7 @@ case $TESTNAME in
                        &> "$OUTLOG"
                ;;
        *)
+               WESTON_BUILD_DIR=$abs_builddir \
                WESTON_TEST_CLIENT_PATH=$abs_builddir/$TESTNAME $WESTON \
                        --socket=test-$(basename $TESTNAME) \
                        --backend=$BACKEND \