1
0
mirror of https://gitlab.xiph.org/xiph/icecast-server.git synced 2024-12-04 14:46:30 -05:00

Feature: Added a basic test suite for testing parts of the C code

This commit is contained in:
Philipp Schafft 2018-07-27 13:02:09 +00:00
parent 1d4ce33c1b
commit 9134c5553b
4 changed files with 118 additions and 1 deletions

View File

@ -5,10 +5,16 @@ TEST_LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) \
TESTS = \ TESTS = \
startup.test \ startup.test \
admin.test admin.test \
ctest_suite.test
EXTRA_DIST = $(TESTS) EXTRA_DIST = $(TESTS)
EXTRA_DIST += \ EXTRA_DIST += \
icecast.xml \ icecast.xml \
on-connect.sh on-connect.sh
check_PROGRAMS = ctest_suite.test
noinst_HEADERS = ctest_lib.h
ctest_suite_test_SOURCES=ctest_suite.c ctest_lib.c

71
tests/ctest_lib.c Normal file
View File

@ -0,0 +1,71 @@
/* Icecast
*
* This program is distributed under the GNU General Public License, version 2.
* A copy of this license is included with this source.
*
* Copyright 2018, Philipp "ph3-der-loewe" Schafft <lion@lion.leolix.org>,
*/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdio.h>
#include "ctest_lib.h"
static size_t ctest_g_test_num;
static int ctest_g_bailed_out;
void ctest_init(void)
{
ctest_g_test_num = 0;
ctest_g_bailed_out = 0;
}
void ctest_fin(void)
{
printf("1..%zu\n", ctest_g_test_num);
}
void ctest_test(const char *desc, int res)
{
const char *prefix = NULL;
if (ctest_bailed_out())
return;
ctest_g_test_num++;
if (res) {
prefix = "ok";
} else {
prefix = "not ok";
}
if (desc) {
printf("%s %zu %s\n", prefix, ctest_g_test_num, desc);
} else {
printf("%s %zu\n", prefix, ctest_g_test_num);
}
}
void ctest_diagnostic(const char *line)
{
printf("# %s\n", line);
}
void ctest_bail_out(const char *reason)
{
ctest_g_bailed_out = 1;
if (reason) {
printf("Bail out! %s\n", reason);
} else {
printf("Bail out!\n");
}
}
int ctest_bailed_out(void)
{
return ctest_g_bailed_out;
}

20
tests/ctest_lib.h Normal file
View File

@ -0,0 +1,20 @@
/* Icecast
*
* This program is distributed under the GNU General Public License, version 2.
* A copy of this license is included with this source.
*
* Copyright 2014, Philipp "ph3-der-loewe" Schafft <lion@lion.leolix.org>,
*/
#ifndef __CTEST_LIB_H__
#define __CTEST_LIB_H__
void ctest_init(void);
void ctest_fin(void);
void ctest_test(const char *desc, int res);
void ctest_diagnostic(const char *line);
void ctest_bail_out(const char *reason);
int ctest_bailed_out(void);
#endif

20
tests/ctest_suite.c Normal file
View File

@ -0,0 +1,20 @@
/* Icecast
*
* This program is distributed under the GNU General Public License, version 2.
* A copy of this license is included with this source.
*
* Copyright 2018, Philipp "ph3-der-loewe" Schafft <lion@lion.leolix.org>,
*/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "ctest_lib.h"
int main (void) {
ctest_init();
ctest_test("suite working", 1);
ctest_fin();
return 0;
}