Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Add complete tests to validate a PKG_INSTALLED package
Baptiste Daroussin committed 12 years ago
commit 4fd3ef0e4a8da5a75062ab2f68b9fc1fc8044085
parent c807bad
2 files changed +61 -3
modified tests/lib/Makefile
@@ -6,8 +6,6 @@ test_SRCS= manifest.c \

pkg_printf_test_SRCS=	pkg_printf.c

-
pkg_validation_SRC=	pkg_validation
-

CFLAGS+=	-DTESTING -I../../libpkg
LDADD+=		-Wl,-rpath ${.CURDIR}/../../libpkg \
		-L../../libpkg	\
@@ -15,7 +13,7 @@ LDADD+= -Wl,-rpath ${.CURDIR}/../../libpkg \

CLEANFILES+=	pkg_printf.c

-
pkg_printf.c:	../../libpkg/pkg_printf.c
+
pkg_printf.c:	${.CURDIR}/../../libpkg/pkg_printf.c
	ln -sf ${.OODATE} ${.TARGET}

.include "../bsd.tests.mk"
modified tests/lib/pkg_validation.c
@@ -29,6 +29,8 @@
#include <atf-c.h>
#include <pkg.h>

+
struct sbuf *msg;
+

ATF_TC(valid_installed);

ATF_TC_HEAD(valid_installed, tc)
@@ -36,14 +38,72 @@ ATF_TC_HEAD(valid_installed, tc)
	atf_tc_set_md_var(tc, "descr",
	    "pkg_valid() tests installed");
}
+

+
int
+
event_callback(void *data, struct pkg_event *ev)
+
{
+
	switch (ev->type) {
+
	case PKG_EVENT_ERROR:
+
		sbuf_clear(msg);
+
		sbuf_printf(msg, "%s", ev->e_pkg_error.msg);
+
		sbuf_finish(msg);
+
		break;
+
	default:
+
		/* IGNORE */
+
		break;
+
	}
+

+
	return (0);
+
}
+

ATF_TC_BODY(valid_installed, tc)
{
	struct pkg *p = NULL;
+
	msg = sbuf_new_auto();
+

+
	pkg_event_register(event_callback, NULL);

	ATF_REQUIRE_EQ(EPKG_OK, pkg_new(&p, PKG_INSTALLED));
	ATF_REQUIRE(p != NULL);

	ATF_REQUIRE_EQ(EPKG_FATAL, pkg_is_valid(p));
+
	ATF_REQUIRE_STREQ(sbuf_data(msg), "package field incomplete: origin");
+

+
	ATF_REQUIRE_EQ(EPKG_OK, pkg_set(p, PKG_ORIGIN, "test/bla"));
+
	ATF_REQUIRE_EQ(EPKG_FATAL, pkg_is_valid(p));
+
	ATF_REQUIRE_STREQ(sbuf_data(msg), "package field incomplete: name");
+

+
	ATF_REQUIRE_EQ(EPKG_OK, pkg_set(p, PKG_NAME, "test"));
+
	ATF_REQUIRE_EQ(EPKG_FATAL, pkg_is_valid(p));
+
	ATF_REQUIRE_STREQ(sbuf_data(msg), "package field incomplete: version");
+

+
	ATF_REQUIRE_EQ(EPKG_OK, pkg_set(p, PKG_VERSION, "1.1.0"));
+
	ATF_REQUIRE_EQ(EPKG_FATAL, pkg_is_valid(p));
+
	ATF_REQUIRE_STREQ(sbuf_data(msg), "package field incomplete: comment");
+

+
	ATF_REQUIRE_EQ(EPKG_OK, pkg_set(p, PKG_COMMENT, "test comment"));
+
	ATF_REQUIRE_EQ(EPKG_FATAL, pkg_is_valid(p));
+
	ATF_REQUIRE_STREQ(sbuf_data(msg), "package field incomplete: description");
+

+
	ATF_REQUIRE_EQ(EPKG_OK, pkg_set(p, PKG_DESC, "test description"));
+
	ATF_REQUIRE_EQ(EPKG_FATAL, pkg_is_valid(p));
+
	ATF_REQUIRE_STREQ(sbuf_data(msg), "package field incomplete: architecture");
+

+
	ATF_REQUIRE_EQ(EPKG_OK, pkg_set(p, PKG_ARCH, "freebsd:N"));
+
	ATF_REQUIRE_EQ(EPKG_FATAL, pkg_is_valid(p));
+
	ATF_REQUIRE_STREQ(sbuf_data(msg), "package field incomplete: maintainer");
+

+
	ATF_REQUIRE_EQ(EPKG_OK, pkg_set(p, PKG_MAINTAINER, "tester"));
+
	ATF_REQUIRE_EQ(EPKG_FATAL, pkg_is_valid(p));
+
	ATF_REQUIRE_STREQ(sbuf_data(msg), "package field incomplete: www");
+

+
	ATF_REQUIRE_EQ(EPKG_OK, pkg_set(p, PKG_WWW, "test website"));
+
	ATF_REQUIRE_EQ(EPKG_FATAL, pkg_is_valid(p));
+
	ATF_REQUIRE_STREQ(sbuf_data(msg), "package field incomplete: prefix");
+

+
	ATF_REQUIRE_EQ(EPKG_OK, pkg_set(p, PKG_PREFIX, "/usr/local"));
+
	ATF_REQUIRE_EQ(EPKG_OK, pkg_is_valid(p));
+

}

ATF_TP_ADD_TCS(tp)