MPS issue job003997

TitleCan't run MMQA test suite on Windows
Statusclosed
Priorityoptional
Assigned userGareth Rees
OrganizationRavenbrook
DescriptionThe MMQA test suite checks a lot of error cases, but can't currently be run on Windows. We'd like to have it as part of our pre-release test procedure.
AnalysisThe suite has quite a Unix-ish structure, but it might be possible to run it using Cygwin, for example. We would have to ensure that the MPS we are testing is compiled using the supported toolchain, though, not Cygwin.
How foundinspection
Evidencenmake /f w3i6mv.nmk mmqa
Created byRichard Brooksby
Created on2016-04-05 12:44:46
Last modified byGareth Rees
Last modified on2016-04-22 15:00:27
History2016-04-05 RB Created.

Fixes

Change Effect Date User Description
191564 closed 2016-04-22 15:00:27 Gareth Rees Get the MMQA test system working on Windows. In detail:
1. Document how to run it on Windows from a Cygwin shell.
2. Ignore trailing spaces when analyzing test output.
3. Use the directory separator "/" since we're running under Cygwin.
4. No need for cat.exe, strings.exe, or tee.exe (these are supplied by Cygwin).
5. Microsoft Visual C/C++ needs /D_CRT_SECURE_NO_WARNINGS to avoid a warning about scanf.
6. The Microsoft Visual C/C++ linker no longer takes the options /debugtype:both or /debug:full. Replace with /debug.
7. Remove /pdb:none option (we want the PDB so that we can debug the result).
8. windows.h defines an UNALIGNED macro, so need to #undef it.
9. The long int type is 32 bits on 64-bit Windows, so we need size_t instead.
10. The values in the LPEXCEPTION_RECORD structure have type ULONG_PTR.
11. Test cases are expecting access violations to report abort=true, but on Windows they are caught by the exception handler, so report abort=true in this case.
12. mpsw3.h has gone, but we do need mpswin.h.

Fix some of the test cases:
1. Avoid compiler warning about overflowed multiplication in argerr/153.c.
2. In conerr/2.c, conerr/8.c and conerr/13.c, malloc enough space so that the signature check doesn't cause an access violation.
3. In conerr/25.c, allocate an object whose size is aligned to the platform alignment, which is 16 bytes on w3i6mv.
4. In connerr/18.c, conerr/53.c and conerr/54.c, update the location and text of the expected assertions.