Add a test for the kernel snprintf.
This commit is contained in:
parent
947906bba8
commit
408524dea5
@ -1,4 +1,4 @@
|
||||
# $NetBSD: Makefile,v 1.21 2011/10/15 07:00:49 jruoho Exp $
|
||||
# $NetBSD: Makefile,v 1.22 2011/11/24 01:46:40 christos Exp $
|
||||
|
||||
NOMAN= # defined
|
||||
|
||||
@ -14,6 +14,7 @@ TESTS_C+= t_pty
|
||||
TESTS_C+= t_rnd
|
||||
TESTS_C+= t_extattrctl
|
||||
TESTS_C+= t_filedesc
|
||||
TESTS_C+= t_subr_prf
|
||||
|
||||
TESTS_SH= t_umount
|
||||
TESTS_SH+= t_ps_strings
|
||||
@ -23,7 +24,7 @@ PROGS= h_ps_strings1
|
||||
PROGS+= h_ps_strings2
|
||||
|
||||
LDADD.t_rnd+= -lrumpvfs -lrumpdev_rnd -lrumpdev -lrump -lrumpuser -lpthread
|
||||
LDADD.t_filedesc+= -lrumpvfs -lrumpdev_rnd -lrumpdev -lrump -lrumpuser -lpthread
|
||||
LDADD.t_filedesc+= ${LDADD.t_rnd}
|
||||
LDADD.t_extattrctl+= -lrumpvfs -lrump -lrumpuser -lpthread
|
||||
|
||||
.PATH: ${NETBSDSRCDIR}/sys/kern
|
||||
@ -32,4 +33,9 @@ SRCS.t_extent= t_extent.c subr_extent.c
|
||||
CPPFLAGS.t_extent.c= -D_EXTENT_TESTING -D__POOL_EXPOSE
|
||||
CPPFLAGS.subr_extent.c= -D_EXTENT_TESTING -D__POOL_EXPOSE
|
||||
|
||||
t_subr_prf.c: gen_t_subr_prf ${NETBSDSRCDIR}/sys/kern/subr_prf.c
|
||||
${HOST_SH} ${.ALLSRC} ${.TARGET}
|
||||
|
||||
CLEANFILES+= t_subr_prf.c
|
||||
|
||||
.include <bsd.test.mk>
|
||||
|
118
tests/kernel/gen_t_subr_prf
Executable file
118
tests/kernel/gen_t_subr_prf
Executable file
@ -0,0 +1,118 @@
|
||||
#!/bin/sh
|
||||
|
||||
cat << _EOF > $2
|
||||
#include <sys/types.h>
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <atf-c.h>
|
||||
|
||||
#define KPRINTF_BUFSIZE 1024
|
||||
#undef putchar
|
||||
#define putchar xputchar
|
||||
static int putchar(char c, int foo, void *b)
|
||||
{
|
||||
return fputc(c, stderr);
|
||||
}
|
||||
|
||||
#define TOBUFONLY 1
|
||||
static const char HEXDIGITS[] = "0123456789ABCDEF";
|
||||
static const char hexdigits[] = "0123456789abcdef";
|
||||
|
||||
typedef int device_t;
|
||||
|
||||
#define device_xname(a) ""
|
||||
int kprintf(const char *, int, void *, char *, va_list);
|
||||
void device_printf(device_t, const char *, ...);
|
||||
|
||||
static void
|
||||
empty(void)
|
||||
{
|
||||
}
|
||||
|
||||
static void (*v_flush)(void) = empty;
|
||||
|
||||
ATF_TC(snprintf_print);
|
||||
ATF_TC_HEAD(snprintf_print, tc)
|
||||
{
|
||||
atf_tc_set_md_var(tc, "descr", "checks snprintf print");
|
||||
}
|
||||
|
||||
ATF_TC_BODY(snprintf_print, tc)
|
||||
{
|
||||
char buf[10];
|
||||
int i;
|
||||
|
||||
memset(buf, 'x', sizeof(buf));
|
||||
i = snprintf(buf, sizeof(buf), "number %d", 10);
|
||||
ATF_CHECK_EQ(i, 9);
|
||||
ATF_CHECK_STREQ(buf, "number 10");
|
||||
}
|
||||
|
||||
ATF_TC(snprintf_print_overflow);
|
||||
ATF_TC_HEAD(snprintf_print_overflow, tc)
|
||||
{
|
||||
atf_tc_set_md_var(tc, "descr", "checks snprintf print with overflow");
|
||||
}
|
||||
|
||||
ATF_TC_BODY(snprintf_print_overflow, tc)
|
||||
{
|
||||
char buf[10];
|
||||
int i;
|
||||
|
||||
memset(buf, 'x', sizeof(buf));
|
||||
i = snprintf(buf, sizeof(buf), "fjsdfsdjfsdf %d\n", 10);
|
||||
ATF_CHECK_EQ(i, 16);
|
||||
ATF_CHECK_STREQ(buf, "fjsdfsdjf");
|
||||
}
|
||||
|
||||
ATF_TC(snprintf_count);
|
||||
ATF_TC_HEAD(snprintf_count, tc)
|
||||
{
|
||||
atf_tc_set_md_var(tc, "descr", "checks snprintf count");
|
||||
}
|
||||
|
||||
ATF_TC_BODY(snprintf_count, tc)
|
||||
{
|
||||
int i;
|
||||
|
||||
i = snprintf(NULL, 20, "number %d", 10);
|
||||
ATF_CHECK_EQ(i, 9);
|
||||
}
|
||||
|
||||
ATF_TC(snprintf_count_overflow);
|
||||
ATF_TC_HEAD(snprintf_count_overflow, tc)
|
||||
{
|
||||
atf_tc_set_md_var(tc, "descr", "checks snprintf count with overflow");
|
||||
}
|
||||
|
||||
ATF_TC_BODY(snprintf_count_overflow, tc)
|
||||
{
|
||||
int i;
|
||||
|
||||
i = snprintf(NULL, 10, "fjsdfsdjfsdf %d\n", 10);
|
||||
ATF_CHECK_EQ(i, 16);
|
||||
}
|
||||
|
||||
ATF_TP_ADD_TCS(tp)
|
||||
{
|
||||
ATF_TP_ADD_TC(tp, snprintf_print);
|
||||
ATF_TP_ADD_TC(tp, snprintf_print_overflow);
|
||||
ATF_TP_ADD_TC(tp, snprintf_count);
|
||||
ATF_TP_ADD_TC(tp, snprintf_count_overflow);
|
||||
|
||||
return atf_no_error();
|
||||
}
|
||||
_EOF
|
||||
|
||||
awk '
|
||||
/^snprintf\(/ {
|
||||
print prevline
|
||||
out = 1
|
||||
}
|
||||
{
|
||||
if (out) print
|
||||
else prevline = $0
|
||||
}' $1 >>$2
|
Loading…
Reference in New Issue
Block a user