diff --git a/.appveyor.yml b/.appveyor.yml new file mode 100644 index 0000000000..941f4c2053 --- /dev/null +++ b/.appveyor.yml @@ -0,0 +1,25 @@ +clone_depth: 50 + +environment: + global: + TESTS_REDUCED_KEYLENGTHS: yes + LEAK_DETECTIVE: no + MONOLITHIC: yes + TZ: Europe/Zurich + matrix: + - arch: x86_64 + bits: 64 + # no 32-bit build as 32-bit msys is not installed + #- arch: i686 + # bits: 32 + +install: + - set MSYS_SH=C:\msys%BITS%\usr\bin\sh.exe + - set MSYSTEM=MINGW%BITS% + - set TEST=win%BITS% + +build_script: + - '%MSYS_SH% --login -c ". /etc/profile && cd $APPVEYOR_BUILD_FOLDER && ./scripts/test.sh deps"' + +test_script: + - '%MSYS_SH% --login -c ". /etc/profile && cd $APPVEYOR_BUILD_FOLDER && ./scripts/test.sh"' diff --git a/scripts/test.sh b/scripts/test.sh index 22e74033e2..e3bc37e302 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -64,8 +64,15 @@ win*) --enable-tnccs-20 --enable-imc-attestation --enable-imv-attestation --enable-imc-os --enable-imv-os --enable-tnc-imv --enable-tnc-imc --enable-pki --enable-swanctl --enable-socket-win" - # no make check for Windows binaries - TARGET= + # no make check for Windows binaries unless we run on a windows host + if test "$APPVEYOR" != "True"; then + TARGET= + else + CONFIG="$CONFIG --enable-openssl" + CFLAGS="$CFLAGS -I/c/OpenSSL-$TEST/include" + LDFLAGS="-L/c/OpenSSL-$TEST" + export LDFLAGS + fi CFLAGS="$CFLAGS -mno-ms-bitfields" DEPS="gcc-mingw-w64-base" case "$TEST" in @@ -76,7 +83,7 @@ win*) DEPS="gcc-mingw-w64-x86-64 binutils-mingw-w64-x86-64 mingw-w64-x86-64-dev $DEPS" CC="x86_64-w64-mingw32-gcc" # apply patch to MinGW headers - if test -z "$1"; then + if test "$APPVEYOR" != "True" -a -z "$1"; then sudo patch -f -p 4 -d /usr/share/mingw-w64/include < src/libcharon/plugins/kernel_wfp/mingw-w64-4.8.1.diff fi ;; diff --git a/src/libcharon/tests/utils/exchange_test_asserts.h b/src/libcharon/tests/utils/exchange_test_asserts.h index 4d363edfdb..ae9ac5c982 100644 --- a/src/libcharon/tests/utils/exchange_test_asserts.h +++ b/src/libcharon/tests/utils/exchange_test_asserts.h @@ -285,7 +285,7 @@ bool exchange_test_asserts_message(listener_t *this, ike_sa_t *ike_sa, * @param dir IN or OUT to check the next in- or outbound message */ #define assert_message_empty(dir) \ - _assert_payload(dir, 0) + _assert_payload(#dir, 0) /** * Assert that the next in- or outbound plaintext message contains exactly @@ -295,7 +295,7 @@ bool exchange_test_asserts_message(listener_t *this, ike_sa_t *ike_sa, * @param expected expected payload type */ #define assert_single_payload(dir, expected) \ - _assert_payload(dir, 1, { TRUE, expected, 0 }) + _assert_payload(#dir, 1, { TRUE, expected, 0 }) /** * Assert that the next in- or outbound plaintext message contains exactly @@ -305,7 +305,7 @@ bool exchange_test_asserts_message(listener_t *this, ike_sa_t *ike_sa, * @param expected expected notify type */ #define assert_single_notify(dir, expected) \ - _assert_payload(dir, 1, { TRUE, 0, expected }) + _assert_payload(#dir, 1, { TRUE, 0, expected }) /** * Assert that the next in- or outbound plaintext message contains a notify @@ -315,7 +315,7 @@ bool exchange_test_asserts_message(listener_t *this, ike_sa_t *ike_sa, * @param expected expected notify type */ #define assert_notify(dir, expected) \ - _assert_payload(dir, -1, { TRUE, 0, expected }) + _assert_payload(#dir, -1, { TRUE, 0, expected }) /** * Assert that the next in- or outbound plaintext message does not contain a @@ -325,7 +325,7 @@ bool exchange_test_asserts_message(listener_t *this, ike_sa_t *ike_sa, * @param unexpected not expected notify type */ #define assert_no_notify(dir, unexpected) \ - _assert_payload(dir, -1, { FALSE, 0, unexpected }) + _assert_payload(#dir, -1, { FALSE, 0, unexpected }) #define _assert_payload(dir, c, ...) ({ \ listener_message_rule_t _rules[] = { __VA_ARGS__ }; \ @@ -333,7 +333,7 @@ bool exchange_test_asserts_message(listener_t *this, ike_sa_t *ike_sa, .listener = { .message = exchange_test_asserts_message, }, \ .file = __FILE__, \ .line = __LINE__, \ - .incoming = streq(#dir, "IN") ? TRUE : FALSE, \ + .incoming = streq(dir, "IN") ? TRUE : FALSE, \ .count = c, \ .rules = _rules, \ .num_rules = countof(_rules), \ diff --git a/src/libstrongswan/tests/suites/test_settings.c b/src/libstrongswan/tests/suites/test_settings.c index 5ddd0bb9ad..9d0a6dea13 100644 --- a/src/libstrongswan/tests/suites/test_settings.c +++ b/src/libstrongswan/tests/suites/test_settings.c @@ -549,10 +549,14 @@ END_TEST #ifdef WIN32 # define include1 "C:\\Windows\\Temp\\strongswan-settings-test-include1" +# define include1_str "C:\\\\Windows\\\\Temp\\\\strongswan-settings-test-include1" # define include2 "C:\\Windows\\Temp\\strongswan-settings-test-include2" +# define include2_str "C:\\\\Windows\\\\Temp\\\\strongswan-settings-test-include2" #else # define include1 "/tmp/strongswan-settings-test-include1" +# define include1_str include1 # define include2 "/tmp/strongswan-settings-test-include2" +# define include2_str include2 #endif static char *include_content1 = @@ -638,10 +642,10 @@ START_TEST(test_include_string) " include this/does/not/exist.conf\n" " include = value\n" " key2 = value2\n" - " include \"" include2 "\"\n" + " include \"" include2_str "\"\n" " }\n" "}\n" - "include \"" include1 "\""); + "include \"" include1_str "\""); create_settings(contents); verify_include(); diff --git a/src/libstrongswan/tests/tests.h b/src/libstrongswan/tests/tests.h index 79a88e27d7..c19cac25a2 100644 --- a/src/libstrongswan/tests/tests.h +++ b/src/libstrongswan/tests/tests.h @@ -41,7 +41,7 @@ TEST_SUITE(auth_cfg_suite_create) TEST_SUITE(hasher_suite_create) TEST_SUITE(crypter_suite_create) TEST_SUITE(crypto_factory_suite_create) -TEST_SUITE(iv_gen_suite_create) +TEST_SUITE_DEPEND(iv_gen_suite_create, RNG, RNG_STRONG) TEST_SUITE(pen_suite_create) TEST_SUITE(asn1_suite_create) TEST_SUITE(asn1_parser_suite_create)