223 lines
6.9 KiB
Bash
223 lines
6.9 KiB
Bash
#!/bin/bash
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
function test_downgrade_1.20.2_fails() {
|
|
local work_path=$DIR/forgejo-work-path
|
|
|
|
log_info "See also https://codeberg.org/forgejo/forgejo/pulls/1225"
|
|
|
|
log_info "downgrading from 1.20.3-0 to 1.20.2-0 fails"
|
|
stop
|
|
storage_reset default
|
|
start 1.20.3-0
|
|
stop
|
|
download 1.20.2-0
|
|
timeout 60 $DIR_BINARIES/forgejo-1.20.2-0 --config $work_path/app.ini --work-path $work_path || true
|
|
if ! grep --fixed-strings --quiet 'use the newer database' $work_path/log/forgejo.log ; then
|
|
cat $work_path/log/forgejo.log
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
function test_bug_storage_merged() {
|
|
local work_path=$DIR/forgejo-work-path
|
|
|
|
log_info "See also https://codeberg.org/forgejo/forgejo/pulls/1225"
|
|
|
|
log_info "using < 1.20.3-0 and [storage].PATH merge all storage"
|
|
for version in 1.18.5-0 1.19.4-0 1.20.2-0 ; do
|
|
stop
|
|
storage_reset merged
|
|
start $version
|
|
for path in ${STORAGE_PATHS} ; do
|
|
! test -d $work_path/data/$path
|
|
done
|
|
for path in ${STORAGE_PATHS} ; do
|
|
! test -d $work_path/merged/$path
|
|
done
|
|
test -d $work_path/merged
|
|
done
|
|
stop
|
|
|
|
log_info "upgrading from 1.20.2-0 with [storage].PATH fails"
|
|
download 1.20.3-0
|
|
timeout 60 $DIR_BINARIES/forgejo-1.20.3-0 --config $work_path/app.ini --work-path $work_path || true
|
|
if ! grep --fixed-strings --quiet '[storage].PATH is set and may create storage issues' $work_path/log/forgejo.log ; then
|
|
cat $work_path/log/forgejo.log
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
function test_bug_storage_relative_path() {
|
|
local work_path=$DIR/forgejo-work-path
|
|
|
|
log_info "using < 1.20.3-0 legacy [server].XXXX and [picture].XXXX are relative to WORK_PATH"
|
|
for version in 1.18.5-0 1.19.4-0 1.20.2-0 ; do
|
|
stop
|
|
storage_reset legagy-relative
|
|
start $version
|
|
test -d $work_path/relative-lfs
|
|
test -d $work_path/relative-avatars
|
|
test -d $work_path/relative-repo-avatars
|
|
done
|
|
|
|
log_info "using >= 1.20.3-0 legacy [server].XXXX and [picture].XXXX are relative to APP_DATA_PATH"
|
|
for version in 1.20.3-0 1.21.0-5-rc2 ; do
|
|
stop
|
|
storage_reset legagy-relative
|
|
start $version
|
|
test -d $work_path/data/relative-lfs
|
|
test -d $work_path/data/relative-avatars
|
|
test -d $work_path/data/relative-repo-avatars
|
|
done
|
|
|
|
log_info "using >= 1.20.3-0 relative [storage.XXXX].PATHS are relative to APP_DATA_PATH"
|
|
for version in 1.20.3-0 1.21.0-5-rc2 ; do
|
|
stop
|
|
storage_reset storage-relative
|
|
start $version
|
|
for path in ${STORAGE_PATHS} ; do
|
|
test -d $work_path/data/relative-$path
|
|
done
|
|
done
|
|
|
|
log_info "using 1.20.[12]-0 relative [storage.XXXX].PATHS are inconsistent"
|
|
for version in 1.20.2-0 ; do
|
|
stop
|
|
storage_reset storage-relative
|
|
start $version
|
|
test -d $work_path/data/packages
|
|
test -d $work_path/relative-repo-archive
|
|
test -d $work_path/relative-attachments
|
|
test -d $work_path/relative-lfs
|
|
test -d $work_path/data/avatars
|
|
test -d $work_path/data/repo-avatars
|
|
done
|
|
|
|
log_info "using < 1.20 relative [storage.XXXX].PATHS are inconsistent"
|
|
for version in 1.18.5-0 1.19.4-0 ; do
|
|
stop
|
|
storage_reset storage-relative
|
|
start $version
|
|
test -d $work_path/relative-packages
|
|
test -d $work_path/relative-repo-archive
|
|
test -d $work_path/relative-attachments
|
|
test -d $work_path/data/lfs
|
|
test -d $work_path/data/avatars
|
|
test -d $work_path/data/repo-avatars
|
|
done
|
|
|
|
log_info "using < 1.20.3-0 relative [XXXX].PATHS are relative to WORK_PATH"
|
|
for version in 1.18.5-0 1.19.4-0 1.20.2-0 ; do
|
|
stop
|
|
storage_reset relative
|
|
start $version
|
|
for path in ${STORAGE_PATHS} ; do
|
|
test -d $work_path/relative-$path
|
|
done
|
|
done
|
|
|
|
log_info "using >= 1.20.3-0 relative [XXXX].PATHS are relative to APP_DATA_PATH"
|
|
for version in 1.20.3-0 1.21.0-5-rc2 ; do
|
|
stop
|
|
storage_reset relative
|
|
start $version
|
|
for path in ${STORAGE_PATHS} ; do
|
|
test -d $work_path/data/relative-$path
|
|
done
|
|
done
|
|
|
|
stop
|
|
}
|
|
|
|
function test_bug_storage_s3_misplace() {
|
|
local work_path=$DIR/forgejo-work-path
|
|
local s3_backend=${2:-minio}
|
|
|
|
log_info "See also https://codeberg.org/forgejo/forgejo/issues/1338"
|
|
|
|
for version in 1.20.2-0 1.20.3-0 ; do
|
|
log_info "Forgejo $version & $s3_backend"
|
|
stop
|
|
storage_reset misplace-s3
|
|
start $version $s3_backend
|
|
fixture_create
|
|
for fun in ${STORAGE_FUN} ; do
|
|
fixture_${fun}_assert_s3
|
|
done
|
|
done
|
|
|
|
for version in 1.18.5-0 1.19.4-0 ; do
|
|
log_info "Forgejo $version & $s3_backend"
|
|
stop
|
|
storage_reset misplace-s3
|
|
start $version $s3_backend
|
|
fixture_create
|
|
#
|
|
# some storage are in S3
|
|
#
|
|
fixture_attachments_assert_s3
|
|
fixture_lfs_assert_s3
|
|
#
|
|
# others are in local
|
|
#
|
|
fixture_repo_archive_assert_local elsewhere/repo-archive
|
|
fixture_avatars_assert_local elsewhere/avatars
|
|
fixture_packages_assert_local elsewhere/packages
|
|
fixture_repo_avatars_assert_local elsewhere/repo-avatars
|
|
done
|
|
}
|
|
|
|
function test_bug_storage_misplace() {
|
|
local work_path=$DIR/forgejo-work-path
|
|
|
|
log_info "See also https://codeberg.org/forgejo/forgejo/pulls/1225"
|
|
|
|
log_info "using < 1.20 and conflicting sections misplace storage"
|
|
for version in 1.18.5-0 1.19.4-0 ; do
|
|
stop
|
|
storage_reset misplace
|
|
start $version
|
|
#
|
|
# some storage are where they should be
|
|
#
|
|
test -d $work_path/data/packages
|
|
test -d $work_path/data/repo-archive
|
|
test -d $work_path/data/attachments
|
|
#
|
|
# others are under APP_DATA_PATH
|
|
#
|
|
test -d $work_path/elsewhere/lfs
|
|
test -d $work_path/elsewhere/avatars
|
|
test -d $work_path/elsewhere/repo-avatars
|
|
done
|
|
|
|
log_info "using < 1.20.[12]-0 and conflicting sections ignores [storage.*]"
|
|
for version in 1.20.2-0 ; do
|
|
stop
|
|
storage_reset misplace
|
|
start $version
|
|
for path in ${STORAGE_PATHS} ; do
|
|
test -d $work_path/elsewhere/$path
|
|
done
|
|
done
|
|
|
|
stop
|
|
|
|
log_info "upgrading from 1.20.2-0 with conflicting sections fails"
|
|
download 1.20.3-0
|
|
timeout 60 $DIR_BINARIES/forgejo-1.20.3-0 --config $work_path/app.ini --work-path $work_path || true
|
|
for path in ${STORAGE_PATHS} ; do
|
|
if ! grep --fixed-strings --quiet "[storage.$path] may conflict" $work_path/log/forgejo.log ; then
|
|
cat $work_path/log/forgejo.log
|
|
return 1
|
|
fi
|
|
done
|
|
}
|
|
|
|
function test_upgrade_1_20_storage() {
|
|
run test_bug_storage_misplace
|
|
run test_bug_storage_merged
|
|
run test_downgrade_1.20.2_fails
|
|
run test_bug_storage_s3_misplace
|
|
}
|