mirror of
https://github.com/kennethreitz/heroku-buildpack-python.git
synced 2026-06-05 23:10:16 +00:00
Reduce the number of env vars exposed to subprocess (#1011)
The following env vars are no longer exposed to subprocesses run by the buildpack (such as the `bin/pre_compile` and `bin/post_compile` hooks): * `BPLOG_PREFIX` * `CACHED_PYTHON_STACK` * `DEFAULT_PYTHON_STACK` * `DEFAULT_PYTHON_VERSION` * `LATEST_27` * `LATEST_34` * `LATEST_35` * `LATEST_36` * `LATEST_37` * `LATEST_38` * `PIP_UPDATE` * `PY27` * `PY34` * `PY35` * `PY36` * `PY37` * `PYPY_27` * `PYPY_36` * `RECOMMENDED_PYTHON_VERSION` * `WARNINGS_LOG` There were previously no tests at all for the pre/post-compile hooks, so I've added some now. Fixes #1010.
This commit is contained in:
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
set -euo pipefail
|
||||
|
||||
echo "post_compile ran!"
|
||||
echo "post_compile env: $(printenv | cut -d '=' -f 1 | sort | xargs)."
|
||||
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
set -euo pipefail
|
||||
|
||||
echo "pre_compile ran!"
|
||||
echo "pre_compile env: $(printenv | cut -d '=' -f 1 | sort | xargs)."
|
||||
@@ -86,6 +86,49 @@ testDontWarnOldDjango() {
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testHooks() {
|
||||
# Test that the hooks are called correctly, and that the environment contains
|
||||
# the app's config vars but no unexpected env vars from the buildpack.
|
||||
local env_dir="$(mktmpdir)"
|
||||
echo 'test' > "${env_dir}/SOME_APP_CONFIG_VAR"
|
||||
local expected_env_vars=(
|
||||
_
|
||||
BIN_DIR
|
||||
BUILD_DIR
|
||||
BUILDPACK_LOG_FILE
|
||||
CACHE_DIR
|
||||
C_INCLUDE_PATH
|
||||
CPLUS_INCLUDE_PATH
|
||||
ENV_DIR
|
||||
EXPORT_PATH
|
||||
HOME
|
||||
LANG
|
||||
LD_LIBRARY_PATH
|
||||
LIBRARY_PATH
|
||||
OLDPWD
|
||||
PATH
|
||||
PKG_CONFIG_PATH
|
||||
PROFILE_PATH
|
||||
PWD
|
||||
PYTHONUNBUFFERED
|
||||
SHLVL
|
||||
SOME_APP_CONFIG_VAR
|
||||
STACK
|
||||
VENDOR_URL
|
||||
)
|
||||
if [[ "${STACK}" == "cedar-14" || "${STACK}" == "heroku-16" ]]; then
|
||||
# Remove "OLDPWD" from expected_env_vars since for bash <4.4 it's not exported to subshells:
|
||||
# https://github.com/heroku/heroku-buildpack-python/pull/1011#issuecomment-665117835
|
||||
read -ra expected_env_vars <<< "${expected_env_vars[@]/OLDPWD/}"
|
||||
fi
|
||||
compile 'hooks' '' "${env_dir}"
|
||||
assertCaptured "pre_compile ran!"
|
||||
assertCaptured "pre_compile env: ${expected_env_vars[*]}."
|
||||
assertCaptured "post_compile ran!"
|
||||
assertCaptured "post_compile env: ${expected_env_vars[*]}."
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
pushd $(dirname 0) >/dev/null
|
||||
popd >/dev/null
|
||||
|
||||
|
||||
Reference in New Issue
Block a user