Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/pkg
Path: blob/main/tests/frontend/fetch.sh
2065 views
1
#! /usr/bin/env atf-sh
2
3
. $(atf_get_srcdir)/test_environment.sh
4
5
TEST_ROOT=${TMPDIR}
6
CONF=${TEST_ROOT}/conf
7
REPOS=${TEST_ROOT}/repos
8
REPO=${TEST_ROOT}/repo
9
DB=${TEST_ROOT}/db
10
CACHE=${TEST_ROOT}/cache
11
WORK=${TEST_ROOT}/work
12
13
PKG_DBDIR=${DB}
14
15
tests_init \
16
fetch_dep_success \
17
fetch_missing \
18
fetch_missing_dep \
19
fetch_missing_file \
20
fetch_missing_dep_file
21
22
test_setup()
23
{
24
variant=$1
25
atf_check rm -rf ${TEST_ROOT}/*
26
atf_check mkdir -p ${CONF} ${REPOS} ${REPO} ${DB} ${CACHE} ${WORK}
27
# Do a local config to avoid permissions-on-system-db errors.
28
if ! cat > ${CONF}/pkg.conf << EOF
29
PKG_CACHEDIR=${CACHE}
30
PKG_DBDIR=${DB}
31
REPOS_DIR=[
32
${REPOS}
33
]
34
repositories: {
35
test: { url : file://${REPO} }
36
}
37
EOF
38
then
39
atf_fail
40
fi
41
# Create two packages so we at least have a repo.
42
atf_check -s exit:0 sh ${RESOURCEDIR}/test_subr.sh new_pkg ${WORK}/test test 1 /usr/local
43
if ! cat << EOF >> ${WORK}/test.ucl
44
deps: {
45
b: {
46
origin: "b",
47
version: "1"
48
}
49
}
50
EOF
51
then
52
atf_fail
53
fi
54
atf_check \
55
-o ignore \
56
-e empty \
57
-s exit:0 \
58
pkg -C "${CONF}/pkg.conf" create -o ${REPO} -M ${WORK}/test.ucl
59
atf_check rm -f ${WORK}/*
60
61
if [ "${variant}" != "missing-pkg" ]; then
62
atf_check -s exit:0 sh ${RESOURCEDIR}/test_subr.sh new_pkg ${WORK}/b b 1 /usr/local
63
atf_check \
64
-o ignore \
65
-e empty \
66
-s exit:0 \
67
pkg -C "${CONF}/pkg.conf" create -o ${REPO} -M ${WORK}/b.ucl
68
atf_check rm -f ${WORK}/*
69
fi
70
71
atf_check \
72
-o ignore \
73
-e empty \
74
-s exit:0 \
75
pkg -C "${CONF}/pkg.conf" repo ${REPO}
76
77
if [ "${variant}" = "missing-file" ]; then
78
atf_check rm -f ${REPO}/test-1.pkg
79
fi
80
if [ "${variant}" = "missing-dep-file" ]; then
81
atf_check rm -f ${REPO}/b-1.pkg
82
fi
83
84
cat << EOF > ${REPOS}/test.conf
85
test: {
86
url: file:///${REPO},
87
enabled: true
88
}
89
EOF
90
atf_check \
91
-o ignore \
92
pkg -C "${CONF}/pkg.conf" update
93
pkg -C "${CONF}/pkg.conf" search .
94
}
95
96
fetch_dep_success_body()
97
{
98
test_setup
99
100
atf_check \
101
-o ignore \
102
-e empty \
103
-s exit:0 \
104
pkg -C "${CONF}/pkg.conf" fetch -U -r test -y -d test
105
}
106
107
fetch_missing_body()
108
{
109
test_setup
110
111
atf_check \
112
-o ignore \
113
-e not-empty \
114
-s not-exit:0 \
115
pkg -C "${CONF}/pkg.conf" fetch -r test -y missing
116
}
117
118
fetch_missing_dep_body()
119
{
120
test_setup missing-pkg
121
122
atf_check \
123
-o ignore \
124
-e match:"pkg: test has a missing dependency: b$" \
125
-s not-exit:0 \
126
pkg -C "${CONF}/pkg.conf" fetch -r test -d -y test
127
}
128
129
fetch_missing_file_body()
130
{
131
test_setup missing-file
132
133
atf_check \
134
-o ignore \
135
-e match:"cached package test-1: file://.*/test-1.pkg is missing from repo" \
136
-s not-exit:0 \
137
pkg -C "${CONF}/pkg.conf" fetch -r test -d -y test
138
}
139
140
fetch_missing_dep_file_body()
141
{
142
test_setup missing-dep-file
143
144
atf_check \
145
-o ignore \
146
-e match:"cached package b-1: file://.*/b-1.pkg is missing from repo" \
147
-s not-exit:0 \
148
pkg -C "${CONF}/pkg.conf" fetch -r test -d -y test
149
}
150
151
152