Files
Hiroyuki SatoandSutou Kouhei 7a59a20a7e GH-50535: [CI][Dev] Fix shellcheck errors in the ci/scripts/python_test.sh (#50536)
### Rationale for this change

This is the sub issue #44748.

* SC2034: `test_dir` appears unused. Verify it or export it.
* SC1091: Not following: (error message here)
* SC2086: Double quote to prevent globbing and word splitting.

```
shellcheck ci/scripts/python_test.sh

In ci/scripts/python_test.sh line 23:
test_dir=${1}/python/build/dist
^------^ SC2034 (warning): test_dir appears unused. Verify use (or export if used externally).

In ci/scripts/python_test.sh line 26:
  . "${ARROW_PYTHON_VENV}/bin/activate"
    ^-- SC1091 (info): Not following: ./bin/activate: openBinaryFile: does not exist (No such file or directory)

In ci/scripts/python_test.sh line 45:
: ${PYARROW_TEST_ACERO:=${ARROW_ACERO:-ON}}
  ^-- SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.

In ci/scripts/python_test.sh line 46:
: ${PYARROW_TEST_AZURE:=${ARROW_AZURE:-ON}}
  ^-- SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.

In ci/scripts/python_test.sh line 47:
: ${PYARROW_TEST_CUDA:=${ARROW_CUDA:-ON}}
  ^-- SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.

In ci/scripts/python_test.sh line 48:
: ${PYARROW_TEST_DATASET:=${ARROW_DATASET:-ON}}
  ^-- SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.

In ci/scripts/python_test.sh line 49:
: ${PYARROW_TEST_FLIGHT:=${ARROW_FLIGHT:-ON}}
  ^-- SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.

In ci/scripts/python_test.sh line 50:
: ${PYARROW_TEST_GANDIVA:=${ARROW_GANDIVA:-ON}}
  ^-- SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.

In ci/scripts/python_test.sh line 51:
: ${PYARROW_TEST_GCS:=${ARROW_GCS:-ON}}
  ^-- SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.

In ci/scripts/python_test.sh line 52:
: ${PYARROW_TEST_HDFS:=${ARROW_HDFS:-ON}}
  ^-- SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.

In ci/scripts/python_test.sh line 53:
: ${PYARROW_TEST_ORC:=${ARROW_ORC:-ON}}
  ^-- SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.

In ci/scripts/python_test.sh line 54:
: ${PYARROW_TEST_PARQUET:=${ARROW_PARQUET:-ON}}
  ^-- SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.

In ci/scripts/python_test.sh line 55:
: ${PYARROW_TEST_PARQUET_ENCRYPTION:=${PARQUET_REQUIRE_ENCRYPTION:-ON}}
  ^-- SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.

In ci/scripts/python_test.sh line 56:
: ${PYARROW_TEST_S3:=${ARROW_S3:-ON}}
  ^-- SC2223 (info): This default assignment may cause DoS due to globbing. Quote it.

In ci/scripts/python_test.sh line 72:
pytest -r s ${PYTEST_ARGS} --pyargs pyarrow
            ^------------^ SC2086 (info): Double quote to prevent globbing and word splitting.

Did you mean:
pytest -r s "${PYTEST_ARGS}" --pyargs pyarrow

In ci/scripts/python_test.sh line 76:
  pytest ${PYTEST_RST_ARGS} ${arrow_dir}/docs/source/python
         ^----------------^ SC2086 (info): Double quote to prevent globbing and word splitting.
                            ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting.

Did you mean:
  pytest "${PYTEST_RST_ARGS}" "${arrow_dir}"/docs/source/python

For more information:
  https://www.shellcheck.net/wiki/SC2034 -- test_dir appears unused. Verify u...
  https://www.shellcheck.net/wiki/SC1091 -- Not following: ./bin/activate: op...
  https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ...
```

### What changes are included in this PR?

* SC2034: Add a ShellCheck directive to disable the unused variable check.
* SC1091: Add a ShellCheck directive to disable source file checking. 
* SC2086: Quote variables.

### Are these changes tested?

Yes.

### Are there any user-facing changes?

No.
* GitHub Issue: #50535

Lead-authored-by: Hiroyuki Sato <hiroysato@gmail.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
2026-07-21 05:30:06 +09:00

85 lines
3.0 KiB
Bash
Executable File

#!/usr/bin/env bash
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
set -ex
arrow_dir="${1}"
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"
# Enable some checks inside Python itself
export PYTHONDEVMODE=1
# Enable memory debug checks if the env is not set already
if [ -z "${ARROW_DEBUG_MEMORY_POOL}" ]; then
export ARROW_DEBUG_MEMORY_POOL=trap
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}}"
export PYARROW_TEST_ACERO
export PYARROW_TEST_AZURE
export PYARROW_TEST_CUDA
export PYARROW_TEST_DATASET
export PYARROW_TEST_FLIGHT
export PYARROW_TEST_GANDIVA
export PYARROW_TEST_GCS
export PYARROW_TEST_HDFS
export PYARROW_TEST_ORC
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_ARRAY[@]}" --pyargs pyarrow
# Testing RST documentation examples (if PYTEST_RST_ARGS is set)
if [ -n "${PYTEST_RST_ARGS}" ]; then
# 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