socsvn commit: r254077 - soc2013/mattbw/tests/get-details-output
mattbw at FreeBSD.org
mattbw at FreeBSD.org
Fri Jul 5 01:01:34 UTC 2013
Author: mattbw
Date: Fri Jul 5 01:01:34 2013
New Revision: 254077
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=254077
Log:
Added initial output test for GetDetails.
Added:
soc2013/mattbw/tests/get-details-output/
soc2013/mattbw/tests/get-details-output/Makefile
soc2013/mattbw/tests/get-details-output/getcat.1
soc2013/mattbw/tests/get-details-output/getcat.c
soc2013/mattbw/tests/get-details-output/strip_messages.awk
soc2013/mattbw/tests/get-details-output/test-output.sh (contents, props changed)
Added: soc2013/mattbw/tests/get-details-output/Makefile
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ soc2013/mattbw/tests/get-details-output/Makefile Fri Jul 5 01:01:34 2013 (r254077)
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+PROG= getcat
+SRCS= getcat.c ../../backend/groups.c
+
+CFLAGS+= `pkgconf --cflags pkg glib-2.0`
+CFLAGS+= -I/usr/local/include/PackageKit -I/usr/local/include/PackageKit/backend
+CFLAGS+= -I../../backend
+CFLAGS+= -DPK_COMPILATION
+LDFLAGS+= `pkgconf --libs pkg glib-2.0` -lpackagekit-glib2
+
+.include <bsd.prog.mk>
Added: soc2013/mattbw/tests/get-details-output/getcat.1
==============================================================================
Added: soc2013/mattbw/tests/get-details-output/getcat.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ soc2013/mattbw/tests/get-details-output/getcat.c Fri Jul 5 01:01:34 2013 (r254077)
@@ -0,0 +1,51 @@
+/*-
+ *
+ * Copyright (C) 2013 Matt Windsor <mattbw at FreeBSD.org>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * 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; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+/*
+ * Gets the group name of a pkgng origin, eg 'ports-mgmt/pkg' -> 'admin-tools'.
+ */
+const char *USAGE = "usage: %s origin\n";
+
+#include <stdio.h>
+
+#include <glib.h>
+#include "pkg.h"
+#include "pk-backend.h"
+
+#include "groups.h"
+
+
+int
+main(int argc, char **argv)
+{
+ int ret;
+
+ ret = 0;
+ if (argc != 2) {
+ ret = 1;
+ fprintf(stderr, USAGE, argv[0]);
+ } else {
+ printf("%s\n",
+ pk_group_enum_to_string(group_from_origin(argv[1])));
+ }
+
+ return ret;
+}
Added: soc2013/mattbw/tests/get-details-output/strip_messages.awk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ soc2013/mattbw/tests/get-details-output/strip_messages.awk Fri Jul 5 01:01:34 2013 (r254077)
@@ -0,0 +1,4 @@
+# Strips in-band auxiliary messages from a `pkcon` run, leaving only the results
+BEGIN { in_description=0 }
+!/Message:.*/ && in_description { print }
+/Results:/ { in_description=1 }
Added: soc2013/mattbw/tests/get-details-output/test-output.sh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ soc2013/mattbw/tests/get-details-output/test-output.sh Fri Jul 5 01:01:34 2013 (r254077)
@@ -0,0 +1,59 @@
+#!/bin/sh
+
+# Tests pkcon against pkg to make sure the pkg backend works correctly for GetDetails.
+#
+# More black-box tests should be written later
+
+if [ $# -eq 1 ]
+then
+ PACKAGE="$1"
+else
+ PACKAGE="pkg"
+fi
+
+echo "using package ${PACKAGE}"
+
+# Get the expected ABI through some invasive inspection of the pkg config dump
+ARCH="`pkg -vv | grep ABI | sed 's/ *ABI: *//'`"
+
+CMD_GETCAT="./getcat"
+
+# Get the PackageKit group of the package
+ORIGIN="`pkg query \"%o\" ${PACKAGE}`"
+GROUP="`${CMD_GETCAT} ${ORIGIN}`"
+
+# Get the licences by mashing the `pkg query` licence list and or/and/single identifier
+# into one "licence or licence or licence" string.
+LICENSE=`\
+ pkg query "%L %l" "${PACKAGE}" | # "licence or\nlicence or\n"
+ tr "\n" " " | # "licence or licence or ", note space
+ sed 's/ *[^ ]* *$//'` # "licence or licence"
+
+# Build a format string for the query that mocks up a pkcon GetDetails result
+FMT="Package description
+ package: %n-%v.${ARCH}
+ license: ${LICENSE}
+ group: ${GROUP}
+ description: %e
+ size: %sb bytes
+ url: %w"
+
+# Now run both queries and diff them
+PKG_FILE="${PACKAGE}-pkg"
+PKCON_FILE="${PACKAGE}-pkcon"
+
+pkg query "${FMT}" "${PACKAGE}" > "${PKG_FILE}"
+pkcon get-details "${PACKAGE};;;installed" | awk -f "strip_messages.awk" > "${PKCON_FILE}"
+
+DIFF="`diff -rupN \"${PACKAGE}-pkg\" \"${PACKAGE}-pkcon\"`"
+if [ -n "${DIFF}" ]
+then
+ echo "test failed with diff:"
+ echo "${DIFF}"
+ RETURN=1
+else
+ echo "test succeeded"
+ RETURN=0
+fi
+
+return $RETURN
More information about the svn-soc-all
mailing list