diff --git a/bin/steps/python b/bin/steps/python index 32a25903da0262cbda9914a8bb643cc015b8c5d8..908d1b27d7ae5ce4ed70f429f3e6589f959f9ae7 100755 --- a/bin/steps/python +++ b/bin/steps/python @@ -4,7 +4,11 @@ set +e runtime-fixer runtime.txt PYTHON_VERSION=$(cat runtime.txt) -# Install Python. +if [[ "$STACK" != "$CACHED_PYTHON_STACK" ]]; then + puts-step "Stack has changed from $CACHED_PYTHON_STACK to $STACK, clearing cache" + rm -fr .heroku/python-stack .heroku/python-version .heroku/python .heroku/vendor +fi + if [ -f .heroku/python-version ]; then if [ ! "$(cat .heroku/python-version)" = "$PYTHON_VERSION" ]; then puts-step "Found $(cat .heroku/python-version), removing" @@ -14,12 +18,6 @@ if [ -f .heroku/python-version ]; then fi fi -if [ ! "$STACK" = "$CACHED_PYTHON_STACK" ]; then - rm -fr .heroku/python .heroku/python-stack .heroku/vendor - unset SKIP_INSTALL -fi - - if [ ! "$SKIP_INSTALL" ]; then puts-step "Installing $PYTHON_VERSION" diff --git a/test/run b/test/run index e125c13f4d4fab1fc05cd218bf03aecb4d2465c8..130b0e7bf5241d047474879d4cfa39af7a64ed2e 100755 --- a/test/run +++ b/test/run @@ -76,6 +76,15 @@ testSmartRequirements() { assertCapturedSuccess } +testStackChange() { + local cache_dir="$(mktmpdir)" + mkdir -p "${cache_dir}/.heroku" + echo "different-stack" > "${cache_dir}/.heroku/python-stack" + compile "requirements-standard" "$cache_dir" + assertCaptured "clearing cache" + assertFile "$STACK" ".heroku/python-stack" + assertCapturedSuccess +} pushd $(dirname 0) >/dev/null