Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions tests/verbose_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,19 @@ def test_simple_successful_ensure(self):

Run 1 test with 0 failures and 0 segfaults in SECONDS""")

def test_simple_successful_silent_ensure(self):
self.assertNoDiff("""\
#include "thc.h"
void one_should_equal_to_one() {
SILENT_ENSURE(1 == 1);
}
int main() {
thc_addtest(one_should_equal_to_one);
return thc_run(THC_VERBOSE);
}
""",
"""Run 1 test with 0 failures and 0 segfaults in SECONDS""")

def test_simple_unsuccessful_ensure(self):
self.assertNoDiff("""\
#include "thc.h"
Expand Down
22 changes: 11 additions & 11 deletions thc.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,27 +24,27 @@ PRIVATE long nfailures = 0;
PRIVATE long nsegfaults = 0;
PRIVATE void (*tests[THC_MAX_TESTS])(void);

PRIVATE void thc_add_success(const char *expr, const char *func, const char *filename, const int fileno);
PRIVATE void thc_add_failure(const char *expr, const char *func, const char *filename, const int fileno);
PRIVATE void thc_add_success(const char *expr, const char *func, const char *filename, const int fileno, const int silent);
PRIVATE void thc_add_failure(const char *expr, const char *func, const char *filename, const int fileno, const int silent);
PRIVATE void thc_report_tests(void);

PRIVATE void thc_calc_time(struct timeval start, struct timeval stop, double *time_elapsed){
*time_elapsed = stop.tv_sec - start.tv_sec + (stop.tv_usec - start.tv_usec)/1000000.0;
}


PRIVATE void thc_add_success(const char *expr, const char *func, const char *filename, const int fileno) {
if (verbose_tests) {
PRIVATE void thc_add_success(const char *expr, const char *func, const char *filename, const int fileno, const int silent) {
if (verbose_tests && !silent) {
printf("%s%s ... OK %s[%s, %s:%d]\n", GREEN, expr, STOPCOLOR, func, filename, fileno);
} else {
} else if (!silent) {
printf(".");
}
}

PRIVATE void thc_add_failure(const char *expr, const char *func, const char *filename, const int fileno) {
if (verbose_tests) {
PRIVATE void thc_add_failure(const char *expr, const char *func, const char *filename, const int fileno, const int silent) {
if (verbose_tests && !silent) {
printf("%s%s ... FAIL %s[%s, %s:%d]\n", RED, expr, STOPCOLOR, func, filename, fileno);
} else {
} else if (!silent) {
printf("F");
}
nfailures++;
Expand All @@ -64,11 +64,11 @@ PRIVATE void thc_report_tests(void) {
time_elapsed, STOPCOLOR);
}

PUBLIC void thc_run_check(const int result, const char *expr, const char *func, const char *fname, const int fline) {
PUBLIC void thc_run_check(const int result, const char *expr, const char *func, const char *fname, const int fline, const int silent) {
if (result) {
thc_add_success(expr, func, fname, fline);
thc_add_success(expr, func, fname, fline, silent);
} else {
thc_add_failure(expr, func, fname, fline);
thc_add_failure(expr, func, fname, fline, silent);
}
}

Expand Down
5 changes: 3 additions & 2 deletions thc.h
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
#ifndef _THC_INCLUDE
#define _THC_INCLUDE

#define ENSURE(expr) thc_run_check((expr), #expr, __func__, __FILE__, __LINE__)
#define ENSURE(expr) thc_run_check((expr), #expr, __func__, __FILE__, __LINE__, 0)
#define SILENT_ENSURE(expr) thc_run_check((expr), #expr, __func__, __FILE__, __LINE__, 1)

enum {
THC_QUIET = 0x1, /* 0001 */
THC_VERBOSE = 0x2, /* 0010 */
THC_NOFORK = 0x4, /* 0100 */
};

void thc_run_check(const int result, const char *expr, const char *func, const char *fname, const int fline);
void thc_run_check(const int result, const char *expr, const char *func, const char *fname, const int fline, const int silent);
void thc_addtest(void (*f)(void));
int thc_run(int verbose);

Expand Down