Skip to content

Commit e56d034

Browse files
committed
test-lib: add functions to test repo version
1 parent 1e354fe commit e56d034

File tree

1 file changed

+84
-0
lines changed

1 file changed

+84
-0
lines changed

sharness/lib/test-lib.sh

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,3 +144,87 @@ test_init_daemon() {
144144
exec_docker "$docid" "ipfs config Bootstrap --json null"
145145
'
146146
}
147+
148+
test_docker_wait_for_file() {
149+
docid="$1"
150+
loops="$2"
151+
delay="$3"
152+
file="$4"
153+
fwaitc=0
154+
while ! exec_docker "$docid" "test -f '$file'"
155+
do
156+
if test $fwaitc -ge $loops
157+
then
158+
echo "Error: timed out waiting for file: $file"
159+
return 1
160+
fi
161+
162+
go-sleep $delay
163+
fwaitc=$(expr $fwaitc + 1)
164+
done
165+
}
166+
167+
major_number() {
168+
vers="$1"
169+
170+
# Hack around 'expr' exiting with code 1 when it outputs 0
171+
case "$vers" in
172+
0) echo "0" ;;
173+
0.*) echo "0" ;;
174+
*) expr "$vers" : "\([^.]*\).*" || return 1
175+
esac
176+
}
177+
178+
check_at_least_version() {
179+
MIN_VERS="$1"
180+
CUR_VERS="$2"
181+
PROG_NAME="$3"
182+
183+
# Get major, minor and fix numbers for each version
184+
MIN_MAJ=$(major_number "$MIN_VERS") || die "No major version number in '$MIN_VERS' for '$PROG_NAME'"
185+
CUR_MAJ=$(major_number "$CUR_VERS") || die "No major version number in '$CUR_VERS' for '$PROG_NAME'"
186+
187+
if MIN_MIN=$(expr "$MIN_VERS" : "[^.]*\.\([^.]*\).*"); then
188+
MIN_FIX=$(expr "$MIN_VERS" : "[^.]*\.[^.]*\.\([^.]*\).*") || MIN_FIX="0"
189+
else
190+
MIN_MIN="0"
191+
MIN_FIX="0"
192+
fi
193+
if CUR_MIN=$(expr "$CUR_VERS" : "[^.]*\.\([^.]*\).*"); then
194+
CUR_FIX=$(expr "$CUR_VERS" : "[^.]*\.[^.]*\.\([^.]*\).*") || CUR_FIX="0"
195+
else
196+
CUR_MIN="0"
197+
CUR_FIX="0"
198+
fi
199+
200+
# Compare versions
201+
test "$CUR_MAJ" -lt "$MIN_MAJ" && return 1
202+
test "$CUR_MAJ" -gt "$MIN_MAJ" && return 0
203+
test "$CUR_MIN" -lt "$MIN_MIN" && return 1
204+
test "$CUR_MIN" -gt "$MIN_MIN" && return 0
205+
test "$CUR_FIX" -ge "$MIN_FIX"
206+
}
207+
208+
# Print the repo version corresponding to an IPFS_VERSION passed as
209+
# argument.
210+
test_get_repo_version() {
211+
IPFS_VERSION="$1"
212+
213+
REPO_VERSION=1
214+
215+
check_at_least_version "0.3.0" "$IPFS_VERSION" "ipfs" && REPO_VERSION=2
216+
217+
check_at_least_version "0.4.0" "$IPFS_VERSION" "ipfs" && REPO_VERSION=3
218+
219+
echo "$REPO_VERSION"
220+
}
221+
222+
test_repo_version() {
223+
IPFS_VERSION="$1"
224+
225+
test_expect_success "repository version looks good" '
226+
test_get_repo_version "$IPFS_VERSION" >expected &&
227+
exec_docker "$DOCID" "cat \"$IPFS_PATH/version\"" >actual &&
228+
test_cmp expected actual
229+
'
230+
}

0 commit comments

Comments
 (0)