mirror of
https://gitee.com/johng/gf.git
synced 2024-11-29 18:57:44 +08:00
104 lines
2.9 KiB
Bash
104 lines
2.9 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
coverage=$1
|
|
|
|
# find all path that contains go.mod.
|
|
for file in `find . -name go.mod`; do
|
|
dirpath=$(dirname $file)
|
|
echo $dirpath
|
|
|
|
# ignore mssql tests as its docker service failed
|
|
# TODO remove this ignoring codes after the mssql docker service OK
|
|
if [ "mssql" = $(basename $dirpath) ]; then
|
|
continue 1
|
|
fi
|
|
|
|
if [[ $file =~ "/testdata/" ]]; then
|
|
echo "ignore testdata path $file"
|
|
continue 1
|
|
fi
|
|
|
|
# package kuhecm was moved to sub ci procedure.
|
|
if [ "kubecm" = $(basename $dirpath) ]; then
|
|
continue 1
|
|
fi
|
|
|
|
# package consul needs golang >= v1.19
|
|
if [ "consul" = $(basename $dirpath) ]; then
|
|
if ! go version|grep -qE "go1.[2-9][0-9]"; then
|
|
echo "ignore consul as go version: $(go version)"
|
|
continue 1
|
|
fi
|
|
fi
|
|
|
|
# package etcd needs golang >= v1.19
|
|
if [ "etcd" = $(basename $dirpath) ]; then
|
|
if ! go version|grep -qE "go1.[2-9][0-9]"; then
|
|
echo "ignore etcd as go version: $(go version)"
|
|
continue 1
|
|
fi
|
|
fi
|
|
|
|
# package polaris needs golang >= v1.19
|
|
if [ "polaris" = $(basename $dirpath) ]; then
|
|
if ! go version|grep -qE "go1.[2-9][0-9]"; then
|
|
echo "ignore polaris as go version: $(go version)"
|
|
continue 1
|
|
fi
|
|
fi
|
|
|
|
# package example needs golang >= v1.20
|
|
if [ "example" = $(basename $dirpath) ]; then
|
|
if ! go version|grep -qE "go1.[2-9][0-9]"; then
|
|
echo "ignore example as go version: $(go version)"
|
|
continue 1
|
|
fi
|
|
echo "the example directory only needs to be built, not unit tests and coverage tests."
|
|
cd $dirpath
|
|
go mod tidy
|
|
go build ./...
|
|
cd -
|
|
continue 1
|
|
fi
|
|
|
|
# package otlpgrpc needs golang >= v1.20
|
|
if [ "otlpgrpc" = $(basename $dirpath) ]; then
|
|
if ! go version|grep -qE "go1.[2-9][0-9]"; then
|
|
echo "ignore otlpgrpc as go version: $(go version)"
|
|
continue 1
|
|
fi
|
|
fi
|
|
|
|
# package otlphttp needs golang >= v1.20
|
|
if [ "otlphttp" = $(basename $dirpath) ]; then
|
|
if ! go version|grep -qE "go1.[2-9][0-9]"; then
|
|
echo "ignore otlphttp as go version: $(go version)"
|
|
continue 1
|
|
fi
|
|
fi
|
|
|
|
# package otelmetric needs golang >= v1.20
|
|
if [ "otelmetric" = $(basename $dirpath) ]; then
|
|
if ! go version|grep -qE "go1.[2-9][0-9]"; then
|
|
echo "ignore otelmetric as go version: $(go version)"
|
|
continue 1
|
|
fi
|
|
fi
|
|
|
|
cd $dirpath
|
|
go mod tidy
|
|
go build ./...
|
|
# check coverage
|
|
if [ "${coverage}" = "coverage" ]; then
|
|
go test ./... -race -coverprofile=coverage.out -covermode=atomic -coverpkg=./...,github.com/gogf/gf/... || exit 1
|
|
|
|
if grep -q "/gogf/gf/.*/v2" go.mod; then
|
|
sed -i "s/gogf\/gf\(\/.*\)\/v2/gogf\/gf\/v2\1/g" coverage.out
|
|
fi
|
|
else
|
|
go test ./... -race || exit 1
|
|
fi
|
|
|
|
cd -
|
|
done
|