1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-04-27 16:51:06 -07:00
emacs/mps/test
2016-09-07 10:20:39 +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 The awl pool contains only weak references to objects that died, so the mps may be able to deduce (via its summary) that it does not need to be condemned, even to collect the world. 2016-09-07 10:20:39 +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 Job003889 was fixed, so conerr/12.c passes. 2016-09-05 23:45:20 +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/