vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Sun Nov 6 00:26:23 2016 +0200| [ab2a84735463f91ecdae5eb0a8c4e6c6a5452b57] | committer: Rémi Denis-Courmont
url: do not rely on asserts in test and print error on URL parsing > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=ab2a84735463f91ecdae5eb0a8c4e6c6a5452b57 --- src/test/url.c | 120 ++++++++++++++++++++++++++++++--------------------------- 1 file changed, 63 insertions(+), 57 deletions(-) diff --git a/src/test/url.c b/src/test/url.c index 336a696..ab02571 100644 --- a/src/test/url.c +++ b/src/test/url.c @@ -23,9 +23,6 @@ # include "config.h" #endif -#undef NDEBUG - -#include <assert.h> #include <errno.h> #include <stdio.h> #include <stdlib.h> @@ -36,36 +33,35 @@ static int exitcode = 0; -typedef char * (*conv_t) (const char *); - -static void test (conv_t f, const char *in, const char *out) +static void test_compare(const char *in, const char *exp, const char *res) { - char *res = f(in); - if (res == NULL) { - if (out == NULL) - return; /* good: NULL -> NULL */ - - fprintf(stderr, "\"%s\" returned NULL, expected \"%s\"", in, out); - exit(2); + if (exp != NULL) + fprintf(stderr, "\"%s\" returned NULL, expected \"%s\"", in, exp); + else + return; } - - if (out == NULL) + else { - fprintf(stderr, "\"%s\" returned \"%s\", expected NULL", in, res); - free(res); - exit(2); + if (exp == NULL) + fprintf(stderr, "\"%s\" returned \"%s\", expected NULL", in, res); + else + if (strcmp(res, exp)) + fprintf(stderr, "\"%s\" returned \"%s\", expected \"%s\"\n", in, + res, exp); + else + return; } + exit(2); +} - if (strcmp(res, out)) - { - fprintf(stderr, "\"%s\" returned \"%s\", expected \"%s\"\n", in, res, - out); - free(res); - exit(2); - } +typedef char * (*conv_t) (const char *); +static void test (conv_t f, const char *in, const char *out) +{ + char *res = f(in); + test_compare(in, out, res); free(res); } @@ -93,53 +89,58 @@ static inline void test_current_directory_path (const char *in, const char *cwd, { char *expected_result; int val = asprintf (&expected_result, "file://%s/%s", cwd, out); - assert (val != -1); + if (val < 0) + abort(); test (make_URI_def, in, expected_result); free(expected_result); } -static void test_url_parse(const char* in, const char* protocol, const char* user, - const char* pass, const char* host, unsigned i_port, - const char* path, const char* option ) +static void test_url_parse(const char *in, const char *protocol, + const char *user, const char *pass, + const char *host, unsigned port, + const char *path, const char *option) { -#define CHECK( a, b ) \ - if (a == NULL) \ - assert(b == NULL); \ - else \ - assert(b != NULL && !strcmp((a), (b))) - vlc_url_t url; int ret = vlc_UrlParse(&url, in); /* XXX: only checking that the port-part is parsed correctly, and * equal to 0, is currently not supported due to the below. */ - if( !protocol && !user && !pass && !host && !i_port && !path && !option ) + if (protocol == NULL && user == NULL && pass == NULL && host == NULL + && port == 0 && path == NULL && option == NULL) { - vlc_UrlClean( &url ); - assert( ret == -1 ); + vlc_UrlClean(&url); + + if (ret != -1) + { + fprintf(stderr, "\"%s\" accepted, expected rejection\n", in); + exit(2); + } return; } - CHECK( url.psz_protocol, protocol ); - CHECK( url.psz_username, user ); - CHECK( url.psz_password, pass ); + test_compare(in, url.psz_protocol, protocol); + test_compare(in, url.psz_username, user); + test_compare(in, url.psz_password, pass); if (ret != 0 && errno == ENOSYS) { - assert(url.psz_host == NULL); + test_compare(in, url.psz_host, NULL); exitcode = 77; } else - CHECK(url.psz_host, host); + test_compare(in, url.psz_host, host); - CHECK( url.psz_path, path ); - assert( url.i_port == i_port ); - CHECK( url.psz_option, option ); - - vlc_UrlClean( &url ); + if (url.i_port != port) + { + fprintf(stderr, "\"%s\" returned %u, expected %u\n", in, url.i_port, + port); + exit(2); + } -#undef CHECK + test_compare(in, url.psz_path, path); + test_compare(in, url.psz_option, option); + vlc_UrlClean(&url); } static char *vlc_uri_resolve_rfc3986_test(const char *in) @@ -159,8 +160,6 @@ static void test_fixup_noop(const char *expected) int main (void) { - int val; - (void)setvbuf (stdout, NULL, _IONBF, 0); test_decode ("this_should_not_be_modified_1234", "this_should_not_be_modified_1234"); @@ -206,15 +205,22 @@ int main (void) /*int fd = open (".", O_RDONLY); assert (fd != -1);*/ - val = chdir ("/tmp"); - assert (val != -1); + +#ifndef _WIN32 /* FIXME: deal with anti-slashes */ + if (chdir ("/tmp")) + { + perror("/tmp"); + exit(1); + } char buf[256]; - char * tmpdir; - tmpdir = getcwd(buf, sizeof(buf)/sizeof(*buf)); - assert (tmpdir); + char *tmpdir = getcwd(buf, sizeof (buf) / sizeof (*buf)); + if (tmpdir == NULL) + { + perror("getcwd"); + exit(1); + } -#ifndef _WIN32 /* FIXME: deal with anti-slashes */ test_current_directory_path ("movie.ogg", tmpdir, "movie.ogg"); test_current_directory_path (".", tmpdir, "."); test_current_directory_path ("", tmpdir, ""); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
