diff --git a/.kokoro/presubmit/presubmit-doctest-bigframes.cfg b/.kokoro/presubmit/presubmit-doctest-bigframes.cfg index 7f514f762f3a..43265b24b860 100644 --- a/.kokoro/presubmit/presubmit-doctest-bigframes.cfg +++ b/.kokoro/presubmit/presubmit-doctest-bigframes.cfg @@ -6,7 +6,13 @@ env_vars: { value: "cleanup doctest" } +# env_vars: { +# key: "GOOGLE_CLOUD_PROJECT" +# value: "..." +# } + +# Override the build file to only run for bigframes. env_vars: { - key: "GOOGLE_CLOUD_PROJECT" - value: "bigframes-testing" + key: "TRAMPOLINE_BUILD_FILE" + value: "github/google-cloud-python/packages/bigframes/scripts/run_doctest.sh" } \ No newline at end of file diff --git a/packages/bigframes/noxfile.py b/packages/bigframes/noxfile.py index 537d417e9145..3b636399fd0c 100644 --- a/packages/bigframes/noxfile.py +++ b/packages/bigframes/noxfile.py @@ -392,9 +392,6 @@ def system_noextras(session: nox.sessions.Session): @nox.session(python="3.12") def doctest(session: nox.sessions.Session): """Run the system test suite.""" - session.skip( - "Temporary skip to enable a PR merge. Remove skip as part of closing https://github.com/googleapis/google-cloud-python/issues/16489" - ) run_system( session=session, diff --git a/packages/bigframes/scripts/run_doctest.sh b/packages/bigframes/scripts/run_doctest.sh new file mode 100755 index 000000000000..0562724e3f6d --- /dev/null +++ b/packages/bigframes/scripts/run_doctest.sh @@ -0,0 +1,51 @@ +#!/bin/bash +# `-e` enables the script to automatically fail when a command fails +# `-o pipefail` sets the exit code to non-zero if any command fails, +# or zero if all commands in the pipeline exit successfully. +set -eo pipefail + +# Disable buffering, so that the logs stream through. +export PYTHONUNBUFFERED=1 + +# Assume we are running from the repo root or we need to find it. +# If this script is in packages/bigframes/scripts/run_doctest.sh, +# then repo root is 3 levels up. +export PROJECT_ROOT=$(realpath "$(dirname "${BASH_SOURCE[0]}")/../../..") +cd "$PROJECT_ROOT" + +# This is needed in order for `git diff` to succeed +git config --global --add safe.directory "$(realpath .)" + +package_name="bigframes" +package_path="packages/${package_name}" + +# Determine if we should skip based on git diff +files_to_check="${package_path}" + +if [[ -n "${KOKORO_GITHUB_PULL_REQUEST_TARGET_BRANCH}" && -n "${KOKORO_GITHUB_PULL_REQUEST_COMMIT}" ]]; then + echo "checking changes with 'git diff ${KOKORO_GITHUB_PULL_REQUEST_TARGET_BRANCH}...${KOKORO_GITHUB_PULL_REQUEST_COMMIT} -- ${files_to_check}'" + set +e + package_modified=$(git diff "${KOKORO_GITHUB_PULL_REQUEST_TARGET_BRANCH}...${KOKORO_GITHUB_PULL_REQUEST_COMMIT}" -- "${files_to_check}" | wc -l) + set -e +else + package_modified=0 +fi + +if [[ "${package_modified}" -gt 0 || "$KOKORO_BUILD_ARTIFACTS_SUBDIR" == *"continuous"* ]]; then + echo "------------------------------------------------------------" + echo "Running doctest for: ${package_name}" + echo "------------------------------------------------------------" + + # Ensure credentials are set for system tests in Kokoro + if [[ -z "${GOOGLE_APPLICATION_CREDENTIALS}" && -f "${KOKORO_GFILE_DIR}/service-account.json" ]]; then + export GOOGLE_APPLICATION_CREDENTIALS="${KOKORO_GFILE_DIR}/service-account.json" + fi + + export GOOGLE_CLOUD_PROJECT="precise-truck-742" + cd "${package_path}" + + python3 -m nox -s cleanup || echo "Warning: Cleanup session failed, proceeding to doctest." + python3 -m nox -s doctest +else + echo "No changes in ${package_name} and not a continuous build, skipping." +fi diff --git a/packages/bigframes/tests/system/small/test_series.py b/packages/bigframes/tests/system/small/test_series.py index 5de7ce4256f9..0ac8f1eb61e9 100644 --- a/packages/bigframes/tests/system/small/test_series.py +++ b/packages/bigframes/tests/system/small/test_series.py @@ -1234,7 +1234,7 @@ def test_divmods_series(scalars_dfs, col_x, col_y, method): # BigQuery's mod functions return NUMERIC values for non-INT64 inputs. if bf_div_result.dtype == pd.Int64Dtype(): bigframes.testing.utils.assert_series_equal( - pd_div_result, bf_div_result.to_pandas() + pd_div_result, bf_div_result.to_pandas(), check_dtype=False ) else: bigframes.testing.utils.assert_series_equal( @@ -1279,7 +1279,7 @@ def test_divmods_scalars(scalars_dfs, col_x, other, method): # BigQuery's mod functions return NUMERIC values for non-INT64 inputs. if bf_div_result.dtype == pd.Int64Dtype(): bigframes.testing.utils.assert_series_equal( - pd_div_result, bf_div_result.to_pandas() + pd_div_result, bf_div_result.to_pandas(), check_dtype=False ) else: bigframes.testing.utils.assert_series_equal(