1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-28 08:11:05 -08:00
emacs/mps/test
Gareth Rees b7e31828db Memoryerror is only implemented on windows, so test for abort instead.
Copied from Perforce
 Change: 191575
 ServerID: perforce.ravenbrook.com
2016-04-22 17:17:53 +01:00
..
argerr Get the mmqa test system working on windows. in detail: 2016-04-22 15:00:27 +01:00
conerr Get the mmqa test system working on windows. in detail: 2016-04-22 15:00:27 +01:00
function Fix mmqa function test cases so that they run on windows. in detail: 2016-04-22 15:44:58 +01:00
misc Memoryerror is only implemented on windows, so test for abort instead. 2016-04-22 17:17:53 +01:00
test Get the mmqa test system working on windows. in detail: 2016-04-22 15:00:27 +01:00
testsets Catch-up merge from master sources to branch/2015-08-11/compact. 2016-04-11 14:40:44 +01:00
README Get the mmqa test system working on windows. in detail: 2016-04-22 15:00:27 +01:00

$Id$

This is the Memory Management QA test harness. To use it you need
perl 5 (or higher). Go "perl qa help" for help, "perl qa options"
to see what version of the harness you have (or look at the
file "test/version").


Testing on Unix
---------------

From the test directory::

    PLATFORM=lii6ll # substitute your platform
    VARIETY=cool # or hot
    CODE=../code # code directory of the branch you are testing
    make -B -C $CODE -f $PLATFORM.gmk VARIETY=$VARIETY $PLATFORM/$VARIETY/mps.o
    alias qa="perl test/qa -i $CODE -l $CODE/$PLATFORM/$VARIETY/mps.o"
    qa clib
    qa run function/5.c
    qa runset testsets/passing

Each test case is compiled in its turn to the file
``test/obj/$(uname -s)_$(uname -r)_$(uname -p)__unix/tmp_test``
so you can debug it with::

    lldb test/obj/$(uname -s)_$(uname -r)_$(uname -p)__unix/tmp_test

Or ``gdb`` instead of ``lldb``. MMQA sets its own assertion handler,
so you'll probably want to set a breakpoint on mmqa_assert_handler.


Testing on OS X
---------------

From the test directory, build mpslib.a using the Xcode project::

    xcodebuild -project ../code/mps.xcodeproj -target mps

(You can also use "make" from the project root.)  Then::

    perl test/qa -i ../code -l ../code/xc/Debug/libmps.a clib
    perl test/qa -i ../code -l ../code/xc/Debug/libmps.a run function/232.c

etc.  See "Testing on Unix" above.


Testing on Windows
------------------

In a Cygwin shell, from the test directory::

    PLATFORM=w3i6mv # substitute your platform
    VARIETY=cool # or hot
    CODE=../code # code directory of the branch you are testing
    pushd $CODE
    nmake /f $PLATFORM.nmk VARIETY=$VARIETY $PLATFORM/$VARIETY/mps.obj
    popd
    export LANG=C # avoid locale warnings from Perl.
    alias qa="perl test/qa -i $CODE -l $CODE/$PLATFORM/$VARIETY/mps.obj"
    qa clib
    qa run function/5.c
    qa runset testsets/passing

The runset command can result in this error::

    LINK : fatal error LNK1168: cannot open test/obj/nt_AMD64__pc/tmp_test.exe for writing

You may be able to avoid this by running "View Local Services" from
the Windows Control Panel, double-clicking the "Application
Experience" service, and switching "Startup type" to "Automatic". See
the documentation for LNK1168_.

.. _LNK1168: https://msdn.microsoft.com/en-us/library/hhbdtt6d.aspx

At present, the easiest way to debug a test case is to edit
test/test/script/platform and set::

    $comwrap = "vsjitdebugger \"";

But see job004020_.

.. _job004020: https://www.ravenbrook.com/project/mps/issue/job004020/