Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
fetch.sh: improve tests to work and cleanup reliably, add some tests
John Hood committed 4 years ago
commit 1aacbc72080041130900d921aa5845dd020091d8
parent 5d825ad
1 file changed +96 -20
modified tests/frontend/fetch.sh
@@ -2,73 +2,149 @@

. $(atf_get_srcdir)/test_environment.sh

+
TEST_ROOT=${TMPDIR}
+
CONF=${TEST_ROOT}/conf
+
REPOS=${TEST_ROOT}/repos
+
REPO=${TEST_ROOT}/repo
+
DB=${TEST_ROOT}/db
+
CACHE=${TEST_ROOT}/cache
+
WORK=${TEST_ROOT}/work
+

+
PKG_DBDIR=${DB}
+

tests_init \
+
	fetch_dep_success \
	fetch_missing \
-
	fetch_missing_dep
+
	fetch_missing_dep \
+
	fetch_missing_file \
+
	fetch_missing_dep_file

test_setup()
{
+
	variant=$1
+
	atf_check rm -rf ${TEST_ROOT}/*
+
	atf_check mkdir -p ${CONF} ${REPOS} ${REPO} ${DB} ${CACHE} ${WORK}
	# Do a local config to avoid permissions-on-system-db errors.
-
        cat > ${TMPDIR}/pkg.conf << EOF
-
PKG_CACHEDIR=${TMPDIR}/cache
-
PKG_DBDIR=${TMPDIR}
+
        if ! cat > ${CONF}/pkg.conf << EOF
+
PKG_CACHEDIR=${CACHE}
+
PKG_DBDIR=${DB}
REPOS_DIR=[
-
	${TMPDIR}/reposconf
+
	${REPOS}
]
repositories: {
-
        local: { url : file://${TMPDIR} }
+
        test: { url : file://${REPO} }
}
EOF
-
	# Create one package so we at least have a repo.
-
	atf_check -s exit:0 sh ${RESOURCEDIR}/test_subr.sh new_pkg ${TMPDIR}/test test 1 /usr/local
-
	cat << EOF >> ${TMPDIR}/test.ucl
+
	then
+
	    atf_fail
+
	fi
+
	# Create two packages so we at least have a repo.
+
	atf_check -s exit:0 sh ${RESOURCEDIR}/test_subr.sh new_pkg ${WORK}/test test 1 /usr/local
+
	if ! cat << EOF >> ${WORK}/test.ucl
deps: {
	b: {
-
		origin: "wedontcare",
+
		origin: "b",
		version: "1"
	}
}
EOF
+
	then
+
	    atf_fail
+
	fi
	atf_check \
		-o ignore \
		-e empty \
		-s exit:0 \
-
		pkg -C "${TMPDIR}/pkg.conf" create -o ${TMPDIR} -M ${TMPDIR}/test.ucl
+
		pkg -C "${CONF}/pkg.conf" create -o ${REPO} -M ${WORK}/test.ucl
+
	atf_check rm -f ${WORK}/*
+

+
	if [ "${variant}" != "missing-pkg" ]; then
+
		atf_check -s exit:0 sh ${RESOURCEDIR}/test_subr.sh new_pkg ${WORK}/b b 1 /usr/local
+
		atf_check \
+
			-o ignore \
+
			-e empty \
+
			-s exit:0 \
+
			pkg -C "${CONF}/pkg.conf" create -o ${REPO} -M ${WORK}/b.ucl
+
		atf_check rm -f ${WORK}/*
+
	fi

	atf_check \
		-o ignore \
		-e empty \
		-s exit:0 \
-
		pkg -C "${TMPDIR}/pkg.conf" repo ${TMPDIR}
+
		pkg -C "${CONF}/pkg.conf" repo ${REPO}
+

+
	if [ "${variant}" = "missing-file" ]; then
+
		atf_check rm -f ${REPO}/test-1.pkg
+
	fi
+
	if [ "${variant}" = "missing-dep-file" ]; then
+
		atf_check rm -f ${REPO}/b-1.pkg
+
	fi

-
	mkdir -p ${TMPDIR}/reposconf
-
	cat << EOF > ${TMPDIR}/reposconf/repo.conf
-
local: {
-
	url: file:///$TMPDIR,
+
	cat << EOF > ${REPOS}/test.conf
+
test: {
+
	url: file:///${REPO},
	enabled: true
}
EOF
+
	atf_check \
+
		-o ignore \
+
		pkg -C "${CONF}/pkg.conf" update
+
	pkg -C "${CONF}/pkg.conf" search .
+
}
+

+
fetch_dep_success_body()
+
{
+
	test_setup
+

+
	atf_check \
+
		-o ignore \
+
		-e empty \
+
		-s exit:0 \
+
		pkg -C "${CONF}/pkg.conf" fetch -U -r test -y -d test
}

fetch_missing_body()
{
	test_setup
-
    
+

	atf_check \
		-o ignore \
		-e not-empty \
		-s not-exit:0 \
-
		pkg -C "${TMPDIR}/pkg.conf" fetch -r local -y missing
+
		pkg -C "${CONF}/pkg.conf" fetch -r test -y missing
}

fetch_missing_dep_body()
{
-
	test_setup
+
	test_setup missing-pkg

	atf_check \
		-o ignore \
		-e match:"pkg: test has a missing dependency: b$" \
		-s not-exit:0 \
-
		pkg -C "${TMPDIR}/pkg.conf" fetch -r local -d -y test
+
		pkg -C "${CONF}/pkg.conf" fetch -r test -d -y test
+
}
+

+
fetch_missing_file_body()
+
{
+
	test_setup missing-file
+

+
	atf_check \
+
		-o ignore \
+
		-e match:"cached package test-1: file://.*/test-1.pkg is missing from repo" \
+
		-s not-exit:0 \
+
		pkg -C "${CONF}/pkg.conf" fetch -r test -d -y test
+
}
+

+
fetch_missing_dep_file_body()
+
{
+
	test_setup missing-dep-file
+

+
	atf_check \
+
		-o ignore \
+
		-e match:"cached package b-1: file://.*/b-1.pkg is missing from repo" \
+
		-s not-exit:0 \
+
		pkg -C "${CONF}/pkg.conf" fetch -r test -d -y test
}