[cairo] cairowrap for unit testing [feedback]
britten at caris.com
Tue May 26 09:08:21 PDT 2009
Based on a recent discussion about unit-testing my Cairo code, I
as a possible tool for writing unit tests. Here are my findings...
Although it's an interesting approach, the current version has a
couple of issues that are going to prevent it from being used (by me)
as a viable tool for unit testing. I'll summarize the issues I
found here (In no particular order) in case anyone is planning to do
any work on it...
- What is its future (and license)? I wouldn't want to commit to
using something that is becoming abandonware... If it's actively
maintained, will it ever be part of the mainstream Cairo releases?
- Minor compiler error:
/usr/bin/ld: libcairowrap.o: relocation R_X86_64_32 against `a
local symbol' can not be used when making a shared object;
recompile with -fPIC
As it says, -fPIC is needed in CFLAGS
- As an LD_PRELOAD, I'm suspecting it doesn't work on Windows. I
need a way to write tests that are cross-platform.
- Currently, the callbacks just printf() their information, making
capture of that output difficult. An ideal (C++) approach would
be to write to a configurable std::stream - Not sure of the best
- A lot of the output consists of pointer addresses. Since these
will vary between architectures (32/64 bit) and platforms
(Linux/Windows), it won't be possible to capture the output on
a testing platform and compare it against a single (platform
independent) master version of the output.
- Since the LD_PRELOAD intercepts *ALL* Cairo calls (globally), it's
difficult to separate out my Cairo calls from those being done by
foreign parts of the system (eg: GTK uses Cairo too). This
probably isn't an issue for discrete unit tests, but trying to use
cairowrap within a GUI app (For ad-hoc testing), is overwhelming.
Please don't take this as criticism of cairowrap - It is what it is,
and fulfils its current purpose well. I'm only pointing out some
things to possibly consider in the future, if any future work is
to be done on this tool (Esp. if it's seen as a possible tool for
Now, I'm going to poke into cairo-trace some...
Keep up the great work!
More information about the cairo