From 3b197cfb87caee9f38905f740e81eba51c41fca1 Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Tue, 14 Jul 2026 16:32:28 +0900 Subject: [PATCH 1/3] GH-50535: [CI][Dev] Fix shellcheck errors in the ci/scripts/python_test.sh --- .pre-commit-config.yaml | 1 + ci/scripts/python_test.sh | 46 ++++++++++++++++++++------------------- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index cd81d6e23ee8..3d346ce1b49f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -334,6 +334,7 @@ repos: ?^ci/scripts/python_sdist_test\.sh$| ?^ci/scripts/python_wheel_unix_test\.sh$| ?^ci/scripts/python_test_type_annotations\.sh$| + ?^ci/scripts/python_test\.sh$| ?^ci/scripts/r_build\.sh$| ?^ci/scripts/r_revdepcheck\.sh$| ?^ci/scripts/release_test\.sh$| diff --git a/ci/scripts/python_test.sh b/ci/scripts/python_test.sh index 962501d7b5e5..3c1122e3e270 100755 --- a/ci/scripts/python_test.sh +++ b/ci/scripts/python_test.sh @@ -19,19 +19,21 @@ set -ex -arrow_dir=${1} -test_dir=${1}/python/build/dist +arrow_dir="${1}" +# shellcheck disable=SC2034 # Unused variable +test_dir="${1}/python/build/dist" if [ -n "${ARROW_PYTHON_VENV:-}" ]; then + # shellcheck source=/dev/null . "${ARROW_PYTHON_VENV}/bin/activate" fi -export ARROW_SOURCE_DIR=${arrow_dir} -export ARROW_TEST_DATA=${arrow_dir}/testing/data -export PARQUET_TEST_DATA=${arrow_dir}/cpp/submodules/parquet-testing/data -export LD_LIBRARY_PATH=${ARROW_HOME}/lib:${LD_LIBRARY_PATH} -export DYLD_LIBRARY_PATH=${ARROW_HOME}/lib:${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}} -export ARROW_GDB_SCRIPT=${arrow_dir}/cpp/gdb_arrow.py +export ARROW_SOURCE_DIR="${arrow_dir}" +export ARROW_TEST_DATA="${arrow_dir}/testing/data" +export PARQUET_TEST_DATA="${arrow_dir}/cpp/submodules/parquet-testing/data" +export LD_LIBRARY_PATH="${ARROW_HOME}/lib:${LD_LIBRARY_PATH}" +export DYLD_LIBRARY_PATH="${ARROW_HOME}/lib:${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}}" +export ARROW_GDB_SCRIPT="${arrow_dir}/cpp/gdb_arrow.py" # Enable some checks inside Python itself export PYTHONDEVMODE=1 @@ -42,18 +44,18 @@ if [ -z "${ARROW_DEBUG_MEMORY_POOL}" ]; then fi # By default, force-test all optional components -: ${PYARROW_TEST_ACERO:=${ARROW_ACERO:-ON}} -: ${PYARROW_TEST_AZURE:=${ARROW_AZURE:-ON}} -: ${PYARROW_TEST_CUDA:=${ARROW_CUDA:-ON}} -: ${PYARROW_TEST_DATASET:=${ARROW_DATASET:-ON}} -: ${PYARROW_TEST_FLIGHT:=${ARROW_FLIGHT:-ON}} -: ${PYARROW_TEST_GANDIVA:=${ARROW_GANDIVA:-ON}} -: ${PYARROW_TEST_GCS:=${ARROW_GCS:-ON}} -: ${PYARROW_TEST_HDFS:=${ARROW_HDFS:-ON}} -: ${PYARROW_TEST_ORC:=${ARROW_ORC:-ON}} -: ${PYARROW_TEST_PARQUET:=${ARROW_PARQUET:-ON}} -: ${PYARROW_TEST_PARQUET_ENCRYPTION:=${PARQUET_REQUIRE_ENCRYPTION:-ON}} -: ${PYARROW_TEST_S3:=${ARROW_S3:-ON}} +: "${PYARROW_TEST_ACERO:=${ARROW_ACERO:-ON}}" +: "${PYARROW_TEST_AZURE:=${ARROW_AZURE:-ON}}" +: "${PYARROW_TEST_CUDA:=${ARROW_CUDA:-ON}}" +: "${PYARROW_TEST_DATASET:=${ARROW_DATASET:-ON}}" +: "${PYARROW_TEST_FLIGHT:=${ARROW_FLIGHT:-ON}}" +: "${PYARROW_TEST_GANDIVA:=${ARROW_GANDIVA:-ON}}" +: "${PYARROW_TEST_GCS:=${ARROW_GCS:-ON}}" +: "${PYARROW_TEST_HDFS:=${ARROW_HDFS:-ON}}" +: "${PYARROW_TEST_ORC:=${ARROW_ORC:-ON}}" +: "${PYARROW_TEST_PARQUET:=${ARROW_PARQUET:-ON}}" +: "${PYARROW_TEST_PARQUET_ENCRYPTION:=${PARQUET_REQUIRE_ENCRYPTION:-ON}}" +: "${PYARROW_TEST_S3:=${ARROW_S3:-ON}}" export PYARROW_TEST_ACERO export PYARROW_TEST_AZURE @@ -69,9 +71,9 @@ export PYARROW_TEST_PARQUET_ENCRYPTION export PYARROW_TEST_S3 # Testing PyArrow -pytest -r s ${PYTEST_ARGS} --pyargs pyarrow +pytest -r s "${PYTEST_ARGS}" --pyargs pyarrow # Testing RST documentation examples (if PYTEST_RST_ARGS is set) if [ -n "${PYTEST_RST_ARGS}" ]; then - pytest ${PYTEST_RST_ARGS} ${arrow_dir}/docs/source/python + pytest "${PYTEST_RST_ARGS}" "${arrow_dir}/docs/source/python" fi From e08cbc99dd141b199dad8a29dc171a2860580872 Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Sat, 18 Jul 2026 14:12:30 +0900 Subject: [PATCH 2/3] Apply suggestion from @kou Co-authored-by: Sutou Kouhei --- ci/scripts/python_test.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/ci/scripts/python_test.sh b/ci/scripts/python_test.sh index 3c1122e3e270..833e65854570 100755 --- a/ci/scripts/python_test.sh +++ b/ci/scripts/python_test.sh @@ -20,8 +20,6 @@ set -ex arrow_dir="${1}" -# shellcheck disable=SC2034 # Unused variable -test_dir="${1}/python/build/dist" if [ -n "${ARROW_PYTHON_VENV:-}" ]; then # shellcheck source=/dev/null From d0d9595a134938e6d93e793a3b2b73cb267f1360 Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Sat, 18 Jul 2026 14:20:09 +0900 Subject: [PATCH 3/3] GH-50535: [CI][Dev] Fix shellcheck errors in the ci/scripts/python_test.sh --- ci/scripts/python_test.sh | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/ci/scripts/python_test.sh b/ci/scripts/python_test.sh index 833e65854570..43b871be6a47 100755 --- a/ci/scripts/python_test.sh +++ b/ci/scripts/python_test.sh @@ -68,10 +68,17 @@ export PYARROW_TEST_PARQUET export PYARROW_TEST_PARQUET_ENCRYPTION export PYARROW_TEST_S3 +# Convert the space-separated options into a Bash array. +# This avoids ShellCheck SC2086 and preserves argument boundaries. +read -r -a PYTEST_ARGS_ARRAY <<< "$PYTEST_ARGS" + # Testing PyArrow -pytest -r s "${PYTEST_ARGS}" --pyargs pyarrow +pytest -r s "${PYTEST_ARGS_ARRAY[@]}" --pyargs pyarrow # Testing RST documentation examples (if PYTEST_RST_ARGS is set) if [ -n "${PYTEST_RST_ARGS}" ]; then - pytest "${PYTEST_RST_ARGS}" "${arrow_dir}/docs/source/python" + # Convert the space-separated options into a Bash array. + # This avoids ShellCheck SC2086 and preserves argument boundaries. + read -r -a PYTEST_RST_ARGS_ARRAY <<< "$PYTEST_RST_ARGS" + pytest "${PYTEST_RST_ARGS_ARRAY[@]}" "${arrow_dir}/docs/source/python" fi