the Compartmented Robust Posix C++ Unit Test system |
|
---|
The minimum requirement for installing and using crpcut is a modern C++ compiler, a highly POSIX compliant operating system and CMake. The short version is that any modern Linux will do fine.
In addition to the minimum, you are encouraged to build on a machine with valgrind and Ruby.
Your C++ compiler must support:
Variadic macros are required by C99, and are available on most C++ compilers. They are required by C++-2011.
decltype is a new keyword in C++-2011 that gives the type of an expression, similarly to how sizeof gives the size of the type of an expression. GCC has since long had another extension, typeof, which doesn't quite do the same thing, but it's close enough to work.
_Exit()
A function standardized for C99, and C++-2011. It is
similar to exit()
except that it
exits immediately, without running any at-exit handlers
or static destructors.
GCC supports these since long, and crpcut has been verified to work with versions 4.2.4, 4.3.6, 4.4.7, 4.5.5, 4.6.4, 4.7.4 and 4.8.5, 4.9.3, 5.1.0 and 5.2.0
Clang is verified to work with versions 3.6 and 3.7
alloca
()chdir
()clock_gettime
(CLOCK_MONOTONIC
)[5]clock_gettime
(CLOCK_PROCESS_CPUTIME_ID
)[6]close
()closedir
()dup2
()fork
()getcwd
()getenv
()gethostname
()getpgid
()getrusage
()iconv
()iconv_close
()iconv_open
()killpg
()mkdir
()open
()opendir
()pipe
()read
()readdir_r
()remove
[7]regcomp
(),
regexec
(),
regerror
() and
regfree
()[8]rmdir
()select
()setpgid
()signal
()waitid
()write
()[5] Otherwise,
mach_timebase_info
() and
mach_absolute_time
() will be
used.
If those too are unavailable,
setitimer
(ITIMER_REAL
)
and
getitimer
(ITIMER_REAL
)
will be used.
If even that fails,
gettimeofday
() will be
used.
[6] If unavailable,
setitimer
(ITIMER_PROF
)
and
getitimer
(ITIMER_PROF
)
will be used.
If even that fails,
setitimer
(ITIMER_VIRT
)
and
getitimer
(ITIMER_VIRT
)
will be used.
[7] A
runtime dependency that is only required when using the
WIPE_WORKING_DIR
function with either the
EXPECT_EXIT(num, action?)
or the EXPECT_SIGNAL_DEATH(signo, action?)
test case modifier.
[8] A runtime dependency that is only required when actually using the supported match functionality for regular expressions.