Alternatives framework for xbps (2/2).
See xbps-alternatives(1) for more information. Thanks to all who helped to design this and for fixing grammar in the manual page.
This commit is contained in:
@@ -3,6 +3,7 @@ syntax("kyuafile", 1)
|
||||
test_suite("xbps")
|
||||
|
||||
include('libxbps/Kyuafile')
|
||||
include('xbps-alternatives/Kyuafile')
|
||||
include('xbps-checkvers/Kyuafile')
|
||||
include('xbps-create/Kyuafile')
|
||||
include('xbps-install/Kyuafile')
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
-include ../../config.mk
|
||||
|
||||
SUBDIRS = common libxbps xbps-checkvers xbps-create xbps-install xbps-query xbps-rindex xbps-uhelper
|
||||
SUBDIRS = common libxbps xbps-alternatives xbps-checkvers xbps-create xbps-install xbps-query xbps-rindex xbps-uhelper
|
||||
|
||||
include ../../mk/subdir.mk
|
||||
|
||||
4
tests/xbps/xbps-alternatives/Kyuafile
Normal file
4
tests/xbps/xbps-alternatives/Kyuafile
Normal file
@@ -0,0 +1,4 @@
|
||||
syntax("kyuafile", 1)
|
||||
|
||||
test_suite("xbps-alternatives")
|
||||
atf_test_program{name="main"}
|
||||
8
tests/xbps/xbps-alternatives/Makefile
Normal file
8
tests/xbps/xbps-alternatives/Makefile
Normal file
@@ -0,0 +1,8 @@
|
||||
TOPDIR = ../../..
|
||||
-include $(TOPDIR)/config.mk
|
||||
|
||||
TESTSHELL = main
|
||||
TESTSSUBDIR = xbps/xbps-alternatives
|
||||
EXTRA_FILES = Kyuafile
|
||||
|
||||
include $(TOPDIR)/mk/test.mk
|
||||
270
tests/xbps/xbps-alternatives/main.sh
Normal file
270
tests/xbps/xbps-alternatives/main.sh
Normal file
@@ -0,0 +1,270 @@
|
||||
#! /usr/bin/env atf-sh
|
||||
|
||||
atf_test_case register_one
|
||||
|
||||
register_one_head() {
|
||||
atf_set "descr" "xbps-alternatives: register one pkg wth an alternatives group"
|
||||
}
|
||||
register_one_body() {
|
||||
mkdir -p repo pkg_A/usr/bin
|
||||
touch pkg_A/usr/bin/fileA
|
||||
cd repo
|
||||
xbps-create -A noarch -n A-1.1_1 -s "A pkg" --alternatives "file:/usr/bin/file:/usr/bin/fileA" ../pkg_A
|
||||
atf_check_equal $? 0
|
||||
xbps-rindex -d -a $PWD/*.xbps
|
||||
atf_check_equal $? 0
|
||||
cd ..
|
||||
|
||||
xbps-install -r root --repository=repo -ydv A
|
||||
atf_check_equal $? 0
|
||||
rv=1
|
||||
if [ -e root/usr/bin/fileA ]; then
|
||||
lnk=$(readlink root/usr/bin/file)
|
||||
if [ "$lnk" = "/usr/bin/fileA" ]; then
|
||||
rv=0
|
||||
fi
|
||||
echo "A lnk: $lnk"
|
||||
fi
|
||||
atf_check_equal $rv 0
|
||||
}
|
||||
|
||||
atf_test_case register_multi
|
||||
|
||||
register_multi_head() {
|
||||
atf_set "descr" "xbps-alternatives: register multiple pkgs with an alternatives group"
|
||||
}
|
||||
register_multi_body() {
|
||||
mkdir -p repo pkg_A/usr/bin pkg_B/usr/bin
|
||||
touch pkg_A/usr/bin/fileA pkg_B/usr/bin/fileB
|
||||
cd repo
|
||||
xbps-create -A noarch -n A-1.1_1 -s "A pkg" --alternatives "file:/usr/bin/file:/usr/bin/fileA" ../pkg_A
|
||||
atf_check_equal $? 0
|
||||
xbps-create -A noarch -n B-1.1_1 -s "B pkg" --alternatives "file:/usr/bin/file:/usr/bin/fileB" ../pkg_B
|
||||
atf_check_equal $? 0
|
||||
xbps-rindex -d -a $PWD/*.xbps
|
||||
atf_check_equal $? 0
|
||||
cd ..
|
||||
|
||||
xbps-install -r root --repository=repo -ydv A
|
||||
atf_check_equal $? 0
|
||||
rv=1
|
||||
if [ -e root/usr/bin/fileA ]; then
|
||||
lnk=$(readlink root/usr/bin/file)
|
||||
if [ "$lnk" = "/usr/bin/fileA" ]; then
|
||||
rv=0
|
||||
fi
|
||||
echo "A lnk: $lnk"
|
||||
fi
|
||||
atf_check_equal $rv 0
|
||||
|
||||
xbps-install -r root --repository=repo -ydv B
|
||||
atf_check_equal $? 0
|
||||
rv=1
|
||||
if [ -e root/usr/bin/fileA -a -e root/usr/bin/fileB ]; then
|
||||
lnk=$(readlink root/usr/bin/file)
|
||||
if [ "$lnk" = "/usr/bin/fileA" ]; then
|
||||
rv=0
|
||||
fi
|
||||
echo "B lnk: $lnk"
|
||||
fi
|
||||
atf_check_equal $rv 0
|
||||
}
|
||||
|
||||
atf_test_case unregister_one
|
||||
|
||||
unregister_one_head() {
|
||||
atf_set "descr" "xbps-alternatives: unregister one pkg with an alternatives group"
|
||||
}
|
||||
unregister_one_body() {
|
||||
mkdir -p repo pkg_A/usr/bin
|
||||
touch pkg_A/usr/bin/fileA
|
||||
cd repo
|
||||
xbps-create -A noarch -n A-1.1_1 -s "A pkg" --alternatives "file:/usr/bin/file:/usr/bin/fileA" ../pkg_A
|
||||
atf_check_equal $? 0
|
||||
xbps-rindex -d -a $PWD/*.xbps
|
||||
atf_check_equal $? 0
|
||||
cd ..
|
||||
|
||||
xbps-install -r root --repository=repo -ydv A
|
||||
atf_check_equal $? 0
|
||||
xbps-remove -r root -yvd A
|
||||
rv=1
|
||||
if [ ! -L root/usr/bin/file -a ! -e root/usr/bin/fileA ]; then
|
||||
rv=0
|
||||
fi
|
||||
atf_check_equal $rv 0
|
||||
}
|
||||
|
||||
atf_test_case unregister_multi
|
||||
|
||||
unregister_multi_head() {
|
||||
atf_set "descr" "xbps-alternatives: unregister multiple pkgs with an alternatives group"
|
||||
}
|
||||
unregister_multi_body() {
|
||||
mkdir -p repo pkg_A/usr/bin pkg_B/usr/bin
|
||||
touch pkg_A/usr/bin/fileA pkg_B/usr/bin/fileB
|
||||
cd repo
|
||||
xbps-create -A noarch -n A-1.1_1 -s "A pkg" --alternatives "file:/usr/bin/file:/usr/bin/fileA" ../pkg_A
|
||||
atf_check_equal $? 0
|
||||
xbps-create -A noarch -n B-1.1_1 -s "B pkg" --alternatives "file:/usr/bin/file:/usr/bin/fileB" ../pkg_B
|
||||
atf_check_equal $? 0
|
||||
xbps-rindex -d -a $PWD/*.xbps
|
||||
atf_check_equal $? 0
|
||||
cd ..
|
||||
|
||||
xbps-install -r root --repository=repo -ydv A
|
||||
atf_check_equal $? 0
|
||||
|
||||
if [ -e root/usr/bin/fileA ]; then
|
||||
lnk=$(readlink root/usr/bin/file)
|
||||
if [ "$lnk" = "/usr/bin/fileA" ]; then
|
||||
rv=0
|
||||
fi
|
||||
echo "A lnk: $lnk"
|
||||
fi
|
||||
atf_check_equal $rv 0
|
||||
xbps-remove -r root -yvd A
|
||||
rv=1
|
||||
if [ ! -L root/usr/bin/file -a ! -e root/usr/bin/fileA ]; then
|
||||
rv=0
|
||||
fi
|
||||
atf_check_equal $rv 0
|
||||
|
||||
xbps-install -r root --repository=repo -ydv B
|
||||
atf_check_equal $? 0
|
||||
|
||||
if [ -e root/usr/bin/fileB ]; then
|
||||
lnk=$(readlink root/usr/bin/file)
|
||||
if [ "$lnk" = "/usr/bin/fileB" ]; then
|
||||
rv=0
|
||||
fi
|
||||
echo "A lnk: $lnk"
|
||||
fi
|
||||
atf_check_equal $rv 0
|
||||
|
||||
xbps-remove -r root -yvd B
|
||||
rv=1
|
||||
if [ ! -L root/usr/bin/file -a ! -e root/usr/bin/fileB ]; then
|
||||
rv=0
|
||||
fi
|
||||
atf_check_equal $rv 0
|
||||
}
|
||||
|
||||
atf_test_case set_pkg
|
||||
|
||||
set_pkg_head() {
|
||||
atf_set "descr" "xbps-alternatives: set all alternative groups from pkg"
|
||||
}
|
||||
set_pkg_body() {
|
||||
mkdir -p repo pkg_A/usr/bin pkg_B/usr/bin
|
||||
touch pkg_A/usr/bin/A1 pkg_A/usr/bin/A2 pkg_B/usr/bin/B1 pkg_B/usr/bin/B2
|
||||
cd repo
|
||||
xbps-create -A noarch -n A-1.1_1 -s "A pkg" --alternatives "1:/usr/bin/1:/usr/bin/A1 2:/usr/bin/2:/usr/bin/A2" ../pkg_A
|
||||
atf_check_equal $? 0
|
||||
xbps-create -A noarch -n B-1.1_1 -s "B pkg" --alternatives "1:/usr/bin/1:/usr/bin/B1 2:/usr/bin/2:/usr/bin/B2" ../pkg_B
|
||||
atf_check_equal $? 0
|
||||
xbps-rindex -d -a $PWD/*.xbps
|
||||
atf_check_equal $? 0
|
||||
cd ..
|
||||
|
||||
xbps-install -r root --repository=repo -ydv A B
|
||||
atf_check_equal $? 0
|
||||
xbps-alternatives -r root -s B
|
||||
atf_check_equal $? 0
|
||||
|
||||
rv=1
|
||||
if [ -e root/usr/bin/B1 ]; then
|
||||
lnk=$(readlink root/usr/bin/1)
|
||||
if [ "$lnk" = "/usr/bin/B1" ]; then
|
||||
rv=0
|
||||
fi
|
||||
echo "A lnk: $lnk"
|
||||
fi
|
||||
atf_check_equal $rv 0
|
||||
|
||||
rv=1
|
||||
if [ -e root/usr/bin/B2 ]; then
|
||||
lnk=$(readlink root/usr/bin/2)
|
||||
if [ "$lnk" = "/usr/bin/B2" ]; then
|
||||
rv=0
|
||||
fi
|
||||
echo "A lnk: $lnk"
|
||||
fi
|
||||
atf_check_equal $rv 0
|
||||
|
||||
xbps-alternatives -r root -s A
|
||||
atf_check_equal $? 0
|
||||
|
||||
rv=1
|
||||
if [ -e root/usr/bin/A1 ]; then
|
||||
lnk=$(readlink root/usr/bin/1)
|
||||
if [ "$lnk" = "/usr/bin/A1" ]; then
|
||||
rv=0
|
||||
fi
|
||||
echo "A lnk: $lnk"
|
||||
fi
|
||||
atf_check_equal $rv 0
|
||||
|
||||
rv=1
|
||||
if [ -e root/usr/bin/A2 ]; then
|
||||
lnk=$(readlink root/usr/bin/2)
|
||||
if [ "$lnk" = "/usr/bin/A2" ]; then
|
||||
rv=0
|
||||
fi
|
||||
echo "A lnk: $lnk"
|
||||
fi
|
||||
atf_check_equal $rv 0
|
||||
}
|
||||
|
||||
atf_test_case set_pkg_group
|
||||
|
||||
set_pkg_group_head() {
|
||||
atf_set "descr" "xbps-alternatives: set one alternative group from pkg"
|
||||
}
|
||||
set_pkg_group_body() {
|
||||
mkdir -p repo pkg_A/usr/bin pkg_B/usr/bin
|
||||
touch pkg_A/usr/bin/A1 pkg_A/usr/bin/A2 pkg_B/usr/bin/B1 pkg_B/usr/bin/B2
|
||||
cd repo
|
||||
xbps-create -A noarch -n A-1.1_1 -s "A pkg" --alternatives "1:/usr/bin/1:/usr/bin/A1 2:/usr/bin/2:/usr/bin/A2" ../pkg_A
|
||||
atf_check_equal $? 0
|
||||
xbps-create -A noarch -n B-1.1_1 -s "B pkg" --alternatives "1:/usr/bin/1:/usr/bin/B1 2:/usr/bin/2:/usr/bin/B2" ../pkg_B
|
||||
atf_check_equal $? 0
|
||||
xbps-rindex -d -a $PWD/*.xbps
|
||||
atf_check_equal $? 0
|
||||
cd ..
|
||||
|
||||
xbps-install -r root --repository=repo -ydv A B
|
||||
atf_check_equal $? 0
|
||||
xbps-alternatives -r root -s B -g 2
|
||||
atf_check_equal $? 0
|
||||
|
||||
rv=1
|
||||
if [ -e root/usr/bin/B1 ]; then
|
||||
lnk=$(readlink root/usr/bin/1)
|
||||
if [ "$lnk" = "/usr/bin/A1" ]; then
|
||||
rv=0
|
||||
fi
|
||||
echo "A lnk: $lnk"
|
||||
fi
|
||||
atf_check_equal $rv 0
|
||||
|
||||
rv=1
|
||||
if [ -e root/usr/bin/B2 ]; then
|
||||
lnk=$(readlink root/usr/bin/2)
|
||||
if [ "$lnk" = "/usr/bin/B2" ]; then
|
||||
rv=0
|
||||
fi
|
||||
echo "A lnk: $lnk"
|
||||
fi
|
||||
atf_check_equal $rv 0
|
||||
|
||||
}
|
||||
|
||||
atf_init_test_cases() {
|
||||
atf_add_test_case register_one
|
||||
atf_add_test_case register_multi
|
||||
atf_add_test_case unregister_one
|
||||
atf_add_test_case unregister_multi
|
||||
atf_add_test_case set_pkg
|
||||
atf_add_test_case set_pkg_group
|
||||
}
|
||||
Reference in New Issue
Block a user