xbps-rindex: add test to trigger stage deadlock
This commit is contained in:
parent
daa1b44682
commit
219f6c2310
@ -108,9 +108,68 @@ stage_body() {
|
|||||||
atf_check_equal $? 1
|
atf_check_equal $? 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
atf_test_case stage_resolve_bug
|
||||||
|
|
||||||
|
stage_resolve_bug_head() {
|
||||||
|
atf_set "descr" "xbps-rindex(8) -a: commit package to stage test"
|
||||||
|
}
|
||||||
|
|
||||||
|
stage_resolve_bug_body() {
|
||||||
|
# Scanario: provides a shlib, then it is moved (for example for splitting the
|
||||||
|
# pkg) to libprovider. afterwards requirer is added resulting in
|
||||||
|
mkdir provider libprovider requirer stage-trigger some_repo
|
||||||
|
touch provider/1 libprovider/2 requirer/3 stage-trigger/4
|
||||||
|
cd some_repo
|
||||||
|
|
||||||
|
# first add the provider and the requirer to the repo
|
||||||
|
xbps-create -A noarch -n provider-1.0_1 -s "foo pkg" --shlib-provides "libfoo.so.1 libbar.so.1" ../provider
|
||||||
|
atf_check_equal $? 0
|
||||||
|
xbps-create -A noarch -n require-1.0_1 -s "foo pkg" --shlib-requires "libfoo.so.1" ../requirer
|
||||||
|
atf_check_equal $? 0
|
||||||
|
xbps-create -A noarch -n stage-trigger-1.0_1 -s "foo pkg" --shlib-requires "libbar.so.1" ../stage-trigger
|
||||||
|
atf_check_equal $? 0
|
||||||
|
xbps-rindex -d -a $PWD/*.xbps
|
||||||
|
atf_check_equal $? 0
|
||||||
|
|
||||||
|
# then add libprovider that also provides the library
|
||||||
|
xbps-create -A noarch -n libprovider-1.0_2 -s "foo pkg" --shlib-provides "libfoo.so.1" ../libprovider
|
||||||
|
atf_check_equal $? 0
|
||||||
|
xbps-rindex -d -a $PWD/*.xbps
|
||||||
|
atf_check_equal $? 0
|
||||||
|
[ -f *-stagedata ]
|
||||||
|
atf_check_equal $? 1
|
||||||
|
|
||||||
|
# trigger staging
|
||||||
|
xbps-create -A noarch -n provider-1.0_2 -s "foo pkg" --shlib-provides "libfoo.so.1" ../provider
|
||||||
|
atf_check_equal $? 0
|
||||||
|
xbps-rindex -d -a $PWD/*.xbps
|
||||||
|
atf_check_equal $? 0
|
||||||
|
[ -f *-stagedata ]
|
||||||
|
atf_check_equal $? 0
|
||||||
|
|
||||||
|
# then add a new provider not containing the provides field. This resulted in
|
||||||
|
# a stage state despites the library is resolved through libprovides
|
||||||
|
xbps-create -A noarch -n provider-1.0_3 -s "foo pkg" ../provider
|
||||||
|
atf_check_equal $? 0
|
||||||
|
xbps-rindex -d -a $PWD/*.xbps
|
||||||
|
atf_check_equal $? 0
|
||||||
|
[ -f *-stagedata ]
|
||||||
|
atf_check_equal $? 0
|
||||||
|
|
||||||
|
# resolve staging
|
||||||
|
# the actual bug appeared here: libfoo.so.1 is still provided by libprovider, but
|
||||||
|
# xbps-rindex fails to register that.
|
||||||
|
xbps-create -A noarch -n stage-trigger-1.0_2 -s "foo pkg" ../stage-trigger
|
||||||
|
atf_check_equal $? 0
|
||||||
|
xbps-rindex -d -a $PWD/*.xbps
|
||||||
|
atf_check_equal $? 0
|
||||||
|
[ -f *-stagedata ]
|
||||||
|
atf_check_equal $? 1
|
||||||
|
}
|
||||||
|
|
||||||
atf_init_test_cases() {
|
atf_init_test_cases() {
|
||||||
atf_add_test_case update
|
atf_add_test_case update
|
||||||
atf_add_test_case revert
|
atf_add_test_case revert
|
||||||
atf_add_test_case stage
|
atf_add_test_case stage
|
||||||
|
atf_add_test_case stage_resolve_bug
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user