Add run-js-test executable to run tests

ST makes use of GTK+ for input methods and for icon themes; therefore
we have need to initialize GTK+ in order to test these parts of Clutter.

Instead of LD_PRELOADING our module, use a separately compiled executable
that links to the UI components in GNOME Shell, initializes Clutter and
GTK+ and hooks them together.

Getting all the symbols from St and the GUI components exported for
use via GJS requires a bit of contortion: we need to actually link the
St convenience library into a shared library and link the executable
to that since there is no way with libtool to take a convenience library
and put all its symbols into an executable --whole-archive style.

https://bugzilla.gnome.org/show_bug.cgi?id=633657
This commit is contained in:
Owen W. Taylor
2010-10-31 15:28:06 -04:00
parent 86f3a637f1
commit c98103ffc8
6 changed files with 182 additions and 6 deletions

View File

@ -11,7 +11,7 @@ debug=
for arg in $@ ; do
case $arg in
-g|--debug)
debug="gdb --args"
debug="libtool --mode=execute gdb --args"
;;
-v|--verbose)
verbose=true
@ -34,15 +34,14 @@ GI_TYPELIB_PATH="@MUTTER_LIB_DIR@/mutter:$builddir/../src"
GJS_DEBUG_OUTPUT=stderr
$verbose || GJS_DEBUG_TOPICS="JS ERROR;JS LOG"
GNOME_SHELL_TESTSDIR="$srcdir/"
LD_PRELOAD="$builddir/../src/.libs/libgnome-shell.so"
export GI_TYPELIB_PATH GJS_DEBUG_OUTPUT GJS_DEBUG_TOPICS GNOME_SHELL_JS GNOME_SHELL_TESTSDIR LD_PRELOAD
gjs_args=
run_js_test_args=
for i in $srcdir $srcdir/../js @GJS_JS_DIR@ @GJS_JS_NATIVE_DIR@ ; do
gjs_args="$gjs_args -I $i"
run_js_test_args="$run_js_test_args -I $i"
done
for test in $tests ; do
$debug gjs-console $gjs_args $test || exit $?
$debug $builddir/../src/run-js-test $run_js_test_args $test || exit $?
done

View File

@ -8,7 +8,6 @@ const Shell = imports.gi.Shell;
const Environment = imports.ui.environment;
function init() {
Clutter.init(null, null);
Environment.init();
let stage = Clutter.Stage.get_default();