Skip to content
Snippets Groups Projects
Commit f3ef1526 authored by Casey Faist's avatar Casey Faist
Browse files

update tests to pass, add 3.4

parent ef1f7f69
No related branches found
No related tags found
No related merge requests found
......@@ -52,14 +52,22 @@ export VENDOR_URL
DEFAULT_PYTHON_VERSION="python-3.6.6"
LATEST_36="python-3.6.6"
LATEST_37="python-3.7.0"
LATEST_35="python-3.5.6"
LATEST_2="python-2.7.15"
# Supported Python Branches
PY37="python-3.7"
PY36="python-3.6"
PY35="python-3.5"
PY27="python-2.7"
# Which stack is used (for binary downloading), if none is provided (e.g. outside of Heroku)?
DEFAULT_PYTHON_STACK="cedar-14"
# If pip doesn't match this version (the version we install), run the installer.
PIP_UPDATE="9.0.2"
export DEFAULT_PYTHON_VERSION DEFAULT_PYTHON_STACK PIP_UPDATE LATEST_2 LATEST_36 LATEST_37
export PY37 PY36 PY35 PY27
# Common Problem Warnings:
# This section creates a temporary file in which to stick the output of `pip install`.
......
......@@ -7,43 +7,47 @@ PYTHON_VERSION=$(cat runtime.txt)
# The location of the pre-compiled python binary.
VENDORED_PYTHON="${VENDOR_URL}/runtimes/$PYTHON_VERSION.tar.gz"
if [[ $PYTHON_VERSION =~ ^python-2 ]]; then
if [[ "$PYTHON_VERSION" != "$LATEST_2" ]]; then
puts-warn "The latest version of Python 2 is $LATEST_2 (you are using $PYTHON_VERSION, which is unsupported)."
puts-warn "We recommend upgrading by specifying the latest version ($LATEST_2)."
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
else
echo " Using supported version of Python 2 ($PYTHON_VERSION)"
# "https://lang-python.s3.amazonaws.com/heroku-16/runtimes/python-3.6.6.tar.gz"
SECURITY_UPDATE="Python has released a security update! Please consider upgrading to "
# check if runtime exists
if curl --output /dev/null --silent --head --fail $VENDORED_PYTHON; then
if [[ $PYTHON_VERSION == $PY37* ]]; then
# do things to alert the user of security release available
if [ $PYTHON_VERSION != $LATEST_37 ]; then
puts-warn SECURITY_UPDATE $LATEST_37
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
fi
fi
else
if [[ $PYTHON_VERSION =~ ^python-3 ]]; then
if [[ $PYTHON_VERSION =~ ^python-3.7 ]]; then
if [[ "$PYTHON_VERSION" != "$LATEST_37" ]]; then
puts-warn "The latest version of Python 3.7 is $LATEST_37 (you are using $PYTHON_VERSION, which is unsupported)."
puts-warn "We recommend upgrading by specifying the latest version ($LATEST_37)."
if [[ $PYTHON_VERSION == $PY36* ]]; then
# security update note
if [ $PYTHON_VERSION != $LATEST_36 ]; then
puts-warn SECURITY_UPDATE $LATEST_36
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
fi
fi
if [[ $PYTHON_VERSION == $PY35* ]]; then
# security update note
if [ $PYTHON_VERSION != $LATEST_35 ]; then
puts-warn SECURITY_UPDATE $LATEST_35
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
else
echo " Using supported version of Python 3.7 ($PYTHON_VERSION)"
fi
else
if [[ $PYTHON_VERSION =~ ^python-3.6 ]]; then
if [[ "$PYTHON_VERSION" != "$LATEST_36" ]]; then
puts-warn "The latest version of Python 3.6 is $LATEST_36 (you are using $PYTHON_VERSION, which is unsupported)."
puts-warn "We recommend upgrading by specifying the latest version ($LATEST_36)."
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
else
echo " Using supported version of Python 3.6 ($PYTHON_VERSION)"
fi
else
puts-warn "Heroku supports runtime versions $LATEST_37, $LATEST_36 and $LATEST_2."
puts-warn "You are using $PYTHON_VERSION, which is unsupported."
puts-warn "We recommend upgrading by specifying the default supported version ($LATEST_36)."
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
fi
fi
fi
if [[ $PYTHON_VERSION == $PY27* ]]; then
# security update note
if [ $PYTHON_VERSION != $LATEST_27 ]; then
puts-warn SECURITY_UPDATE $LATEST_27
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
fi
fi
else
puts-warn "Requested runtime ($PYTHON_VERSION) is not available for this stack ($STACK)."
puts-warn "Aborting. More info: https://devcenter.heroku.com/articles/python-support"
exit 1
fi
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 .heroku/python .heroku/python-sqlite3-version
......
#!/usr/bin/env bash
# Build Path: /app/.heroku/python/
OUT_PREFIX=$1
BIN_DIR="$(cd "$(dirname "$0")"/../.. || exit; pwd)/bin"
export BIN_DIR
# shellcheck source=bin/utils
source "$BIN_DIR/steps/sqlite3"
sqlite3_version
echo "Setting up SQLite3 Headers for $SQLITE3_VERSION"
sqlite3_install "$OUT_PREFIX" "$SQLITE3_VERSION" 1
echo "Building Python…"
SOURCE_TARBALL='https://python.org/ftp/python/3.4.9/Python-3.4.9.tgz'
curl -L $SOURCE_TARBALL | tar xz
mv Python-3.4.9 src
cd src
./configure --prefix=$OUT_PREFIX --with-ensurepip=no
make
make install
# Remove unneeded test directories, similar to the official Docker Python images:
# https://github.com/docker-library/python
find "${OUT_PREFIX}" \( -type d -a \( -name test -o -name tests \) \) -exec rm -rf '{}' +
# Remove spare /
LOCATION=${OUT_PREFIX%?}
ln $LOCATION/bin/python3 $LOCATION/bin/python
flask
python-3.4.9
python-3.6.7
python-3.6.6
flask
python-3.6.7
python-3.7.1
python-3.7.0
flask
python-3.7.1
......@@ -93,24 +93,46 @@ testPython2() {
assertCapturedSuccess
}
# This will succeed on Cedar-14 and fail on 16 and 18
testPython3_4() {
compile "python3_4"
assertCaptured "python-3.4.9"
assertCapturedError
}
# This will fail
testPython3_5() {
compile "python3_5"
assertCaptured "python-3.5.6"
assertCapturedSuccess
assertCapturedError
}
testPython3_6() {
compile "python3_6"
assertCaptured "python-3.6.7"
assertCaptured "python-3.6.6"
assertCapturedSuccess
}
# This will fail
testPython3_6_7() {
compile "python3_6_7"
assertCaptured "python-3.6.7"
assertCapturedError
}
testPython3_7() {
compile "python3_7"
assertCaptured "python-3.7.1"
assertCaptured "python-3.7.0"
assertCapturedSuccess
}
# This will fail
testPython3_7_1() {
compile "python3_7_1"
assertCaptured "python-3.7.1"
assertCapturedError
}
testGitEgg() {
compile "git-egg"
assertCaptured "requests"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment