diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 0000000..b784aad --- /dev/null +++ b/appveyor.yml @@ -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"' + +# +# Only build the master branch +# +branches: + only: + - master + +# no need artifacts diff --git a/fmacros.h b/fmacros.h index 19d7b21..7a85121 100644 --- a/fmacros.h +++ b/fmacros.h @@ -6,6 +6,10 @@ #define _DEFAULT_SOURCE #endif +#if defined(__CYGWIN__) +#include +#endif + #if defined(__sun__) #define _POSIX_C_SOURCE 200112L #elif defined(__linux__) || defined(__OpenBSD__) || defined(__NetBSD__) diff --git a/test.c b/test.c index 79148fd..c309df8 100644 --- a/test.c +++ b/test.c @@ -30,7 +30,7 @@ struct config { struct { const char *path; - } unix; + } unix_sock; }; /* The following lines make up our testing "framework" :) */ @@ -97,10 +97,10 @@ static redisContext *connect(struct config config) { if (config.type == CONN_TCP) { c = redisConnect(config.tcp.host, config.tcp.port); } else if (config.type == CONN_UNIX) { - c = redisConnectUnix(config.unix.path); + c = redisConnectUnix(config.unix_sock.path); } else if (config.type == CONN_FD) { /* 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) { int fd = disconnect(dummy_ctx, 1); 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); 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"); test_cond(c->err == REDIS_ERR_IO); /* Don't care about the message... */ redisFree(c); @@ -482,7 +482,7 @@ static void test_blocking_connection_timeouts(struct config config) { test("Reconnect properly uses owned parameters: "); config.tcp.host = "foo"; - config.unix.path = "foo"; + config.unix_sock.path = "foo"; redisReconnect(c); reply = redisCommand(c, "PING"); 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", .port = 6379 }, - .unix = { + .unix_sock = { .path = "/tmp/redis.sock" } }; @@ -757,7 +757,7 @@ int main(int argc, char **argv) { cfg.tcp.port = atoi(argv[0]); } else if (argc >= 2 && !strcmp(argv[0],"-s")) { argv++; argc--; - cfg.unix.path = argv[0]; + cfg.unix_sock.path = argv[0]; } else if (argc >= 1 && !strcmp(argv[0],"--skip-throughput")) { throughput = 0; } 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); 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; test_blocking_connection(cfg); test_blocking_connection_timeouts(cfg); @@ -791,7 +791,7 @@ int main(int argc, char **argv) { if (throughput) test_throughput(cfg); 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; test_blocking_connection(cfg); }