Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Prepare layout for atf-sh
Baptiste Daroussin committed 13 years ago
commit de334eedf3f2cce92b4b6f588cceca2a9d63f992
parent 599eb9d
11 files changed +283 -279
deleted tests/Makefile
@@ -1,23 +0,0 @@
-
PROG=	test
-
SRCS=	test.c		\
-
	manifest.c	\
-
	pkg.c
-

-
CFLAGS+=-I.			\
-
	-I/usr/local/include	\
-
	-I../libpkg
-
LDADD+=	-L/usr/local/lib	\
-
	-latf-c			\
-
	-L../libpkg		\
-
	-lpkg
-
NO_MAN=	true
-

-
TESTS=	manifest \
-
	pkg
-

-
run: ${PROG}
-
.for test in ${TESTS}
-
	@env LD_LIBRARY_PATH=../libpkg ./${PROG} ${test}
-
.endfor
-

-
.include <bsd.prog.mk>
added tests/frontend/Makefile
@@ -0,0 +1,4 @@
+
all:
+
	@echo "nothing todo"
+
run:
+
	@echo "nothing todo"
added tests/lib/Makefile
@@ -0,0 +1,23 @@
+
PROG=	test
+
SRCS=	test.c		\
+
	manifest.c	\
+
	pkg.c
+

+
CFLAGS+=-I.			\
+
	-I/usr/local/include	\
+
	-I../libpkg
+
LDADD+=	-L/usr/local/lib	\
+
	-latf-c			\
+
	-L../libpkg		\
+
	-lpkg
+
NO_MAN=	true
+

+
TESTS=	manifest \
+
	pkg
+

+
run: ${PROG}
+
.for test in ${TESTS}
+
	@env LD_LIBRARY_PATH=${.CURDIR}/../../libpkg ./${PROG} ${test}
+
.endfor
+

+
.include <bsd.prog.mk>
added tests/lib/manifest.c
@@ -0,0 +1,215 @@
+
#include <atf-c.h>
+
#include <pkg.h>
+
#include <string.h>
+

+
#include "tests.h"
+

+
char manifest[] = ""
+
	"name: foobar\n"
+
	"version: 0.3\n"
+
	"origin: foo/bar\n"
+
	"comment: A dummy manifest\n"
+
	"arch: amd64\n"
+
	"osversion: 800500\n"
+
	"www: http://www.foobar.com\n"
+
	"maintainer: test@pkgng.lan\n"
+
	"flatsize: 10000\n"
+
	"deps:\n"
+
	"  depfoo: {origin: dep/foo, version: 1.2}\n"
+
	"  depbar: {origin: dep/bar, version: 3.4}\n"
+
	"hello: world\n" /* unknown keyword should not be a problem */
+
	"conflicts: [foo-*, bar-*]\n"
+
	"options:\n"
+
	"  foo: true\n"
+
	"  bar: false\n"
+
	"files:\n"
+
	"  /usr/local/bin/foo: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b\n";
+

+
/* Name empty */
+
char wrong_manifest1[] = ""
+
	"name:\n"
+
	"version: 0.3\n"
+
	"origin: foo/bar\n"
+
	"comment: A dummy manifest\n"
+
	"arch: amd64\n"
+
	"osversion: 800500\n"
+
	"www: http://www.foobar.com\n"
+
	"maintainer: test@pkgng.lan\n"
+
	"flatsize: 10000\n"
+
	"deps:\n"
+
	"  depfoo: {origin: dep/foo, version: 1.2}\n"
+
	"  depbar: {origin: dep/bar, version: 3.4}\n"
+
	"hello: world\n" /* unknown keyword should not be a problem */
+
	"conflicts: [foo-*, bar-*]\n"
+
	"options:\n"
+
	"  foo: true\n"
+
	"  bar: false\n"
+
	"files:\n"
+
	"  /usr/local/bin/foo: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b\n";
+

+
/* bad dependency line */
+
char wrong_manifest2[] = ""
+
	"name: foobar\n"
+
	"version: 0.3\n"
+
	"origin: foo/bar\n"
+
	"comment: A dummy manifest\n"
+
	"arch: amd64\n"
+
	"osversion: 800500\n"
+
	"www: http://www.foobar.com\n"
+
	"maintainer: test@pkgng.lan\n"
+
	"flatsize: 10000\n"
+
	"deps:\n"
+
	"  depfoo: {origin: dep/foo}\n"
+
	"  depbar: {origin: dep/bar, version: 3.4}\n"
+
	"hello: world\n" /* unknown keyword should not be a problem */
+
	"conflicts: [foo-*, bar-*]\n"
+
	"options:\n"
+
	"  foo: true\n"
+
	"  bar: false\n"
+
	"files:\n"
+
	"  /usr/local/bin/foo: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b\n";
+

+
/* bad conflict line */
+
char wrong_manifest3[] = ""
+
	"name: foobar\n"
+
	"version: 0.3\n"
+
	"origin: foo/bar\n"
+
	"comment: A dummy manifest\n"
+
	"arch: amd64\n"
+
	"osversion: 800500\n"
+
	"www: http://www.foobar.com\n"
+
	"maintainer: test@pkgng.lan\n"
+
	"flatsize: 10000\n"
+
	"deps:\n"
+
	"  depfoo: {origin: dep/foo, version: 1.2}\n"
+
	"  depbar: {origin: dep/bar, version: 3.4}\n"
+
	"hello: world\n" /* unknown keyword should not be a problem */
+
	"conflicts: []\n"
+
	"options:\n"
+
	"  foo: true\n"
+
	"  bar: false\n"
+
	"files:\n"
+
	"  /usr/local/bin/foo: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b\n";
+

+
/* bad option line */
+
char wrong_manifest4[] = ""
+
	"name: foobar\n"
+
	"version: 0.3\n"
+
	"origin: foo/bar\n"
+
	"comment: A dummy manifest\n"
+
	"arch: amd64\n"
+
	"osversion: 800500\n"
+
	"www: http://www.foobar.com\n"
+
	"maintainer: test@pkgng.lan\n"
+
	"flatsize: 10000\n"
+
	"deps:\n"
+
	"  depfoo: {origin: dep/foo, version: 1.2}\n"
+
	"  depbar: {origin: dep/bar, version: 3.4}\n"
+
	"hello: world\n" /* unknown keyword should not be a problem */
+
	"conflicts: [foo-*, bar-*]\n"
+
	"options:\n"
+
	"  foo:\n"
+
	"  bar: false\n"
+
	"files:\n"
+
	"  /usr/local/bin/foo: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b\n";
+

+
void
+
test_manifest(void)
+
{
+
	struct pkg *p = NULL;
+
	struct pkg_dep *dep = NULL;
+
	struct pkg_conflict *conflict = NULL;
+
	struct pkg_option *option = NULL;
+
	struct pkg_file *file = NULL;
+
	int i;
+

+
	ATF_REQUIRE_EQ(EPKG_OK, pkg_new(&p, PKG_FILE));
+
	ATF_REQUIRE(p != NULL);
+
	ATF_REQUIRE_EQ(EPKG_OK, pkg_parse_manifest(p, manifest));
+

+
#if 0
+
	ATF_REQUIRE(strcmp(pkg_get(p, PKG_NAME), "foobar") == 0);
+
	ATF_REQUIRE(strcmp(pkg_get(p, PKG_VERSION), "0.3") == 0);
+
	ATF_REQUIRE(strcmp(pkg_get(p, PKG_ORIGIN), "foo/bar") == 0);
+
	ATF_REQUIRE(strcmp(pkg_get(p, PKG_COMMENT), "A dummy manifest") == 0);
+
	ATF_REQUIRE(strcmp(pkg_get(p, PKG_ARCH), "amd64") == 0);
+
	ATF_REQUIRE(strcmp(pkg_get(p, PKG_VERSION), "800500") == 0);
+
	ATF_REQUIRE(strcmp(pkg_get(p, PKG_WWW), "http://www.foobar.com") == 0);
+
	ATF_REQUIRE(strcmp(pkg_get(p, PKG_MAINTAINER), "test@pkgng.lan") == 0);
+
#endif
+

+
	i = 0;
+
	while (pkg_deps(p, &dep) == EPKG_OK) {
+
		if (i == 0) {
+
			ATF_REQUIRE(strcmp(pkg_dep_name(dep), "depfoo") == 0);
+
			ATF_REQUIRE(strcmp(pkg_dep_origin(dep), "dep/foo") == 0);
+
			ATF_REQUIRE(strcmp(pkg_dep_version(dep), "1.2") == 0);
+
		} else if (i == 1) {
+
			ATF_REQUIRE(strcmp(pkg_dep_name(dep), "depbar") == 0);
+
			ATF_REQUIRE(strcmp(pkg_dep_origin(dep), "dep/bar") == 0);
+
			ATF_REQUIRE(strcmp(pkg_dep_version(dep), "3.4") == 0);
+
		}
+
		i++;
+
	}
+
	ATF_REQUIRE(i == 2);
+

+
	i = 0;
+
#if 0
+
	while (pkg_conflicts(p, &conflict) == EPKG_OK) {
+
		if (i == 0) {
+
			ATF_REQUIRE(strcmp(pkg_conflict_glob(conflict), "foo-*") == 0);
+
		} else if (i == 1) {
+
			ATF_REQUIRE(strcmp(pkg_conflict_glob(conflict), "bar-*") == 0);
+
		}
+
		i++;
+
	}
+
	ATF_REQUIRE(i == 2);
+
#endif
+

+
	i = 0;
+
	while (pkg_options(p, &option) == EPKG_OK) {
+
		if (i == 0) {
+
			ATF_REQUIRE(strcmp(pkg_option_opt(option), "foo") == 0);
+
			ATF_REQUIRE(strcmp(pkg_option_value(option), "true") == 0);
+
		} else if (i == 1) {
+
			ATF_REQUIRE(strcmp(pkg_option_opt(option), "bar") == 0);
+
			ATF_REQUIRE(strcmp(pkg_option_value(option), "false") == 0);
+
		}
+
		i++;
+
	}
+
	ATF_REQUIRE(i == 2);
+

+
	ATF_REQUIRE(pkg_files(p, &file) == EPKG_OK);
+
	ATF_REQUIRE(strcmp(pkg_file_path(file), "/usr/local/bin/foo") ==
+
				0);
+
#if 0
+
	ATF_REQUIRE(strcmp(pkg_file_sha256(file),
+
				"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b")
+
				== 0);
+
#endif
+
	pkg_free(p);
+
/*	p = NULL;
+

+
	ATF_REQUIRE(pkg_new(&p, PKG_FILE) == EPKG_OK);
+
	ATF_REQUIRE(pkg_parse_manifest(p, wrong_manifest1) == EPKG_FATAL);
+

+
	pkg_free(p);
+
	p = NULL;
+

+
	ATF_REQUIRE(pkg_new(&p, PKG_FILE) == EPKG_OK);
+
	ATF_REQUIRE(pkg_parse_manifest(p, wrong_manifest2) == EPKG_FATAL);
+

+
	pkg_free(p);
+
	p = NULL;
+

+
	ATF_REQUIRE(pkg_new(&p, PKG_FILE) == EPKG_OK);
+
	ATF_REQUIRE(pkg_parse_manifest(p, wrong_manifest3) == EPKG_FATAL);
+

+
	pkg_free(p);
+
	p = NULL;
+

+
	ATF_REQUIRE(pkg_new(&p, PKG_FILE) == EPKG_OK);
+
	ATF_REQUIRE(pkg_parse_manifest(p, wrong_manifest4) == EPKG_FATAL);
+
	pkg_free(p);
+
*/
+
}
added tests/lib/pkg.c
@@ -0,0 +1,7 @@
+
#include <atf-c.h>
+
#include <pkg.h>
+

+
void
+
test_pkg(void)
+
{
+
}
added tests/lib/test.c
@@ -0,0 +1,29 @@
+
#include <atf-c.h>
+
#include "tests.h"
+

+
ATF_TC(manifest);
+
ATF_TC_HEAD(manifest, tc)
+
{
+
    atf_tc_set_md_var(tc, "descr", "Testing manifest loading...");
+
}
+
ATF_TC_BODY(manifest, tc)
+
{
+
    test_manifest();
+
}
+

+
ATF_TC(pkg);
+
ATF_TC_HEAD(pkg, tc)
+
{
+
    atf_tc_set_md_var(tc, "descr", "Testing pkg interface...");
+
}
+

+
ATF_TC_BODY(pkg, tc)
+
{
+
    test_pkg();
+
}
+
ATF_TP_ADD_TCS(tp)
+
{
+
    ATF_TP_ADD_TC(tp, manifest);
+
    ATF_TP_ADD_TC(tp, pkg);
+
    return atf_no_error();
+
}
added tests/lib/tests.h
@@ -0,0 +1,5 @@
+
#include <atf-c.h>
+

+
void test_manifest(void);
+
void test_pkg(void);
+

deleted tests/manifest.c
@@ -1,215 +0,0 @@
-
#include <atf-c.h>
-
#include <pkg.h>
-
#include <string.h>
-

-
#include "tests.h"
-

-
char manifest[] = ""
-
	"name: foobar\n"
-
	"version: 0.3\n"
-
	"origin: foo/bar\n"
-
	"comment: A dummy manifest\n"
-
	"arch: amd64\n"
-
	"osversion: 800500\n"
-
	"www: http://www.foobar.com\n"
-
	"maintainer: test@pkgng.lan\n"
-
	"flatsize: 10000\n"
-
	"deps:\n"
-
	"  depfoo: {origin: dep/foo, version: 1.2}\n"
-
	"  depbar: {origin: dep/bar, version: 3.4}\n"
-
	"hello: world\n" /* unknown keyword should not be a problem */
-
	"conflicts: [foo-*, bar-*]\n"
-
	"options:\n"
-
	"  foo: true\n"
-
	"  bar: false\n"
-
	"files:\n"
-
	"  /usr/local/bin/foo: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b\n";
-

-
/* Name empty */
-
char wrong_manifest1[] = ""
-
	"name:\n"
-
	"version: 0.3\n"
-
	"origin: foo/bar\n"
-
	"comment: A dummy manifest\n"
-
	"arch: amd64\n"
-
	"osversion: 800500\n"
-
	"www: http://www.foobar.com\n"
-
	"maintainer: test@pkgng.lan\n"
-
	"flatsize: 10000\n"
-
	"deps:\n"
-
	"  depfoo: {origin: dep/foo, version: 1.2}\n"
-
	"  depbar: {origin: dep/bar, version: 3.4}\n"
-
	"hello: world\n" /* unknown keyword should not be a problem */
-
	"conflicts: [foo-*, bar-*]\n"
-
	"options:\n"
-
	"  foo: true\n"
-
	"  bar: false\n"
-
	"files:\n"
-
	"  /usr/local/bin/foo: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b\n";
-

-
/* bad dependency line */
-
char wrong_manifest2[] = ""
-
	"name: foobar\n"
-
	"version: 0.3\n"
-
	"origin: foo/bar\n"
-
	"comment: A dummy manifest\n"
-
	"arch: amd64\n"
-
	"osversion: 800500\n"
-
	"www: http://www.foobar.com\n"
-
	"maintainer: test@pkgng.lan\n"
-
	"flatsize: 10000\n"
-
	"deps:\n"
-
	"  depfoo: {origin: dep/foo}\n"
-
	"  depbar: {origin: dep/bar, version: 3.4}\n"
-
	"hello: world\n" /* unknown keyword should not be a problem */
-
	"conflicts: [foo-*, bar-*]\n"
-
	"options:\n"
-
	"  foo: true\n"
-
	"  bar: false\n"
-
	"files:\n"
-
	"  /usr/local/bin/foo: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b\n";
-

-
/* bad conflict line */
-
char wrong_manifest3[] = ""
-
	"name: foobar\n"
-
	"version: 0.3\n"
-
	"origin: foo/bar\n"
-
	"comment: A dummy manifest\n"
-
	"arch: amd64\n"
-
	"osversion: 800500\n"
-
	"www: http://www.foobar.com\n"
-
	"maintainer: test@pkgng.lan\n"
-
	"flatsize: 10000\n"
-
	"deps:\n"
-
	"  depfoo: {origin: dep/foo, version: 1.2}\n"
-
	"  depbar: {origin: dep/bar, version: 3.4}\n"
-
	"hello: world\n" /* unknown keyword should not be a problem */
-
	"conflicts: []\n"
-
	"options:\n"
-
	"  foo: true\n"
-
	"  bar: false\n"
-
	"files:\n"
-
	"  /usr/local/bin/foo: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b\n";
-

-
/* bad option line */
-
char wrong_manifest4[] = ""
-
	"name: foobar\n"
-
	"version: 0.3\n"
-
	"origin: foo/bar\n"
-
	"comment: A dummy manifest\n"
-
	"arch: amd64\n"
-
	"osversion: 800500\n"
-
	"www: http://www.foobar.com\n"
-
	"maintainer: test@pkgng.lan\n"
-
	"flatsize: 10000\n"
-
	"deps:\n"
-
	"  depfoo: {origin: dep/foo, version: 1.2}\n"
-
	"  depbar: {origin: dep/bar, version: 3.4}\n"
-
	"hello: world\n" /* unknown keyword should not be a problem */
-
	"conflicts: [foo-*, bar-*]\n"
-
	"options:\n"
-
	"  foo:\n"
-
	"  bar: false\n"
-
	"files:\n"
-
	"  /usr/local/bin/foo: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b\n";
-

-
void
-
test_manifest(void)
-
{
-
	struct pkg *p = NULL;
-
	struct pkg_dep *dep = NULL;
-
	struct pkg_conflict *conflict = NULL;
-
	struct pkg_option *option = NULL;
-
	struct pkg_file *file = NULL;
-
	int i;
-

-
	ATF_REQUIRE_EQ(EPKG_OK, pkg_new(&p, PKG_FILE));
-
	ATF_REQUIRE(p != NULL);
-
	ATF_REQUIRE_EQ(EPKG_OK, pkg_parse_manifest(p, manifest));
-

-
#if 0
-
	ATF_REQUIRE(strcmp(pkg_get(p, PKG_NAME), "foobar") == 0);
-
	ATF_REQUIRE(strcmp(pkg_get(p, PKG_VERSION), "0.3") == 0);
-
	ATF_REQUIRE(strcmp(pkg_get(p, PKG_ORIGIN), "foo/bar") == 0);
-
	ATF_REQUIRE(strcmp(pkg_get(p, PKG_COMMENT), "A dummy manifest") == 0);
-
	ATF_REQUIRE(strcmp(pkg_get(p, PKG_ARCH), "amd64") == 0);
-
	ATF_REQUIRE(strcmp(pkg_get(p, PKG_VERSION), "800500") == 0);
-
	ATF_REQUIRE(strcmp(pkg_get(p, PKG_WWW), "http://www.foobar.com") == 0);
-
	ATF_REQUIRE(strcmp(pkg_get(p, PKG_MAINTAINER), "test@pkgng.lan") == 0);
-
#endif
-

-
	i = 0;
-
	while (pkg_deps(p, &dep) == EPKG_OK) {
-
		if (i == 0) {
-
			ATF_REQUIRE(strcmp(pkg_dep_name(dep), "depfoo") == 0);
-
			ATF_REQUIRE(strcmp(pkg_dep_origin(dep), "dep/foo") == 0);
-
			ATF_REQUIRE(strcmp(pkg_dep_version(dep), "1.2") == 0);
-
		} else if (i == 1) {
-
			ATF_REQUIRE(strcmp(pkg_dep_name(dep), "depbar") == 0);
-
			ATF_REQUIRE(strcmp(pkg_dep_origin(dep), "dep/bar") == 0);
-
			ATF_REQUIRE(strcmp(pkg_dep_version(dep), "3.4") == 0);
-
		}
-
		i++;
-
	}
-
	ATF_REQUIRE(i == 2);
-

-
	i = 0;
-
#if 0
-
	while (pkg_conflicts(p, &conflict) == EPKG_OK) {
-
		if (i == 0) {
-
			ATF_REQUIRE(strcmp(pkg_conflict_glob(conflict), "foo-*") == 0);
-
		} else if (i == 1) {
-
			ATF_REQUIRE(strcmp(pkg_conflict_glob(conflict), "bar-*") == 0);
-
		}
-
		i++;
-
	}
-
	ATF_REQUIRE(i == 2);
-
#endif
-

-
	i = 0;
-
	while (pkg_options(p, &option) == EPKG_OK) {
-
		if (i == 0) {
-
			ATF_REQUIRE(strcmp(pkg_option_opt(option), "foo") == 0);
-
			ATF_REQUIRE(strcmp(pkg_option_value(option), "true") == 0);
-
		} else if (i == 1) {
-
			ATF_REQUIRE(strcmp(pkg_option_opt(option), "bar") == 0);
-
			ATF_REQUIRE(strcmp(pkg_option_value(option), "false") == 0);
-
		}
-
		i++;
-
	}
-
	ATF_REQUIRE(i == 2);
-

-
	ATF_REQUIRE(pkg_files(p, &file) == EPKG_OK);
-
	ATF_REQUIRE(strcmp(pkg_file_path(file), "/usr/local/bin/foo") ==
-
				0);
-
#if 0
-
	ATF_REQUIRE(strcmp(pkg_file_sha256(file),
-
				"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b")
-
				== 0);
-
#endif
-
	pkg_free(p);
-
/*	p = NULL;
-

-
	ATF_REQUIRE(pkg_new(&p, PKG_FILE) == EPKG_OK);
-
	ATF_REQUIRE(pkg_parse_manifest(p, wrong_manifest1) == EPKG_FATAL);
-

-
	pkg_free(p);
-
	p = NULL;
-

-
	ATF_REQUIRE(pkg_new(&p, PKG_FILE) == EPKG_OK);
-
	ATF_REQUIRE(pkg_parse_manifest(p, wrong_manifest2) == EPKG_FATAL);
-

-
	pkg_free(p);
-
	p = NULL;
-

-
	ATF_REQUIRE(pkg_new(&p, PKG_FILE) == EPKG_OK);
-
	ATF_REQUIRE(pkg_parse_manifest(p, wrong_manifest3) == EPKG_FATAL);
-

-
	pkg_free(p);
-
	p = NULL;
-

-
	ATF_REQUIRE(pkg_new(&p, PKG_FILE) == EPKG_OK);
-
	ATF_REQUIRE(pkg_parse_manifest(p, wrong_manifest4) == EPKG_FATAL);
-
	pkg_free(p);
-
*/
-
}
deleted tests/pkg.c
@@ -1,7 +0,0 @@
-
#include <atf-c.h>
-
#include <pkg.h>
-

-
void
-
test_pkg(void)
-
{
-
}
deleted tests/test.c
@@ -1,29 +0,0 @@
-
#include <atf-c.h>
-
#include "tests.h"
-

-
ATF_TC(manifest);
-
ATF_TC_HEAD(manifest, tc)
-
{
-
    atf_tc_set_md_var(tc, "descr", "Testing manifest loading...");
-
}
-
ATF_TC_BODY(manifest, tc)
-
{
-
    test_manifest();
-
}
-

-
ATF_TC(pkg);
-
ATF_TC_HEAD(pkg, tc)
-
{
-
    atf_tc_set_md_var(tc, "descr", "Testing pkg interface...");
-
}
-

-
ATF_TC_BODY(pkg, tc)
-
{
-
    test_pkg();
-
}
-
ATF_TP_ADD_TCS(tp)
-
{
-
    ATF_TP_ADD_TC(tp, manifest);
-
    ATF_TP_ADD_TC(tp, pkg);
-
    return atf_no_error();
-
}
deleted tests/tests.h
@@ -1,5 +0,0 @@
-
#include <atf-c.h>
-

-
void test_manifest(void);
-
void test_pkg(void);
-