diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..bb9017b2 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,50 @@ +sudo: no + +language: c + +compiler: + - gcc + +notifications: + email: + recipients: + - darnir@gmail.com + - bug-wget@gnu.org + on_success: change + on_failure: always + +env: + global: + - PERLLIB=$PERLLIB:../../tests + - PERL5LIB=$PERL5LIB:../../tests + matrix: + - SSL="" + - SSL="openssl" + - SSL="gnutls" + +addons: + apt: + packages: + - automake + - autoconf + - autopoint + - flex + - texinfo + - pkg-config + - libgnutls-dev + - libssl-dev + - make + - libhttp-daemon-perl + - libio-socket-ssl-perl + - libidn11-dev + - gettext + - texlive + - python3 + - valgrind + - language-pack-tr + - language-pack-ja + +script: + - make distclean || true + - ./bootstrap + - ./contrib/travis-ci $SSL diff --git a/contrib/travis-ci b/contrib/travis-ci new file mode 100755 index 00000000..6694094e --- /dev/null +++ b/contrib/travis-ci @@ -0,0 +1,50 @@ +#!/bin/bash + +# Set a stricter bash mode +set -e +set -u + +SSL=${1:-""} +case $SSL in + "") SSL_LIB="--without-ssl";; + "openssl") SSL_LIB="--with-ssl=openssl";; + "gnutls") SSL_LIB="--with-ssl=gnutls";; +esac + +# For some reason. /proc/cpuinfo reports 16 cores on Travis, while the docs +# claim that each instance has only 2 cores. We believe the docs and force a +# value of only 2 here. +CORES=2 + +# Define a large number of Warning flags for the compiler. Hopefully, someone +# will sit and analyze the output to clean the warnings from the codebase. +CFLAGS="-std=c89 -pedantic -O2 -Wall -Wextra -Wstrict-prototypes -Wold-style-definition -Wwrite-strings -Wshadow -Wformat -Wformat-security -Wunreachable-code -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition" + +# A cachefile for ./configure. I'm not sure if this is any useful. +CACHEFILE=$PWD/config_check.cache + +# measure time consumed and print it at the end of the script +START=$(date +%s) + +# the compiler changed, so we have to remove the cache file here +rm -f "$CACHEFILE" + +for options in "" "--disable-ipv6"; do + export DISTCHECK_CONFIGURE_FLAGS="-C --cache-file=$CACHEFILE --enable-assert --enable-valgrind-tests $SSL_LIB $options" + echo " ./configure $DISTCHECK_CONFIGURE_FLAGS CFLAGS=\"$CFLAGS\"" + ./configure $DISTCHECK_CONFIGURE_FLAGS CFLAGS="$CFLAGS" + + # We would like to have more languages tested here. Currently, there is a + # problem in the translations file for Turkish which causes the progress bar + # to assert fail. Apart from that, at least one another language with multi + # byte and multi column characters. + # TODO: Add Japanese and Turkish LANG for test + for xLCALL in C; do + export TESTS_ENVIRONMENT="LC_ALL=$xLCALL VALGRIND_TESTS=1" + echo " TESTS_ENVIRONMENT=\"$TESTS_ENVIRONMENT\" make distcheck CFLAGS=$CFLAGS -j$CORES" + make distcheck CFLAGS="$CFLAGS" -j$CORES + done +done + +END=$(date +%s) +echo "Duration: $((END-START))" diff --git a/tests/valgrind-suppressions b/tests/valgrind-suppressions index 4026770e..5393321f 100644 --- a/tests/valgrind-suppressions +++ b/tests/valgrind-suppressions @@ -6,3 +6,175 @@ fun:idn_encode fun:url_parse } + +{ + Valgrind 3.4 bug suppression + Memcheck:Cond + fun:memrchr + fun:modify_param_name + fun:extract_param + fun:parse_content_disposition + fun:check_file_output + fun:gethttp + fun:http_loop + fun:retrieve_url + fun:main +} + +{ + Valgrind 3.4 bug suppression + Memcheck:Cond + fun:memrchr + fun:parse_content_disposition + fun:check_file_output + fun:gethttp + fun:http_loop + fun:retrieve_url + fun:main +} + +{ + Valgrind 3.4 bug suppression + Memcheck:Cond + fun:memrchr + fun:parse_content_disposition + fun:check_file_output + fun:gethttp + fun:http_loop + fun:retrieve_url + fun:main +} + +{ + Valgrind 3.4 bug suppression + Memcheck:Cond + fun:memrchr + fun:modify_param_name + fun:extract_param + fun:parse_set_cookie + fun:cookie_handle_set_cookie + fun:gethttp + fun:http_loop + fun:retrieve_url + fun:main +} + +{ + Valgrind 3.4 bug suppression + Memcheck:Cond + fun:memrchr + fun:modify_param_name + fun:extract_param + fun:parse_set_cookie + fun:cookie_handle_set_cookie + fun:gethttp + fun:http_loop + fun:retrieve_url + fun:main +} + +{ + Valgrind 3.4 bug suppression + Memcheck:Cond + fun:memrchr + fun:parse_content_disposition + fun:check_file_output + fun:gethttp + fun:http_loop + fun:retrieve_url + fun:main +} + +{ + Valgrind 3.4 bug suppression + Memcheck:Cond + fun:memrchr + fun:parse_content_disposition + fun:check_file_output + fun:gethttp + fun:http_loop + fun:retrieve_url + fun:main +} + +{ + Valgrind 3.4 bug suppression + Memcheck:Cond + fun:memrchr + fun:parse_content_disposition + fun:check_file_output + fun:gethttp + fun:http_loop + fun:retrieve_url + fun:main +} + +{ + Valgrind 3.4 bug suppression + Memcheck:Cond + fun:memrchr + fun:parse_content_disposition + fun:check_file_output + fun:gethttp + fun:http_loop + fun:retrieve_url + fun:main +} + +{ + Valgrind 3.4 bug suppression + Memcheck:Cond + fun:memrchr + fun:parse_content_disposition + fun:check_file_output + fun:gethttp + fun:http_loop + fun:retrieve_url + fun:main +} + +{ + Valgrind 3.4 bug suppression + Memcheck:Cond + fun:memrchr + fun:parse_content_disposition + fun:check_file_output + fun:gethttp + fun:http_loop + fun:retrieve_url + fun:main +} + +{ + + Memcheck:Cond + fun:memrchr + fun:extract_param + fun:gethttp + fun:http_loop + fun:retrieve_url + fun:main +} + +{ + + Memcheck:Cond + fun:memrchr + fun:gethttp + fun:http_loop + fun:retrieve_url + fun:main +} + +{ + + Memcheck:Cond + fun:memrchr + fun:extract_param + fun:parse_set_cookie.constprop.4 + fun:cookie_handle_set_cookie + fun:gethttp + fun:http_loop + fun:retrieve_url + fun:main +} diff --git a/tests/valgrind-suppressions-ssl b/tests/valgrind-suppressions-ssl index 02507850..43735072 100644 --- a/tests/valgrind-suppressions-ssl +++ b/tests/valgrind-suppressions-ssl @@ -26,3 +26,141 @@ ... obj:*/libcrypto.so.* } + +{ + Valgrind 3.4 bug suppression + Memcheck:Cond + fun:memrchr + fun:modify_param_name + fun:extract_param + fun:parse_content_disposition + fun:check_file_output + fun:gethttp + fun:http_loop + fun:retrieve_url + ... +} + +{ + Valgrind 3.4 bug suppression + Memcheck:Cond + fun:memrchr + fun:parse_content_disposition + fun:check_file_output + fun:gethttp + fun:http_loop + fun:retrieve_url + fun:main +} + +{ + Valgrind 3.4 bug suppression + Memcheck:Cond + fun:memrchr + fun:parse_content_disposition + fun:check_file_output + fun:gethttp + fun:http_loop + fun:retrieve_url + fun:main +} + +{ + Valgrind 3.4 bug suppression + Memcheck:Cond + fun:memrchr + fun:modify_param_name + fun:extract_param + fun:parse_set_cookie + fun:cookie_handle_set_cookie + fun:gethttp + fun:http_loop + fun:retrieve_url + ... +} + +{ + Valgrind 3.4 bug suppression + Memcheck:Cond + fun:memrchr + fun:modify_param_name + fun:extract_param + fun:parse_set_cookie + fun:cookie_handle_set_cookie + fun:gethttp + fun:http_loop + fun:retrieve_url + ... +} + +{ + Valgrind 3.4 bug suppression + Memcheck:Cond + fun:memrchr + fun:parse_content_disposition + fun:check_file_output + fun:gethttp + fun:http_loop + fun:retrieve_url + fun:main +} + +{ + Valgrind 3.4 bug suppression + Memcheck:Cond + fun:memrchr + fun:parse_content_disposition + fun:check_file_output + fun:gethttp + fun:http_loop + fun:retrieve_url + fun:main +} + +{ + Valgrind 3.4 bug suppression + Memcheck:Cond + fun:memrchr + fun:parse_content_disposition + fun:check_file_output + fun:gethttp + fun:http_loop + fun:retrieve_url + fun:main +} + +{ + Valgrind 3.4 bug suppression + Memcheck:Cond + fun:memrchr + fun:parse_content_disposition + fun:check_file_output + fun:gethttp + fun:http_loop + fun:retrieve_url + fun:main +} + +{ + Valgrind 3.4 bug suppression + Memcheck:Cond + fun:memrchr + fun:parse_content_disposition + fun:check_file_output + fun:gethttp + fun:http_loop + fun:retrieve_url + fun:main +} + +{ + Valgrind 3.4 bug suppression + Memcheck:Cond + fun:memrchr + fun:parse_content_disposition + fun:check_file_output + fun:gethttp + fun:http_loop + fun:retrieve_url + fun:main +}