diff options
-rw-r--r-- | configure.ac.in | 1 | ||||
-rw-r--r-- | test/Makefile.am | 2 | ||||
-rw-r--r-- | test/urls/Makefile.am | 52 | ||||
-rw-r--r-- | test/urls/data/double-slash.test | 7 | ||||
-rw-r--r-- | test/urls/parse-url.c | 35 | ||||
-rwxr-xr-x | test/urls/run-url-test.in | 27 |
6 files changed, 123 insertions, 1 deletions
diff --git a/configure.ac.in b/configure.ac.in index 0121579..501528f 100644 --- a/configure.ac.in +++ b/configure.ac.in @@ -214,6 +214,7 @@ AC_CONFIG_FILES([ man/Makefile test/Makefile test/parser/Makefile + test/urls/Makefile ui/Makefile ui/common/Makefile ui/ncurses/Makefile diff --git a/test/Makefile.am b/test/Makefile.am index 3798a87..21971a6 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -12,7 +12,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -SUBDIRS = parser +SUBDIRS = parser urls noinst_SCRIPTS = hotplug-device.sh diff --git a/test/urls/Makefile.am b/test/urls/Makefile.am new file mode 100644 index 0000000..9bb9569 --- /dev/null +++ b/test/urls/Makefile.am @@ -0,0 +1,52 @@ +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +AUTOMAKE_OPTIONS = parallel-tests + +AM_CPPFLAGS = \ + -I$(top_srcdir) \ + -I$(top_srcdir)/lib \ + -I$(includedir) \ + $(DEFAULT_CPPFLAGS) + +AM_CFLAGS = \ + $(DEFAULT_CFLAGS) + +parse_url_SOURCES = \ + parse-url.c \ + ../../ui/common/url.c \ + ../../ui/common/url.h + +parse_url_LDADD = ../../lib/libpbcore.la + +check_PROGRAMS = parse-url +check_SCRIPTS = run-url-test + +TESTS = data/double-slash.test \ + data/http-simple.test +TEST_EXTENSIONS = .test +TEST_LOG_COMPILER = $(builddir)/run-url-test + +edit = sed \ + -e 's|@PACKAGE_NAME\@|$(PACKAGE_NAME)|g' \ + -e 's|@PACKAGE_VERSION\@|$(PACKAGE_VERSION)|g' \ + -e 's|@PACKAGE_BUGREPORT\@|$(PACKAGE_BUGREPORT)|g' \ + -e 's|@abs_srcdir\@|$(abs_srcdir)|g' \ + -e 's|@abs_builddir\@|$(abs_builddir)|g' \ + -e 's|@prefix\@|$(prefix)|g' + +run-url-test: Makefile $(srcdir)/run-url-test.in + rm -f $@ $@.tmp + $(edit) $(srcdir)/$@.in >$@.tmp + chmod +x $@.tmp + mv $@.tmp $@ diff --git a/test/urls/data/double-slash.test b/test/urls/data/double-slash.test new file mode 100644 index 0000000..aeaf830 --- /dev/null +++ b/test/urls/data/double-slash.test @@ -0,0 +1,7 @@ +tftp://127.0.0.1//file +scheme tftp +host 127.0.0.1 +port (null) +path /file +dir / +file file diff --git a/test/urls/parse-url.c b/test/urls/parse-url.c new file mode 100644 index 0000000..3e2f10f --- /dev/null +++ b/test/urls/parse-url.c @@ -0,0 +1,35 @@ + +#include <stdlib.h> +#include <stdio.h> + +#include <ui/common/url.h> +#include <log/log.h> + +int main(int argc, char **argv) +{ + struct pb_url *url; + FILE *null; + + if (argc != 2) { + fprintf(stderr, "Usage: %s <URL>\n", argv[0]); + return EXIT_FAILURE; + } + + /* discard log output */ + null = fopen("/dev/null", "w"); + pb_log_set_stream(null); + + url = pb_url_parse(NULL, argv[1]); + if (!url) + return EXIT_FAILURE; + + printf("%s\n", argv[1]); + printf("scheme\t%s\n", pb_url_scheme_name(url->scheme)); + printf("host\t%s\n", url->host); + printf("port\t%s\n", url->port); + printf("path\t%s\n", url->path); + printf("dir\t%s\n", url->dir); + printf("file\t%s\n", url->file); + + return EXIT_SUCCESS; +} diff --git a/test/urls/run-url-test.in b/test/urls/run-url-test.in new file mode 100755 index 0000000..834166f --- /dev/null +++ b/test/urls/run-url-test.in @@ -0,0 +1,27 @@ +#!/bin/bash + +parser="@abs_builddir@/parse-url" +testfile=$1 + +url=$(head -n1 $testfile) + +tmp=$(mktemp) +trap "rm $tmp" EXIT + +$parser $url > $tmp +if test $? -ne 0 +then + echo "Error running $parser on $testfile" + exit 2 +fi + +cmp --silent $testfile $tmp +result=$? + +if test $result -ne 0 +then + echo "FAIL: URL parse results differ:" + diff -u $testfile $tmp +fi + +exit $result |