1#!/bin/sh
2
3# Auto generate single AllTests file for CuTest.
4# Searches through all *.c files in the current directory.
5# Prints to stdout.
6# Author: Asim Jalis
7# Date: 01/08/2003
8
9# Modified to return non-zero if any test has failed
10# Rainer Wichmann, 29. Jan 2006
11# ...and to print to stderr if any test has failed
12# Rainer Wichmann, 31. Jan 2006
13
14if test $# -eq 0 ; then FILES=*.c ; else FILES=$* ; fi
15
16echo '
17
18/* This is auto-generated code. Edit at your own peril. */
19
20#include "config.h"
21#include <stdio.h>
22#include "CuTest.h"
23'
24
25cat $FILES | grep '^void Test' |
26    sed -e 's/(.*$//' \
27        -e 's/$/(CuTest*);/' \
28        -e 's/^/extern /'
29
30echo \
31'
32
33int RunAllTests(void)
34{
35    CuString *output = CuStringNew();
36    CuSuite* suite = CuSuiteNew();
37
38'
39cat $FILES | grep '^void Test' |
40    sed -e 's/^void //' \
41        -e 's/(.*$//' \
42        -e 's/^/    SUITE_ADD_TEST(suite, /' \
43        -e 's/$/);/'
44
45echo \
46'
47    CuSuiteRun(suite);
48    CuSuiteSummary(suite, output);
49    CuSuiteDetails(suite, output);
50    if (suite->failCount > 0)
51      fprintf(stderr, "%s%c", output->buffer, 0x0A);
52    else
53      fprintf(stdout, "%s%c", output->buffer, 0x0A);
54    return suite->failCount;
55}
56
57int main(void)
58{
59#if !defined(USE_SYSTEM_MALLOC)
60    typedef void assert_handler_tp(const char * error, const char *file, int line);
61    extern assert_handler_tp *dnmalloc_set_handler(assert_handler_tp *new);
62    extern void safe_fatal  (const char * details, const char *f, int l);
63#endif
64#if !defined(USE_SYSTEM_MALLOC) && defined(USE_MALLOC_LOCK)
65    extern int dnmalloc_pthread_init(void);
66    dnmalloc_pthread_init();
67#endif
68#if !defined(USE_SYSTEM_MALLOC)
69    (void) dnmalloc_set_handler(safe_fatal);
70#endif
71    int retval;
72    retval = RunAllTests();
73    return (retval == 0) ? 0 : 1;
74}
75'
76