From 98639e0965b6a564b90987a0151e9c34c70f3b6f Mon Sep 17 00:00:00 2001 From: Darshit Shah Date: Tue, 17 Nov 2015 23:47:55 +0100 Subject: [PATCH] Introduce Travis Integration * .travis.yml: Configuration file for Travis-CI * contrib/travis-ci: Script to run on travis. Similar to check-hard but modified for travis. * tests/valgrind-suppressions{-ssl}: Add extra suppressions to prevent a Valgrind False Positive errors in an old version Since Travis currently supports only public repositories on GitHub, the support for automated testing through Travis will be done using my Clone of Wget on GitHub at: https://github.com/darnir/wget.git Any commits pushed to this repository will trigger a build on Travis. --- .travis.yml | 52 ++++++++++++ contrib/travis-ci | 50 ++++++++++++ tests/valgrind-suppressions | 172 ++++++++++++++++++++++++++++++++++++++++ tests/valgrind-suppressions-ssl | 138 ++++++++++++++++++++++++++++++++ 4 files changed, 412 insertions(+) create mode 100644 .travis.yml create mode 100755 contrib/travis-ci diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..3b4ba3f --- /dev/null +++ b/.travis.yml @@ -0,0 +1,52 @@ +# TODO: +# Send change emails to bug-wget +sudo: no + +language: c + +compiler: + - gcc + +notifications: + email: + recipients: + - address@hidden + - address@hidden + 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 0000000..6694094 --- /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 4026770..dec037e 100644 --- a/tests/valgrind-suppressions +++ b/tests/valgrind-suppressions @@ -6,3 +6,175 @@ fun:idn_encode fun:url_parse } + +{ + Valgrind 3.4 bug suppresion + 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 suppresion + 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 suppresion + 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 suppresion + 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 suppresion + 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 suppresion + 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 suppresion + 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 suppresion + 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 suppresion + 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 suppresion + 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 suppresion + 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 0250785..acfe273 100644 --- a/tests/valgrind-suppressions-ssl +++ b/tests/valgrind-suppressions-ssl @@ -26,3 +26,141 @@ ... obj:*/libcrypto.so.* } + +{ + Valgrind 3.4 bug suppresion + 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 suppresion + 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 suppresion + 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 suppresion + 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 suppresion + 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 suppresion + 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 suppresion + 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 suppresion + 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 suppresion + 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 suppresion + 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 suppresion + Memcheck:Cond + fun:memrchr + fun:parse_content_disposition + fun:check_file_output + fun:gethttp + fun:http_loop + fun:retrieve_url + fun:main +} -- 2.6.2