[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Test results as XML files

Hello James

You may be able to make your code work with cmocka in both environments using various pre-processor controls. Here is an article that includes testing problems and the the preprocessor controls that can be used to solve those problems. I am not sure if these really apply to both your issues or not. It probably could help with the typedef problem. I consider the pre-processor the last tool to use when getting code into a unit test harness. But sometimes it is the only option where you do not need to change the code under test.

Something we did with CppUTest, another open source test harness I contribute to, is to separate system dependent code. The makefile would choose the appropriate platform files to build depending on the platform. We have a PlatformSpecific.cpp file that would provide system dependent functions.


James Grenning - Author of TDD for Embedded C - pragprog.com/titles/jgade/
[![wingman software](http://www.wingman-sw.com/images/wingman.png)](http://wingman-sw.com)
On 9 Feb 2015, at 3:54, James.Munns@xxxxxxxxxxxxx wrote:

Hey Andreas, a couple of comments. The background for this is that I am
running tests using both GCC (for CI) as well as using an embedded
compiler compiling to a simulator target (for the sake of developers using the same IDE as primary development). This may not be within the scope of
your development, but may be useful to other users, portability wise.

CMocka seems to make some assumptions at compile time, more or less that
the target environment is Unix-like/GCC compiled or Windows-like/VS
compiled. This breaks compilation for me in a couple ways.

1: My embedded compiler defines some, but not all of the exception signals
in the array in cmocka.c:281. This is not new to cMocka 1.0, for now I
have added in a compiler flag to change the definition of this array. It would be nice to have an option to be blind of exceptions at compile time
(sort of like 'handle_exceptions', but at compile time rather than

2: I had some problems with the 'uintptr_t' logic in cmocka.h:101.
Probably nothing unique about that type, except that it was defined in
another header file. Unfortunately I have no way of "informing" cmocka.h
about my other 'stdint.h' file, and a re-def of uintptr_t makes the
compiler sad. Again, this is not new to cMocka 1.0. It might be nice to have some sort of user defined includes? Something like the following at
the top of the headers?:

 #include "cmocka_user_includes.h"

3. This one actually is new to cMocka 1.0. My compiler defines time.h, but does not define the struct 'timespec'. Similar to my exceptions comment,
there is some handling for targets not supporting test timing, however
this is not completely transparent at compile time. I could fill in the
definition of timespec, however I dont really have any way of letting
cmocka.c know where to find it (modifying my compiler's time.h is not an option). It would be nice to have a compiler flag to completely exclude
the timing component.

Up to now I've just fixed items 1 and 2 in little hacks of the file that
are "good enough" for my compiler, though likely not very useful or
portable. It would be nice to see these supported in mainline development,
if you have any ideas.

Please let me know if you have any questions, would like these filed as tickets for addressing later, or have any changes you would like me to try


From:   Andreas Schneider <asn@xxxxxxxxxxxxxx>
To:     cmocka@xxxxxxxxxxxxxx,
Cc:     James.Munns@xxxxxxxxxxxxx
Date:   06.02.2015 13:04
Subject:        Re: Test results as XML files

On Friday 06 February 2015 12:58:07 Andreas Schneider wrote:
On Friday 06 February 2015 11:39:59 James.Munns@xxxxxxxxxxxxx wrote:


Will the source be pushed anywhere before the 1.0 release? I'd love to
test it out on my environment.

the source code is available here:


Please let us know if it works for you. Suggestions and patches are
welcome ;)

MSA Technologies and Enterprise Services GmbH
Firmensitz (Registered Headquarter): Thiemannstr. 1, 12059 Berlin
Ust.-ID: DE 237 346 046
Registergericht (Register Court): Amtsgericht Berlin-Charlottenburg Nr.93, HRB 92728 B Geschäftsführer (Managing Director): Richard W. Roda, Kenneth D. Krause, Steven C. Blanco

Re: Test results as XML filesJames.Munns@xxxxxxxxxxxxx
Re: Test results as XML filesJames.Munns@xxxxxxxxxxxxx
Re: Test results as XML filesAndreas Schneider <asn@xxxxxxxxxxxxxx>
Re: Test results as XML filesAndreas Schneider <asn@xxxxxxxxxxxxxx>
Re: Test results as XML filesJames.Munns@xxxxxxxxxxxxx