Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
794dba43
Commit
794dba43
authored
Aug 25, 2006
by
mkindahl@production.mysql.com[mkindahl]
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mytap-changes.patch
parent
317bc36f
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
81 additions
and
12 deletions
+81
-12
unittest/Makefile.am
unittest/Makefile.am
+3
-4
unittest/README.txt
unittest/README.txt
+6
-1
unittest/examples/Makefile.am
unittest/examples/Makefile.am
+1
-1
unittest/mytap/tap.c
unittest/mytap/tap.c
+48
-2
unittest/mytap/tap.h
unittest/mytap/tap.h
+23
-4
No files found.
unittest/Makefile.am
View file @
794dba43
...
...
@@ -6,10 +6,9 @@ CLEANFILES = unit
unittests
=
mytap mysys
test
:
unit
./unit
run
$(unittests)
test
:
perl unit.pl
run
$(unittests)
unit
:
$(srcdir)/unit.pl
cp
$(srcdir)
/unit.pl
$@
chmod
700
$@
install
$(srcdir)
/unit.pl
$@
unittest/README.txt
View file @
794dba43
...
...
@@ -9,7 +9,9 @@ mytap Source for the MyTAP library
mysys Tests for mysys components
bitmap-t.c Unit test for MY_BITMAP
base64-t.c Unit test for base64 encoding functions
examples Example unit tests
examples Example unit tests.
core-t.c Example of raising a signal in the middle of the test
THIS TEST WILL STOP ALL FURTHER TESTING!
simple-t.c Example of a standard TAP unit test
skip-t.c Example where some test points are skipped
skip_all-t.c Example of a test where the entire test is skipped
...
...
@@ -24,6 +26,9 @@ To make and execute all unit tests in the directory:
make test
Observe that the tests in the examples/ directory are just various
examples of tests and are not expected to pass.
Adding unit tests
-----------------
...
...
unittest/examples/Makefile.am
View file @
794dba43
...
...
@@ -5,5 +5,5 @@ AM_LDFLAGS = -L$(top_builddir)/unittest/mytap
LDADD
=
-lmytap
noinst_PROGRAMS
=
simple-t skip-t todo-t skip_all-t no_plan-t
noinst_PROGRAMS
=
simple-t skip-t todo-t skip_all-t no_plan-t
core-t
unittest/mytap/tap.c
View file @
794dba43
...
...
@@ -20,10 +20,13 @@
#include "tap.h"
#include "my_config.h"
#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
#include <signal.h>
/**
Test data structure.
...
...
@@ -70,7 +73,7 @@ emit_tap(int pass, char const *fmt, va_list ap)
/**
Emit a TAP directive.
TAP directives are comments after
a have the form
TAP directives are comments after
that have the form:
@code
ok 1 # skip reason for skipping
...
...
@@ -96,6 +99,25 @@ emit_endl()
fprintf
(
tapout
,
"
\n
"
);
}
static
void
handle_core_signal
(
int
signo
)
{
BAIL_OUT
(
"Signal %d thrown"
,
signo
);
}
void
BAIL_OUT
(
char
const
*
fmt
,
...)
{
va_list
ap
;
va_start
(
ap
,
fmt
);
fprintf
(
tapout
,
"Bail out! "
);
vfprintf
(
tapout
,
fmt
,
ap
);
emit_endl
();
va_end
(
ap
);
exit
(
255
);
}
void
diag
(
char
const
*
fmt
,
...)
{
...
...
@@ -103,14 +125,38 @@ diag(char const *fmt, ...)
va_start
(
ap
,
fmt
);
fprintf
(
tapout
,
"# "
);
vfprintf
(
tapout
,
fmt
,
ap
);
fprintf
(
tapout
,
"
\n
"
);
emit_endl
(
);
va_end
(
ap
);
}
typedef
struct
signal_entry
{
int
signo
;
void
(
*
handler
)(
int
);
}
signal_entry
;
static
signal_entry
install_signal
[]
=
{
{
SIGQUIT
,
handle_core_signal
},
{
SIGILL
,
handle_core_signal
},
{
SIGABRT
,
handle_core_signal
},
{
SIGFPE
,
handle_core_signal
},
{
SIGSEGV
,
handle_core_signal
},
{
SIGBUS
,
handle_core_signal
},
{
SIGXCPU
,
handle_core_signal
},
{
SIGXFSZ
,
handle_core_signal
},
{
SIGSYS
,
handle_core_signal
},
{
SIGTRAP
,
handle_core_signal
}
};
void
plan
(
int
const
count
)
{
/*
Install signal handler
*/
size_t
i
;
for
(
i
=
0
;
i
<
sizeof
(
install_signal
)
/
sizeof
(
*
install_signal
);
++
i
)
signal
(
install_signal
[
i
].
signo
,
install_signal
[
i
].
handler
);
g_test
.
plan
=
count
;
switch
(
count
)
{
...
...
unittest/mytap/tap.h
View file @
794dba43
...
...
@@ -21,8 +21,6 @@
#ifndef TAP_H
#define TAP_H
#include "my_global.h"
/*
@defgroup MyTAP MySQL support for performing unit tests according to TAP.
...
...
@@ -67,6 +65,10 @@ extern "C" {
it was called with <code>NO_PLAN</code>, i.e., the test plan will
be printed after all the test lines.
The plan() function will install signal handlers for all signals
that generate a core, so if you want to override these signals, do
it <em>after</em> you have called the plan() function.
@param count The planned number of tests to run.
*/
void
plan
(
int
count
);
...
...
@@ -130,10 +132,9 @@ void skip(int how_many, char const *reason, ...)
for (i = 0 ; i < 2 ; ++i)
ok(duck[i] == paddling, "is duck %d paddling?", i);
}
@endcode
@see skip
@endcode
*/
#define SKIP_BLOCK_IF(SKIP_IF_TRUE, COUNT, REASON) \
if (SKIP_IF_TRUE) skip((COUNT),(REASON)); else
...
...
@@ -146,6 +147,24 @@ void skip(int how_many, char const *reason, ...)
void
diag
(
char
const
*
fmt
,
...)
__attribute__
((
format
(
printf
,
1
,
2
)));
/**
Print a bail out message.
A bail out message can be issued when no further testing can be
done, e.g., when there are missing dependencies.
The test will exit with status 255. This function does not return.
@note A bail out message is printed if a signal that generates a
core is raised.
@param fmt Bail out message in printf() format.
*/
void
BAIL_OUT
(
char
const
*
fmt
,
...)
__attribute__
((
noreturn
,
format
(
printf
,
1
,
2
)));
/**
Print summary report and return exit status.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment