mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2026-07-18 15:37:48 +00:00
### Documentation - [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change. - [x] I did not document these changes and I do not expect someone else to do it. ### Release notes - [ ] This change will be noticed by a Forgejo user or admin (feature, bug fix, performance, etc.). I suggest to include a release note for this change. - [x] This change is not visible to a Forgejo user or admin (refactor, dependency upgrade, etc.). I think there is no need to add a release note for this change. Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/12978 Reviewed-by: limiting-factor <limiting-factor@noreply.codeberg.org> Reviewed-by: Mathieu Fenniak <mfenniak@noreply.codeberg.org>
53 lines
2 KiB
Bash
Executable file
53 lines
2 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
set -e
|
|
#set -x
|
|
PS4='${BASH_SOURCE[0]}:$LINENO: ${FUNCNAME[0]}: '
|
|
|
|
#
|
|
# Those must be explicitly required and are excluded from the full list of packages because they
|
|
# would interfere with the testing fixtures.
|
|
#
|
|
excluded+='forgejo.org/models/gitea_migrations|' # must be run before database specific tests
|
|
excluded+='forgejo.org/models/forgejo_migrations|' # must be run before database specific tests
|
|
excluded+='forgejo.org/models/forgejo_migrations_legacy|' # must be run before database specific tests
|
|
excluded+='forgejo.org/tests/integration/migration-test|' # must be run before database specific tests
|
|
excluded+='forgejo.org/tests|' # only tests, no coverage to get there
|
|
excluded+='forgejo.org/tests/e2e|' # JavaScript is not in scope here and if it adds coverage it should not be counted
|
|
excluded+='FAKETERMINATOR' # do not modify
|
|
|
|
: ${COVERAGEDIR:=$(pwd)/coverage/data}
|
|
: ${GO:=$(go env GOROOT)/bin/go}
|
|
|
|
DEFAULT_TEST_PACKAGES=$($GO list ./... | grep -E -v "$excluded")
|
|
|
|
COVERED_PACKAGES=$($GO list ./...)
|
|
COVERED_PACKAGES=$(echo $COVERED_PACKAGES | sed -e 's/ /,/g')
|
|
|
|
function run_test() {
|
|
local package="$1"
|
|
if echo "$package" | grep --quiet --fixed-string ".."; then
|
|
echo "$package contains a suspicious .."
|
|
return 1
|
|
fi
|
|
|
|
local coverage="$COVERAGEDIR/$COVERAGE_TEST_DATABASE/$package"
|
|
rm -fr $coverage
|
|
mkdir -p $coverage
|
|
|
|
#
|
|
# -race cannot be used because it requires -covermode atomic which is
|
|
# different from the end-to-end tests and would cause issues wen merging
|
|
#
|
|
set -o pipefail
|
|
$GO test -timeout=40m -tags='sqlite sqlite_unlock_notify' -cover $package -coverpkg $COVERED_PACKAGES $COVERAGE_TEST_ARGS -args -test.gocoverdir=$coverage |& grep -v 'warning: no packages being tested depend on matches for pattern'
|
|
set +o pipefail
|
|
}
|
|
|
|
function test_packages() {
|
|
for package in ${@:-$DEFAULT_TEST_PACKAGES}; do
|
|
run_test $package
|
|
done
|
|
}
|
|
|
|
"$@"
|