diff options
| author | owent <owt5008137@live.com> | 2015-08-22 12:58:40 +0800 | 
|---|---|---|
| committer | Jan-Erik Rediger <janerik@fnordig.de> | 2016-04-20 16:10:02 +0200 | 
| commit | 6c53d6803aa460ac03f568c81a8335aa3ccfef6d (patch) | |
| tree | 65c4c7006952cadebae9f0d66cd5b1a056d3ee89 | |
| parent | 2139f78c71a9ebfcfad27d8e7d5b6689d95aee78 (diff) | |
| download | hiredict-6c53d6803aa460ac03f568c81a8335aa3ccfef6d.tar.xz | |
Add CI for Windows
- fix macro problem in mingw-gcc
- fix typedef in cygwin
| -rw-r--r-- | appveyor.yml | 86 | ||||
| -rw-r--r-- | fmacros.h | 4 | ||||
| -rw-r--r-- | test.c | 18 | 
3 files changed, 99 insertions, 9 deletions
| 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</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  #endif +#if defined(__CYGWIN__) +#include <sys/cdefs.h> +#endif +  #if defined(__sun__)  #define _POSIX_C_SOURCE 200112L  #elif defined(__linux__) || defined(__OpenBSD__) || defined(__NetBSD__) @@ -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);      } | 
