setup_virtualenv "$VENV3DIR"
. "$VENV3DIR/bin/activate"
+ # wheel modernizes the venv (as of early 2024) and makes it more closely
+ # match our package build environment.
# PyYAML is a test requirement used by run_test_server.py and needed for
# other, non-Python tests.
# pdoc is needed to build PySDK documentation.
# We run `setup.py build` first to generate _version.py.
- env -C "$WORKSPACE/sdk/python" python3 setup.py build \
- && python3 -m pip install "$WORKSPACE/sdk/python" \
- && python3 -m pip install PyYAML pdoc \
+ pip install PyYAML pdoc wheel \
+ && env -C "$WORKSPACE/sdk/python" python3 setup.py build \
+ && pip install "$WORKSPACE/sdk/python" \
|| fatal "installing Python SDK and related dependencies failed"
}
check_arvados_config "$1"
;;
gofmt \
+ | arvados_version.py \
| cmd/arvados-package \
| doc \
| lib/boot \
declare -a pythonstuff
pythonstuff=(
+ # The ordering of sdk/python, tools/crunchstat-summary, and
+ # sdk/cwl here is significant. See
+ # https://dev.arvados.org/issues/19744#note-26
sdk/python:py3
+ tools/crunchstat-summary:py3
sdk/cwl:py3
services/dockercleaner:py3
services/fuse:py3
- tools/crunchstat-summary:py3
)
declare -a gostuff
}
test_doc() {
- (
- set -e
- cd "$WORKSPACE/doc"
- ARVADOS_API_HOST=pirca.arvadosapi.com
- # Make sure python-epydoc is installed or the next line won't
- # do much good!
- PYTHONPATH=$WORKSPACE/sdk/python/ "$bundle" exec rake linkchecker baseurl=file://$WORKSPACE/doc/.site/ arvados_workbench_host=https://workbench.$ARVADOS_API_HOST arvados_api_host=$ARVADOS_API_HOST ${testargs[doc]}
- )
+ local arvados_api_host=pirca.arvadosapi.com && \
+ env -C "$WORKSPACE/doc" \
+ "$bundle" exec rake linkchecker \
+ arvados_api_host="$arvados_api_host" \
+ arvados_workbench_host="https://workbench.$arvados_api_host" \
+ baseurl="file://$WORKSPACE/doc/.site/" \
+ ${testargs[doc]}
}
test_gofmt() {
go vet -composites=false ./...
}
+test_arvados_version.py() {
+ local orig_fn=""
+ local fail_count=0
+ while read -d "" fn; do
+ if [[ -z "$orig_fn" ]]; then
+ orig_fn="$fn"
+ elif ! cmp "$orig_fn" "$fn"; then
+ fail_count=$(( $fail_count + 1 ))
+ printf "FAIL: %s and %s are not identical\n" "$orig_fn" "$fn"
+ fi
+ done < <(git -C "$WORKSPACE" ls-files -z | grep -z '/arvados_version\.py$')
+ case "$orig_fn" in
+ "") return 66 ;; # EX_NOINPUT
+ *) return "$fail_count" ;;
+ esac
+}
+
test_services/api() {
rm -f "$WORKSPACE/services/api/git-commit.version"
cd "$WORKSPACE/services/api" \
# Install parts needed by test suites
do_install env
do_install cmd/arvados-server go
- do_install sdk/cli
- do_install sdk/python pip "${VENV3DIR}/bin/"
+ do_install tools/crunchstat-summary pip "${VENV3DIR}/bin/"
do_install sdk/ruby-google-api-client
do_install sdk/ruby
+ do_install sdk/cli
do_install services/api
+ # lib/controller integration tests depend on arv-mount to run
+ # containers.
+ do_install services/fuse pip "${VENV3DIR}/bin/"
do_install services/keepproxy go
do_install services/keep-web go
}
fi
do_test gofmt
+ do_test arvados_version.py
do_test doc
do_test sdk/ruby-google-api-client
do_test sdk/ruby