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
1848b862
Commit
1848b862
authored
Nov 17, 2009
by
Marc Alff
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Port the unit test framework to windows
Backport from 6.0.14 to 5.6.0 Original code from Guilhem Bichot
parent
3ff74fb5
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
163 additions
and
22 deletions
+163
-22
CMakeLists.txt
CMakeLists.txt
+10
-1
mysys/CMakeLists.txt
mysys/CMakeLists.txt
+3
-1
unittest/examples/CMakeLists.txt
unittest/examples/CMakeLists.txt
+38
-0
unittest/examples/core-t.c
unittest/examples/core-t.c
+1
-1
unittest/examples/no_plan-t.c
unittest/examples/no_plan-t.c
+1
-1
unittest/examples/skip_all-t.c
unittest/examples/skip_all-t.c
+1
-1
unittest/examples/todo-t.c
unittest/examples/todo-t.c
+1
-1
unittest/mytap/CMakeLists.txt
unittest/mytap/CMakeLists.txt
+21
-0
unittest/mytap/Makefile.am
unittest/mytap/Makefile.am
+3
-4
unittest/mytap/tap.c
unittest/mytap/tap.c
+25
-4
unittest/mytap/tap.h
unittest/mytap/tap.h
+45
-4
unittest/unit.pl
unittest/unit.pl
+14
-4
No files found.
CMakeLists.txt
View file @
1848b862
# Copyright (C) 2006 MySQL AB
# Copyright (C) 2006 MySQL AB
, 2009 Sun Microsystems, Inc
#
#
# This program is free software; you can redistribute it and/or modify
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# it under the terms of the GNU General Public License as published by
...
@@ -284,10 +284,16 @@ CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc.in
...
@@ -284,10 +284,16 @@ CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc.in
SET
(
ENGINE_BUILD_TYPE
"STATIC"
)
SET
(
ENGINE_BUILD_TYPE
"STATIC"
)
FOREACH
(
DIR
${
STATIC_ENGINE_DIRECTORIES
}
)
FOREACH
(
DIR
${
STATIC_ENGINE_DIRECTORIES
}
)
ADD_SUBDIRECTORY
(
${
DIR
}
)
ADD_SUBDIRECTORY
(
${
DIR
}
)
IF
(
EXISTS
${
DIR
}
/unittest
)
ADD_SUBDIRECTORY
(
${
DIR
}
/unittest
)
ENDIF
(
EXISTS
${
DIR
}
/unittest
)
ENDFOREACH
(
DIR
${
STATIC_ENGINE_DIRECTORIES
}
)
ENDFOREACH
(
DIR
${
STATIC_ENGINE_DIRECTORIES
}
)
SET
(
ENGINE_BUILD_TYPE
"DYNAMIC"
)
SET
(
ENGINE_BUILD_TYPE
"DYNAMIC"
)
FOREACH
(
DIR
${
DYNAMIC_ENGINE_DIRECTORIES
}
)
FOREACH
(
DIR
${
DYNAMIC_ENGINE_DIRECTORIES
}
)
IF
(
EXISTS
${
DIR
}
/unittest
)
ADD_SUBDIRECTORY
(
${
DIR
}
/unittest
)
ENDIF
(
EXISTS
${
DIR
}
/unittest
)
ADD_SUBDIRECTORY
(
${
DIR
}
)
ADD_SUBDIRECTORY
(
${
DIR
}
)
ENDFOREACH
(
DIR
${
DYNAMIC_ENGINE_DIRECTORIES
}
)
ENDFOREACH
(
DIR
${
DYNAMIC_ENGINE_DIRECTORIES
}
)
...
@@ -313,6 +319,9 @@ ADD_SUBDIRECTORY(sql)
...
@@ -313,6 +319,9 @@ ADD_SUBDIRECTORY(sql)
ADD_SUBDIRECTORY
(
libmysql
)
ADD_SUBDIRECTORY
(
libmysql
)
ADD_SUBDIRECTORY
(
libservices
)
ADD_SUBDIRECTORY
(
libservices
)
ADD_SUBDIRECTORY
(
tests
)
ADD_SUBDIRECTORY
(
tests
)
ADD_SUBDIRECTORY
(
unittest/mytap
)
ADD_SUBDIRECTORY
(
unittest/examples
)
ADD_SUBDIRECTORY
(
unittest/mysys
)
IF
(
WITH_EMBEDDED_SERVER
)
IF
(
WITH_EMBEDDED_SERVER
)
ADD_SUBDIRECTORY
(
libmysqld
)
ADD_SUBDIRECTORY
(
libmysqld
)
ADD_SUBDIRECTORY
(
libmysqld/examples
)
ADD_SUBDIRECTORY
(
libmysqld/examples
)
...
...
mysys/CMakeLists.txt
View file @
1848b862
...
@@ -39,7 +39,9 @@ SET(MYSYS_SOURCES array.c charset-def.c charset.c checksum.c default.c default_
...
@@ -39,7 +39,9 @@ SET(MYSYS_SOURCES array.c charset-def.c charset.c checksum.c default.c default_
my_static.c my_symlink.c my_symlink2.c my_sync.c my_thr_init.c my_wincond.c
my_static.c my_symlink.c my_symlink2.c my_sync.c my_thr_init.c my_wincond.c
my_winerr.c my_winfile.c my_windac.c my_winthread.c my_write.c ptr_cmp.c queues.c stacktrace.c
my_winerr.c my_winfile.c my_windac.c my_winthread.c my_write.c ptr_cmp.c queues.c stacktrace.c
rijndael.c safemalloc.c sha1.c string.c thr_alarm.c thr_lock.c thr_mutex.c
rijndael.c safemalloc.c sha1.c string.c thr_alarm.c thr_lock.c thr_mutex.c
thr_rwlock.c tree.c typelib.c my_vle.c base64.c my_memmem.c my_getpagesize.c
)
thr_rwlock.c tree.c typelib.c my_vle.c base64.c my_memmem.c my_getpagesize.c
lf_alloc-pin.c lf_dynarray.c lf_hash.c
my_atomic.c my_getncpus.c
)
IF
(
NOT SOURCE_SUBLIBS
)
IF
(
NOT SOURCE_SUBLIBS
)
ADD_LIBRARY
(
mysys
${
MYSYS_SOURCES
}
)
ADD_LIBRARY
(
mysys
${
MYSYS_SOURCES
}
)
...
...
unittest/examples/CMakeLists.txt
0 → 100644
View file @
1848b862
# Copyright (C) 2007 MySQL AB
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
INCLUDE_DIRECTORIES
(
${
CMAKE_SOURCE_DIR
}
/include
${
CMAKE_SOURCE_DIR
}
/zlib
${
CMAKE_SOURCE_DIR
}
/sql
${
CMAKE_SOURCE_DIR
}
/regex
${
CMAKE_SOURCE_DIR
}
/extra/yassl/include
${
CMAKE_SOURCE_DIR
}
/unittest/mytap
)
ADD_EXECUTABLE
(
simple-t simple-t.c
)
TARGET_LINK_LIBRARIES
(
simple-t mytap
)
ADD_EXECUTABLE
(
skip-t skip-t.c
)
TARGET_LINK_LIBRARIES
(
skip-t mytap
)
ADD_EXECUTABLE
(
todo-t todo-t.c
)
TARGET_LINK_LIBRARIES
(
todo-t mytap
)
ADD_EXECUTABLE
(
skip_all-t skip_all-t.c
)
TARGET_LINK_LIBRARIES
(
skip_all-t mytap
)
ADD_EXECUTABLE
(
no_plan-t no_plan-t.c
)
TARGET_LINK_LIBRARIES
(
no_plan-t mytap
)
ADD_EXECUTABLE
(
core-t core-t.c
)
TARGET_LINK_LIBRARIES
(
core-t mytap
)
unittest/examples/core-t.c
View file @
1848b862
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
along with this program; if not, write to the Free Software
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
#include
"my_config.h"
#include
<my_global.h>
#include <stdlib.h>
#include <stdlib.h>
#include <tap.h>
#include <tap.h>
...
...
unittest/examples/no_plan-t.c
View file @
1848b862
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
along with this program; if not, write to the Free Software
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
#include
"my_config.h"
#include
<my_global.h>
#include <stdlib.h>
#include <stdlib.h>
#include <tap.h>
#include <tap.h>
...
...
unittest/examples/skip_all-t.c
View file @
1848b862
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
along with this program; if not, write to the Free Software
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
#include
"my_config.h"
#include
<my_global.h>
#include <stdlib.h>
#include <stdlib.h>
#include <tap.h>
#include <tap.h>
...
...
unittest/examples/todo-t.c
View file @
1848b862
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
along with this program; if not, write to the Free Software
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
#include
"my_config.h"
#include
<my_global.h>
#include <stdlib.h>
#include <stdlib.h>
#include <tap.h>
#include <tap.h>
...
...
unittest/mytap/CMakeLists.txt
0 → 100644
View file @
1848b862
# Copyright (C) 2007 MySQL AB
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
INCLUDE_DIRECTORIES
(
${
CMAKE_SOURCE_DIR
}
/include
${
CMAKE_SOURCE_DIR
}
/zlib
${
CMAKE_SOURCE_DIR
}
/sql
${
CMAKE_SOURCE_DIR
}
/regex
${
CMAKE_SOURCE_DIR
}
/extra/yassl/include
)
ADD_LIBRARY
(
mytap tap.c
)
unittest/mytap/Makefile.am
View file @
1848b862
...
@@ -13,14 +13,13 @@
...
@@ -13,14 +13,13 @@
# along with this program; if not, write to the Free Software
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
AM_CPPFLAGS
=
-I
$(top_builddir)
/include
-I
$(top_srcdir)
/include
-I
$(srcdir)
AM_CPPFLAGS
=
-I
$(top_srcdir)
/include
noinst_LIBRARIES
=
libmytap.a
noinst_LIBRARIES
=
libmytap.a
noinst_HEADERS
=
tap.h
noinst_HEADERS
=
tap.h
libmytap_a_SOURCES
=
tap.c
libmytap_a_SOURCES
=
tap.c
SUBDIRS
=
.
t
EXTRA_DIST
=
CMakeLists.txt
# Don't update the files from bitkeeper
SUBDIRS
=
.
t
%
::
SCCS/s.%
unittest/mytap/tap.c
View file @
1848b862
...
@@ -19,7 +19,7 @@
...
@@ -19,7 +19,7 @@
#include "tap.h"
#include "tap.h"
#include "my_
config
.h"
#include "my_
global
.h"
#include <stdlib.h>
#include <stdlib.h>
#include <stdarg.h>
#include <stdarg.h>
...
@@ -27,6 +27,16 @@
...
@@ -27,6 +27,16 @@
#include <string.h>
#include <string.h>
#include <signal.h>
#include <signal.h>
/*
Visual Studio 2003 does not know vsnprintf but knows _vsnprintf.
We don't put this #define in config-win.h because we prefer
my_vsnprintf everywhere instead, except when linking with libmysys
is not desirable - the case here.
*/
#if defined(_MSC_VER) && ( _MSC_VER == 1310 )
#define vsnprintf _vsnprintf
#endif
/**
/**
@defgroup MyTAP_Internal MyTAP Internals
@defgroup MyTAP_Internal MyTAP Internals
...
@@ -150,8 +160,10 @@ static signal_entry install_signal[]= {
...
@@ -150,8 +160,10 @@ static signal_entry install_signal[]= {
{
SIGILL
,
handle_core_signal
},
{
SIGILL
,
handle_core_signal
},
{
SIGABRT
,
handle_core_signal
},
{
SIGABRT
,
handle_core_signal
},
{
SIGFPE
,
handle_core_signal
},
{
SIGFPE
,
handle_core_signal
},
{
SIGSEGV
,
handle_core_signal
},
{
SIGSEGV
,
handle_core_signal
}
{
SIGBUS
,
handle_core_signal
}
#ifdef SIGBUS
,
{
SIGBUS
,
handle_core_signal
}
#endif
#ifdef SIGXCPU
#ifdef SIGXCPU
,
{
SIGXCPU
,
handle_core_signal
}
,
{
SIGXCPU
,
handle_core_signal
}
#endif
#endif
...
@@ -166,13 +178,22 @@ static signal_entry install_signal[]= {
...
@@ -166,13 +178,22 @@ static signal_entry install_signal[]= {
#endif
#endif
};
};
int
skip_big_tests
=
1
;
void
void
plan
(
int
const
count
)
plan
(
int
const
count
)
{
{
char
*
config
=
getenv
(
"MYTAP_CONFIG"
);
size_t
i
;
if
(
config
)
skip_big_tests
=
strcmp
(
config
,
"big"
);
setvbuf
(
tapout
,
0
,
_IONBF
,
0
);
/* provide output at once */
/*
/*
Install signal handler
Install signal handler
*/
*/
size_t
i
;
for
(
i
=
0
;
i
<
sizeof
(
install_signal
)
/
sizeof
(
*
install_signal
);
++
i
)
for
(
i
=
0
;
i
<
sizeof
(
install_signal
)
/
sizeof
(
*
install_signal
);
++
i
)
signal
(
install_signal
[
i
].
signo
,
install_signal
[
i
].
handler
);
signal
(
install_signal
[
i
].
signo
,
install_signal
[
i
].
handler
);
...
...
unittest/mytap/tap.h
View file @
1848b862
...
@@ -61,6 +61,24 @@ typedef struct TEST_DATA {
...
@@ -61,6 +61,24 @@ typedef struct TEST_DATA {
extern
"C"
{
extern
"C"
{
#endif
#endif
/**
Defines whether "big" tests should be skipped.
This variable is set by plan() function unless MYTAP_CONFIG environment
variable is set to the string "big". It is supposed to be used as
@code
if (skip_big_tests) {
skip(1, "Big test skipped");
} else {
ok(life_universe_and_everything() == 42, "The answer is CORRECT");
}
@endcode
@see SKIP_BIG_TESTS
*/
extern
int
skip_big_tests
;
/**
/**
@defgroup MyTAP_API MyTAP API
@defgroup MyTAP_API MyTAP API
...
@@ -81,10 +99,15 @@ extern "C" {
...
@@ -81,10 +99,15 @@ extern "C" {
that generate a core, so if you want to override these signals, do
that generate a core, so if you want to override these signals, do
it <em>after</em> you have called the plan() function.
it <em>after</em> you have called the plan() function.
@param count The planned number of tests to run.
It will also set skip_big_tests variable if MYTAP_CONFIG environment
variable is defined.
@see skip_big_tests
@param count The planned number of tests to run.
*/
*/
void
plan
(
int
count
);
void
plan
(
int
co
nst
co
unt
);
/**
/**
...
@@ -103,7 +126,7 @@ void plan(int count);
...
@@ -103,7 +126,7 @@ void plan(int count);
which case nothing is printed.
which case nothing is printed.
*/
*/
void
ok
(
int
pass
,
char
const
*
fmt
,
...)
void
ok
(
int
const
pass
,
char
const
*
fmt
,
...)
__attribute__
((
format
(
printf
,
2
,
3
)));
__attribute__
((
format
(
printf
,
2
,
3
)));
...
@@ -135,7 +158,7 @@ void ok(int pass, char const *fmt, ...)
...
@@ -135,7 +158,7 @@ void ok(int pass, char const *fmt, ...)
@param reason A reason for skipping the tests
@param reason A reason for skipping the tests
*/
*/
void
skip
(
int
how_many
,
char
const
*
reason
,
...)
void
skip
(
int
how_many
,
char
const
*
const
reason
,
...)
__attribute__
((
format
(
printf
,
2
,
3
)));
__attribute__
((
format
(
printf
,
2
,
3
)));
...
@@ -160,6 +183,24 @@ void skip(int how_many, char const *reason, ...)
...
@@ -160,6 +183,24 @@ void skip(int how_many, char const *reason, ...)
if (SKIP_IF_TRUE) skip((COUNT),(REASON)); else
if (SKIP_IF_TRUE) skip((COUNT),(REASON)); else
/**
Helper macro to skip a group of "big" tests. It is used in the following
manner:
@code
SKIP_BIG_TESTS(1)
{
ok(life_universe_and_everything() == 42, "The answer is CORRECT");
}
@endcode
@see skip_big_tests
*/
#define SKIP_BIG_TESTS(COUNT) \
if (skip_big_tests) skip((COUNT), "big test"); else
/**
/**
Print a diagnostics message.
Print a diagnostics message.
...
...
unittest/unit.pl
View file @
1848b862
...
@@ -14,8 +14,9 @@
...
@@ -14,8 +14,9 @@
# along with this program; if not, write to the Free Software
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
use
Test::
Harness
qw(&runtests $verbose)
;
use
Test::
Harness
;
use
File::
Find
;
use
File::
Find
;
use
Getopt::
Long
;
use
strict
;
use
strict
;
...
@@ -31,10 +32,19 @@ unit - Run unit tests in directory
...
@@ -31,10 +32,19 @@ unit - Run unit tests in directory
=head1 SYNOPSIS
=head1 SYNOPSIS
unit
run
unit
[--[no]big] [--[no]verbose] run [tests to run]
=cut
=cut
my
$big
=
$ENV
{'
MYTAP_CONFIG
'}
eq
'
big
';
my
$result
=
GetOptions
(
"
big!
"
=>
\
$big
,
"
verbose!
"
=>
\
$
Test::Harness::
verbose
,
);
$ENV
{'
MYTAP_CONFIG
'}
=
$big
?
'
big
'
:
'';
my
$cmd
=
shift
;
my
$cmd
=
shift
;
if
(
defined
$cmd
&&
exists
$dispatch
{
$cmd
})
{
if
(
defined
$cmd
&&
exists
$dispatch
{
$cmd
})
{
...
@@ -56,7 +66,7 @@ sub _find_test_files (@) {
...
@@ -56,7 +66,7 @@ sub _find_test_files (@) {
my
@files
;
my
@files
;
find
sub
{
find
sub
{
$
File::Find::
prune
=
1
if
/^SCCS$/
;
$
File::Find::
prune
=
1
if
/^SCCS$/
;
push
(
@files
,
$
File::Find::
name
)
if
-
x
_
&&
/-t\z/
;
push
(
@files
,
$
File::Find::
name
)
if
-
x
_
&&
(
/-t\z/
||
/-t\.exe\z/
)
;
},
@dirs
;
},
@dirs
;
return
@files
;
return
@files
;
}
}
...
@@ -92,7 +102,7 @@ sub run_cmd (@) {
...
@@ -92,7 +102,7 @@ sub run_cmd (@) {
if
(
@files
>
0
)
{
if
(
@files
>
0
)
{
# Removing the first './' from the file names
# Removing the first './' from the file names
foreach
(
@files
)
{
s!^\./!!
}
foreach
(
@files
)
{
s!^\./!!
}
$ENV
{'
HARNESS_PERL_SWITCHES
'}
.=
q" -e 'exec @ARGV'"
;
$ENV
{'
HARNESS_PERL_SWITCHES
'}
.=
'
-e "exec @ARGV"
'
;
runtests
@files
;
runtests
@files
;
}
}
}
}
...
...
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