#!/bin/sh
set -e

if [ -z "$AUTOPKGTEST_TMP" ]; then
    AUTOPKGTEST_TMP=$(mktemp -d)
    trap 'rm -rf "$AUTOPKGTEST_TMP"' EXIT
fi

export HOME="$AUTOPKGTEST_TMP/home"
mkdir -p "$HOME"

export http_proxy=127.0.0.1:9
export https_proxy=127.0.0.1:9
export HTTP_PROXY=127.0.0.1:9
export HTTPS_PROXY=127.0.0.1:9

WORKDIR="$AUTOPKGTEST_TMP/work"
mkdir -p "$WORKDIR"
cp -r debian/tests/test-001-artifacts/* "$WORKDIR/"

# Create empty mock repos for unused Bazel builtin module deps
MOCK_DIR="$AUTOPKGTEST_TMP/mock"
for mod in apple_support buildozer protobuf zlib; do
    mkdir -p "$MOCK_DIR/$mod"
    cat > "$MOCK_DIR/$mod/MODULE.bazel" <<EOF
module(name = "$mod", version = "999.0.0")
EOF
    touch "$MOCK_DIR/$mod/BUILD.bazel"
done

mkdir -p "$MOCK_DIR/protobuf/bazel" "$MOCK_DIR/protobuf/bazel/toolchains"
touch "$MOCK_DIR/protobuf/bazel/BUILD.bazel" "$MOCK_DIR/protobuf/bazel/toolchains/BUILD.bazel"
cat > "$MOCK_DIR/protobuf/bazel/proto_library.bzl" << 'EOF'
def proto_library(**kwargs):
    native.proto_library(**kwargs)
EOF
cat > "$MOCK_DIR/protobuf/bazel/cc_proto_library.bzl" << 'EOF'
def cc_proto_library(**kwargs):
    native.cc_proto_library(**kwargs)
EOF
cat > "$MOCK_DIR/protobuf/bazel/toolchains/proto_lang_toolchain.bzl" << 'EOF'
def proto_lang_toolchain(**kwargs):
    native.proto_lang_toolchain(**kwargs)
EOF

cd "$WORKDIR"

bazel --batch test //... \
    --noenable_workspace \
    --registry=file://"$MOCK_DIR" \
    --check_direct_dependencies=off \
    --override_module=bazel_lib=/usr/share/bazel/tools/bazel_lib \
    --override_module=rules_shell=/usr/share/bazel/rules/shell \
    --override_module=protobuf="$MOCK_DIR/protobuf" \
    --override_module=apple_support="$MOCK_DIR/apple_support" \
    --override_module=buildozer="$MOCK_DIR/buildozer" \
    --override_module=zlib="$MOCK_DIR/zlib" \
    --stamp \
    --test_output=errors
