summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configure.ac.in1
-rw-r--r--test/Makefile.am2
-rw-r--r--test/urls/Makefile.am52
-rw-r--r--test/urls/data/double-slash.test7
-rw-r--r--test/urls/parse-url.c35
-rwxr-xr-xtest/urls/run-url-test.in27
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
OpenPOWER on IntegriCloud