Add CI for Windows
- fix macro problem in mingw-gcc - fix typedef in cygwin
This commit is contained in:
parent
2139f78c71
commit
6c53d6803a
86
appveyor.yml
Normal file
86
appveyor.yml
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
#
|
||||||
|
# Appveyor configuration file for CI build of hiredis-happ on Windows (under Cygwin)
|
||||||
|
#
|
||||||
|
# For further details see http://www.appveyor.com
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Custom environment variables
|
||||||
|
#
|
||||||
|
environment:
|
||||||
|
matrix:
|
||||||
|
- CYG_ROOT: C:\cygwin64
|
||||||
|
CYG_SETUP: setup-x86_64.exe
|
||||||
|
CYG_MIRROR: http://cygwin.mirror.constant.com
|
||||||
|
CYG_CACHE: C:\cygwin64\var\cache\setup
|
||||||
|
CYG_BASH: C:\cygwin64\bin\bash
|
||||||
|
CC: gcc
|
||||||
|
CFLAGS: -Werror
|
||||||
|
- CYG_ROOT: C:\cygwin
|
||||||
|
CYG_SETUP: setup-x86.exe
|
||||||
|
CYG_MIRROR: http://cygwin.mirror.constant.com
|
||||||
|
CYG_CACHE: C:\cygwin\var\cache\setup
|
||||||
|
CYG_BASH: C:\cygwin\bin\bash
|
||||||
|
CC: gcc
|
||||||
|
TARGET: 32bit
|
||||||
|
TARGET_VARS: 32bit-vars
|
||||||
|
CFLAGS: -Werror
|
||||||
|
# - CC: clang
|
||||||
|
# CFLAGS: -Werror
|
||||||
|
# LDFLAGS:
|
||||||
|
# - CC: clang
|
||||||
|
# TARGET: 32bit
|
||||||
|
# TARGET_VARS: 32bit-vars
|
||||||
|
# CFLAGS: -Werror
|
||||||
|
# LDFLAGS:
|
||||||
|
#
|
||||||
|
# Cache Cygwin files to speed up build
|
||||||
|
#
|
||||||
|
cache:
|
||||||
|
- '%CYG_CACHE%'
|
||||||
|
|
||||||
|
#
|
||||||
|
# Do a shallow clone of the repo to speed up build
|
||||||
|
#
|
||||||
|
clone_depth: 1
|
||||||
|
|
||||||
|
#
|
||||||
|
# Initialisation prior to pulling the Mono repository
|
||||||
|
# Attempt to ensure we don't try to convert line endings to Win32 CRLF as this will cause build to fail
|
||||||
|
#
|
||||||
|
init:
|
||||||
|
- git config --global core.autocrlf input
|
||||||
|
|
||||||
|
#
|
||||||
|
# Install needed build dependencies
|
||||||
|
#
|
||||||
|
install:
|
||||||
|
- ps: 'Start-FileDownload "http://cygwin.com/$env:CYG_SETUP" -FileName "$env:CYG_SETUP"'
|
||||||
|
- '%CYG_SETUP% --quiet-mode --no-shortcuts --only-site --root "%CYG_ROOT%" --site "%CYG_MIRROR%" --local-package-dir "%CYG_CACHE%" --packages automake,bison,gcc-core,libtool,make,gettext-devel,gettext,intltool,pkg-config,clang,llvm > NUL 2>&1'
|
||||||
|
- '%CYG_BASH% -lc "cygcheck -dc cygwin"'
|
||||||
|
|
||||||
|
# Cygwin build script
|
||||||
|
#
|
||||||
|
# NOTES:
|
||||||
|
#
|
||||||
|
# The stdin/stdout file descriptor appears not to be valid for the Appveyor
|
||||||
|
# build which causes failures as certain functions attempt to redirect
|
||||||
|
# default file handles. Ensure a dummy file descriptor is opened with 'exec'.
|
||||||
|
#
|
||||||
|
build_script:
|
||||||
|
- 'echo building...'
|
||||||
|
- '%CYG_BASH% -lc "cd $APPVEYOR_BUILD_FOLDER; exec 0</dev/null; make LDFLAGS=$LDFLAGS CC=$CC $TARGET CFLAGS=$CFLAGS && make LDFLAGS=$LDFLAGS CC=$CC $TARGET_VARS hiredis-example"'
|
||||||
|
#
|
||||||
|
# Run unit test
|
||||||
|
# there is no valgrind in cygwin, so skipped
|
||||||
|
# test_script:
|
||||||
|
#- '%CYG_BASH% -lc "cd $APPVEYOR_BUILD_FOLDER; exec 0</dev/null; <test command here>"'
|
||||||
|
|
||||||
|
#
|
||||||
|
# Only build the master branch
|
||||||
|
#
|
||||||
|
branches:
|
||||||
|
only:
|
||||||
|
- master
|
||||||
|
|
||||||
|
# no need artifacts
|
@ -6,6 +6,10 @@
|
|||||||
#define _DEFAULT_SOURCE
|
#define _DEFAULT_SOURCE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(__CYGWIN__)
|
||||||
|
#include <sys/cdefs.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(__sun__)
|
#if defined(__sun__)
|
||||||
#define _POSIX_C_SOURCE 200112L
|
#define _POSIX_C_SOURCE 200112L
|
||||||
#elif defined(__linux__) || defined(__OpenBSD__) || defined(__NetBSD__)
|
#elif defined(__linux__) || defined(__OpenBSD__) || defined(__NetBSD__)
|
||||||
|
18
test.c
18
test.c
@ -30,7 +30,7 @@ struct config {
|
|||||||
|
|
||||||
struct {
|
struct {
|
||||||
const char *path;
|
const char *path;
|
||||||
} unix;
|
} unix_sock;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* The following lines make up our testing "framework" :) */
|
/* The following lines make up our testing "framework" :) */
|
||||||
@ -97,10 +97,10 @@ static redisContext *connect(struct config config) {
|
|||||||
if (config.type == CONN_TCP) {
|
if (config.type == CONN_TCP) {
|
||||||
c = redisConnect(config.tcp.host, config.tcp.port);
|
c = redisConnect(config.tcp.host, config.tcp.port);
|
||||||
} else if (config.type == CONN_UNIX) {
|
} else if (config.type == CONN_UNIX) {
|
||||||
c = redisConnectUnix(config.unix.path);
|
c = redisConnectUnix(config.unix_sock.path);
|
||||||
} else if (config.type == CONN_FD) {
|
} else if (config.type == CONN_FD) {
|
||||||
/* Create a dummy connection just to get an fd to inherit */
|
/* Create a dummy connection just to get an fd to inherit */
|
||||||
redisContext *dummy_ctx = redisConnectUnix(config.unix.path);
|
redisContext *dummy_ctx = redisConnectUnix(config.unix_sock.path);
|
||||||
if (dummy_ctx) {
|
if (dummy_ctx) {
|
||||||
int fd = disconnect(dummy_ctx, 1);
|
int fd = disconnect(dummy_ctx, 1);
|
||||||
printf("Connecting to inherited fd %d\n", fd);
|
printf("Connecting to inherited fd %d\n", fd);
|
||||||
@ -361,7 +361,7 @@ static void test_blocking_connection_errors(void) {
|
|||||||
strcmp(c->errstr,"Connection refused") == 0);
|
strcmp(c->errstr,"Connection refused") == 0);
|
||||||
redisFree(c);
|
redisFree(c);
|
||||||
|
|
||||||
test("Returns error when the unix socket path doesn't accept connections: ");
|
test("Returns error when the unix_sock socket path doesn't accept connections: ");
|
||||||
c = redisConnectUnix((char*)"/tmp/idontexist.sock");
|
c = redisConnectUnix((char*)"/tmp/idontexist.sock");
|
||||||
test_cond(c->err == REDIS_ERR_IO); /* Don't care about the message... */
|
test_cond(c->err == REDIS_ERR_IO); /* Don't care about the message... */
|
||||||
redisFree(c);
|
redisFree(c);
|
||||||
@ -482,7 +482,7 @@ static void test_blocking_connection_timeouts(struct config config) {
|
|||||||
|
|
||||||
test("Reconnect properly uses owned parameters: ");
|
test("Reconnect properly uses owned parameters: ");
|
||||||
config.tcp.host = "foo";
|
config.tcp.host = "foo";
|
||||||
config.unix.path = "foo";
|
config.unix_sock.path = "foo";
|
||||||
redisReconnect(c);
|
redisReconnect(c);
|
||||||
reply = redisCommand(c, "PING");
|
reply = redisCommand(c, "PING");
|
||||||
test_cond(reply != NULL && reply->type == REDIS_REPLY_STATUS && strcmp(reply->str, "PONG") == 0);
|
test_cond(reply != NULL && reply->type == REDIS_REPLY_STATUS && strcmp(reply->str, "PONG") == 0);
|
||||||
@ -736,7 +736,7 @@ int main(int argc, char **argv) {
|
|||||||
.host = "127.0.0.1",
|
.host = "127.0.0.1",
|
||||||
.port = 6379
|
.port = 6379
|
||||||
},
|
},
|
||||||
.unix = {
|
.unix_sock = {
|
||||||
.path = "/tmp/redis.sock"
|
.path = "/tmp/redis.sock"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -757,7 +757,7 @@ int main(int argc, char **argv) {
|
|||||||
cfg.tcp.port = atoi(argv[0]);
|
cfg.tcp.port = atoi(argv[0]);
|
||||||
} else if (argc >= 2 && !strcmp(argv[0],"-s")) {
|
} else if (argc >= 2 && !strcmp(argv[0],"-s")) {
|
||||||
argv++; argc--;
|
argv++; argc--;
|
||||||
cfg.unix.path = argv[0];
|
cfg.unix_sock.path = argv[0];
|
||||||
} else if (argc >= 1 && !strcmp(argv[0],"--skip-throughput")) {
|
} else if (argc >= 1 && !strcmp(argv[0],"--skip-throughput")) {
|
||||||
throughput = 0;
|
throughput = 0;
|
||||||
} else if (argc >= 1 && !strcmp(argv[0],"--skip-inherit-fd")) {
|
} else if (argc >= 1 && !strcmp(argv[0],"--skip-inherit-fd")) {
|
||||||
@ -783,7 +783,7 @@ int main(int argc, char **argv) {
|
|||||||
test_append_formatted_commands(cfg);
|
test_append_formatted_commands(cfg);
|
||||||
if (throughput) test_throughput(cfg);
|
if (throughput) test_throughput(cfg);
|
||||||
|
|
||||||
printf("\nTesting against Unix socket connection (%s):\n", cfg.unix.path);
|
printf("\nTesting against Unix socket connection (%s):\n", cfg.unix_sock.path);
|
||||||
cfg.type = CONN_UNIX;
|
cfg.type = CONN_UNIX;
|
||||||
test_blocking_connection(cfg);
|
test_blocking_connection(cfg);
|
||||||
test_blocking_connection_timeouts(cfg);
|
test_blocking_connection_timeouts(cfg);
|
||||||
@ -791,7 +791,7 @@ int main(int argc, char **argv) {
|
|||||||
if (throughput) test_throughput(cfg);
|
if (throughput) test_throughput(cfg);
|
||||||
|
|
||||||
if (test_inherit_fd) {
|
if (test_inherit_fd) {
|
||||||
printf("\nTesting against inherited fd (%s):\n", cfg.unix.path);
|
printf("\nTesting against inherited fd (%s):\n", cfg.unix_sock.path);
|
||||||
cfg.type = CONN_FD;
|
cfg.type = CONN_FD;
|
||||||
test_blocking_connection(cfg);
|
test_blocking_connection(cfg);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user