mirror of
https://github.com/kennethreitz/heroku-buildpack-python.git
synced 2026-06-05 23:10:16 +00:00
Compare commits
60 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 60614232da | |||
| edb7004a28 | |||
| ea350a6694 | |||
| 027d49eb58 | |||
| 49597f22ca | |||
| 4bb8f59f2c | |||
| d4b6b0190d | |||
| 2c2cbc4653 | |||
| d0629cd6ef | |||
| 398a0fb202 | |||
| 5bf80a2270 | |||
| 61609930c1 | |||
| 0fa27b7b0d | |||
| cc247753e5 | |||
| 4da1ca71b5 | |||
| 3d70b2e9ff | |||
| 87e9fb2ccc | |||
| 0d61f83269 | |||
| e12ad47397 | |||
| 307cb13159 | |||
| 156da405e0 | |||
| ea90db6d13 | |||
| 56f7ccc511 | |||
| a2c72f77f9 | |||
| 93a5144033 | |||
| ac76968c90 | |||
| 446410f883 | |||
| abd9ffdbff | |||
| 408a081a08 | |||
| 01b0c1b0db | |||
| 2e5fe9f286 | |||
| 6b9ffb92d9 | |||
| bf1563eaa0 | |||
| dcb04b96c3 | |||
| ab79d077da | |||
| 2b3a90ec0c | |||
| 48a368ac71 | |||
| 3d31167511 | |||
| 0c2b954a6d | |||
| b65f0cfce3 | |||
| a1ef075b53 | |||
| dee86babe1 | |||
| 6a02499140 | |||
| b8fd617d9c | |||
| f7c422e07d | |||
| cc6a03aa54 | |||
| 56ecd1aef7 | |||
| 4d2e74b411 | |||
| d8b37dcaf8 | |||
| a98a87e1bc | |||
| 8c9521d806 | |||
| 312b9ca6de | |||
| 4e8831a3a3 | |||
| c402d37451 | |||
| 563a9c9187 | |||
| b1e3256128 | |||
| ac93a57492 | |||
| 5828fbfe7d | |||
| b7d8aa4d7d | |||
| a6510f0f77 |
@@ -10,3 +10,5 @@ buildpack/*
|
|||||||
|
|
||||||
builds/dockerenv.staging*
|
builds/dockerenv.staging*
|
||||||
builds/dockerenv.production
|
builds/dockerenv.production
|
||||||
|
|
||||||
|
test/scratch
|
||||||
|
|||||||
+3
-3
@@ -10,11 +10,11 @@ before_script:
|
|||||||
|
|
||||||
script:
|
script:
|
||||||
- docker build --pull --tag travis-build-cedar-14 --file $(pwd)/builds/cedar-14.Dockerfile .
|
- docker build --pull --tag travis-build-cedar-14 --file $(pwd)/builds/cedar-14.Dockerfile .
|
||||||
- docker run --rm -e "STACK=cedar-14" -e "USE_STAGING_BINARIES=$USE_STAGING_BINARIES" travis-build-cedar-14 bash $TESTFOLDER
|
- docker run --rm -e "STACK=cedar-14" travis-build-cedar-14 bash $TESTFOLDER
|
||||||
- docker build --pull --tag travis-build-heroku-16 --file $(pwd)/builds/heroku-16.Dockerfile .
|
- docker build --pull --tag travis-build-heroku-16 --file $(pwd)/builds/heroku-16.Dockerfile .
|
||||||
- docker run --rm -e "STACK=heroku-16" -e "USE_STAGING_BINARIES=$USE_STAGING_BINARIES" travis-build-heroku-16 bash $TESTFOLDER
|
- docker run --rm -e "STACK=heroku-16" travis-build-heroku-16 bash $TESTFOLDER
|
||||||
- docker build --pull --tag travis-build-heroku-18 --file $(pwd)/builds/heroku-18.Dockerfile .
|
- docker build --pull --tag travis-build-heroku-18 --file $(pwd)/builds/heroku-18.Dockerfile .
|
||||||
- docker run --rm -e "STACK=heroku-18" -e "USE_STAGING_BINARIES=$USE_STAGING_BINARIES" travis-build-heroku-18 bash $TESTFOLDER
|
- docker run --rm -e "STACK=heroku-18" travis-build-heroku-18 bash $TESTFOLDER
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
include:
|
include:
|
||||||
|
|||||||
+22
-2
@@ -2,11 +2,31 @@
|
|||||||
|
|
||||||
# Master
|
# Master
|
||||||
|
|
||||||
- Correct ftp to https in vendored file
|
- Set Code Owners to @heroku/langauges
|
||||||
- Warn for Django 1.11 approaching EOL, provide link to roadmap
|
- Bugfix: Caching on subsequent redeploys
|
||||||
|
- Update tests to support latest version of Python
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# 168 (2020-04-06)
|
||||||
|
|
||||||
|
- Doc: Update Readme with version numbers
|
||||||
|
- update Code Owners to include the Heroku Buildpack Maintainers team
|
||||||
|
- Deprecation warning: BUILD_WITH_GEO_LIBRARIES is now deprecated. See warning for details.
|
||||||
|
- Clean up build log output
|
||||||
|
- Update Python versions in README to match docs
|
||||||
|
- Django version detection fixed, link updated
|
||||||
|
|
||||||
|
# 167 (2020-03-26)
|
||||||
|
|
||||||
|
- Add failcase for cache busting
|
||||||
|
- Bugfix: Clearing pip dependencies
|
||||||
|
|
||||||
|
# 166 (2020-03-05)
|
||||||
|
|
||||||
|
- Correct ftp to https in vendored file
|
||||||
|
- Warn for Django 1.11 approaching EOL, provide link to roadmap
|
||||||
|
|
||||||
# 165 (2020-02-27)
|
# 165 (2020-02-27)
|
||||||
|
|
||||||
- Python 3.8.2 now available.
|
- Python 3.8.2 now available.
|
||||||
|
|||||||
@@ -61,8 +61,9 @@ Specify a Python Runtime
|
|||||||
|
|
||||||
Supported runtime options include:
|
Supported runtime options include:
|
||||||
|
|
||||||
- `python-3.7.4`
|
- `python-3.8.2`
|
||||||
- `python-3.6.9`
|
- `python-3.7.6`
|
||||||
|
- `python-3.6.10`
|
||||||
- `python-2.7.17`
|
- `python-2.7.17`
|
||||||
|
|
||||||
## Tests
|
## Tests
|
||||||
|
|||||||
+1
-10
@@ -175,7 +175,7 @@ cd "$BUILD_DIR"
|
|||||||
# - Once the build is complete, `~/.heroku/{known-paths}` is copied back into the cache.
|
# - Once the build is complete, `~/.heroku/{known-paths}` is copied back into the cache.
|
||||||
|
|
||||||
# Create the cache directory, if it doesn't exist.
|
# Create the cache directory, if it doesn't exist.
|
||||||
mkdir -p "$CACHE_DIR"
|
mkdir -p "$CACHE_DIR/.heroku"
|
||||||
|
|
||||||
# Restore old artifacts from the cache.
|
# Restore old artifacts from the cache.
|
||||||
mkdir -p .heroku
|
mkdir -p .heroku
|
||||||
@@ -259,17 +259,8 @@ mtime "python.install.time" "${start}"
|
|||||||
# shellcheck source=bin/steps/pipenv
|
# shellcheck source=bin/steps/pipenv
|
||||||
source "$BIN_DIR/steps/pipenv"
|
source "$BIN_DIR/steps/pipenv"
|
||||||
|
|
||||||
# Uninstall removed dependencies with Pip.
|
|
||||||
# The buildpack will automatically remove any declared dependencies (in requirements.txt)
|
|
||||||
# that were explicitly removed. This machinery is a bit complex, but it is not complicated.
|
|
||||||
(( start=$(nowms) ))
|
|
||||||
# shellcheck source=bin/steps/pip-uninstall
|
|
||||||
source "$BIN_DIR/steps/pip-uninstall"
|
|
||||||
mtime "pip.uninstall.time" "${start}"
|
|
||||||
|
|
||||||
# If no requirements.txt file given, assume `setup.py develop` is intended.
|
# If no requirements.txt file given, assume `setup.py develop` is intended.
|
||||||
# This allows for people to ship a setup.py application to Heroku
|
# This allows for people to ship a setup.py application to Heroku
|
||||||
# (which is rare, but I vouch that it should work!)
|
|
||||||
|
|
||||||
if [ ! -f requirements.txt ] && [ ! -f Pipfile ]; then
|
if [ ! -f requirements.txt ] && [ ! -f Pipfile ]; then
|
||||||
echo "-e ." > requirements.txt
|
echo "-e ." > requirements.txt
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
# Python Buildpack Install Steps
|
||||||
|
|
||||||
|
TODO: Add context on Python install steps, such as why symlinking vs copying
|
||||||
|
|
||||||
|
## Installing the Pip tool
|
||||||
|
|
||||||
|
The Python Buildpack uses a tool called `get-pip` to install the pip tool. This
|
||||||
|
is done in the `python` script.
|
||||||
|
|
||||||
|
This is in part because Python historically did not come with pip by default.
|
||||||
|
|
||||||
|
## Installing Python packages using Pip
|
||||||
|
|
||||||
|
### Convention: Use `python` process to invoke Pip
|
||||||
|
|
||||||
|
We don't use this convention (yet) but this is an upcoming change being considered.
|
||||||
|
|
||||||
|
This is a bigger concern on Windows than it is in Linux environments, but an
|
||||||
|
emerging convention in the Python community is to invoke pip using:
|
||||||
|
|
||||||
|
```
|
||||||
|
python3 -m pip [options]
|
||||||
|
```
|
||||||
|
|
||||||
|
Invoking pip this way ensures correct location - python knows where these
|
||||||
|
packages are stored because it put them there (defaults to Python's pathing info).
|
||||||
|
|
||||||
|
All normal command line options are available using this method.
|
||||||
@@ -22,6 +22,10 @@ source "$BIN_DIR/utils"
|
|||||||
if (pip-grep -s requirements.txt GDAL gdal pygdal &> /dev/null) then
|
if (pip-grep -s requirements.txt GDAL gdal pygdal &> /dev/null) then
|
||||||
|
|
||||||
if [ ! -f ".heroku/vendor/bin/gdalserver" ]; then
|
if [ ! -f ".heroku/vendor/bin/gdalserver" ]; then
|
||||||
|
|
||||||
|
puts-warn "The vendored GDAL package in the Heroku Python Buildpack now deprecated."
|
||||||
|
puts-warn "To enable GDAL use an alternative buildpack is available here - https://github.com/heroku/heroku-geo-buildpack"
|
||||||
|
|
||||||
echo "-----> Noticed GDAL. Bootstrapping gdal."
|
echo "-----> Noticed GDAL. Bootstrapping gdal."
|
||||||
mkdir -p .heroku/vendor
|
mkdir -p .heroku/vendor
|
||||||
# Download and extract cryptography into target vendor directory.
|
# Download and extract cryptography into target vendor directory.
|
||||||
|
|||||||
@@ -24,6 +24,9 @@ source "$BIN_DIR/utils"
|
|||||||
if [[ "$BUILD_WITH_GEO_LIBRARIES" ]]; then
|
if [[ "$BUILD_WITH_GEO_LIBRARIES" ]]; then
|
||||||
mcount "buildvar.BUILD_WITH_GEO_LIBRARIES"
|
mcount "buildvar.BUILD_WITH_GEO_LIBRARIES"
|
||||||
|
|
||||||
|
puts-warn "The GDAL, GEOS and PROJ binaries and BUILD_WITH_GEO_LIBRARIES functonality are now deprecated."
|
||||||
|
puts-warn "An alternative buildpack to enable GDAL, GEOS and PROJ use is available here - https://github.com/heroku/heroku-geo-buildpack"
|
||||||
|
|
||||||
if [ ! -f ".heroku/vendor/bin/proj" ]; then
|
if [ ! -f ".heroku/vendor/bin/proj" ]; then
|
||||||
echo "-----> Bootstrapping gdal, geos, proj."
|
echo "-----> Bootstrapping gdal, geos, proj."
|
||||||
mkdir -p .heroku/vendor
|
mkdir -p .heroku/vendor
|
||||||
|
|||||||
@@ -38,15 +38,16 @@ if [ ! "$SKIP_PIP_INSTALL" ]; then
|
|||||||
mcount "failure.none-version"
|
mcount "failure.none-version"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if grep -q 'django==1.*' requirements.txt; then
|
if grep -qi '^django==1.*' requirements.txt; then
|
||||||
puts-warn "Your Django version is nearing the end of its community support."
|
puts-warn "Your Django version is nearing the end of its community support."
|
||||||
puts-warn "Upgrade to continue to receive security updates and for the best experience with Django."
|
puts-warn "Upgrade to continue to receive security updates and for the best experience with Django."
|
||||||
puts-warn "For more information, check out https://www.djangoproject.com/weblog/2015/jun/25/roadmap/"
|
puts-warn "For more information, check out https://www.djangoproject.com/download/#supported-versions"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f "$BUILD_DIR/.heroku/python/bin/pip" ]; then
|
if [ ! -f "$BUILD_DIR/.heroku/python/bin/pip" ]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
/app/.heroku/python/bin/pip install -r "$BUILD_DIR/requirements.txt" --exists-action=w --src=/app/.heroku/src --disable-pip-version-check --no-cache-dir 2>&1 | tee "$WARNINGS_LOG" | cleanup | indent
|
/app/.heroku/python/bin/pip install -r "$BUILD_DIR/requirements.txt" --exists-action=w --src=/app/.heroku/src --disable-pip-version-check --no-cache-dir 2>&1 | tee "$WARNINGS_LOG" | cleanup | indent
|
||||||
PIP_STATUS="${PIPESTATUS[0]}"
|
PIP_STATUS="${PIPESTATUS[0]}"
|
||||||
set -e
|
set -e
|
||||||
@@ -58,12 +59,9 @@ if [ ! "$SKIP_PIP_INSTALL" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Smart Requirements handling
|
|
||||||
cp requirements.txt .heroku/python/requirements-declared.txt
|
cp requirements.txt .heroku/python/requirements-declared.txt
|
||||||
/app/.heroku/python/bin/pip freeze --disable-pip-version-check > .heroku/python/requirements-installed.txt
|
/app/.heroku/python/bin/pip freeze --disable-pip-version-check > .heroku/python/requirements-installed.txt
|
||||||
|
|
||||||
echo
|
|
||||||
|
|
||||||
# Install test dependencies, for CI.
|
# Install test dependencies, for CI.
|
||||||
if [ "$INSTALL_TEST" ]; then
|
if [ "$INSTALL_TEST" ]; then
|
||||||
if [[ -f "$1/requirements-test.txt" ]]; then
|
if [[ -f "$1/requirements-test.txt" ]]; then
|
||||||
|
|||||||
+19
-9
@@ -86,14 +86,6 @@ if [[ "$STACK" != "$CACHED_PYTHON_STACK" ]]; then
|
|||||||
rm -fr .heroku/python-stack .heroku/python-version .heroku/python .heroku/vendor .heroku/python .heroku/python-sqlite3-version
|
rm -fr .heroku/python-stack .heroku/python-version .heroku/python .heroku/vendor .heroku/python .heroku/python-sqlite3-version
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# need to clear the cache for first time installing SQLite3,
|
|
||||||
# since the version is changing and could lead to runtime errors
|
|
||||||
# with compiled extensions.
|
|
||||||
if [ -d .heroku/python ] && [ ! -f .heroku/python-sqlite3-version ] && python_sqlite3_check "$PYTHON_VERSION"; then
|
|
||||||
puts-step "Need to update SQLite3, clearing cache"
|
|
||||||
rm -fr .heroku/python-stack .heroku/python-version .heroku/python .heroku/vendor
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -f .heroku/python-version ]; then
|
if [ -f .heroku/python-version ]; then
|
||||||
if [ ! "$(cat .heroku/python-version)" = "$PYTHON_VERSION" ]; then
|
if [ ! "$(cat .heroku/python-version)" = "$PYTHON_VERSION" ]; then
|
||||||
puts-step "Found $(cat .heroku/python-version), removing"
|
puts-step "Found $(cat .heroku/python-version), removing"
|
||||||
@@ -103,6 +95,24 @@ if [ -f .heroku/python-version ]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Check if we should reinstall python dependencies
|
||||||
|
if [[ ! -f "$CACHE_DIR/.heroku/requirements.txt" ]]; then
|
||||||
|
# IF there's no cached dependencies, update cached version of requirements.txt
|
||||||
|
# This should only run for new apps and first deploys after this update
|
||||||
|
cp -R "$BUILD_DIR/requirements.txt" "$CACHE_DIR/.heroku/requirements.txt"
|
||||||
|
else
|
||||||
|
# IF there IS a cached directory, check for differences with the new one
|
||||||
|
if ! diff "$BUILD_DIR/requirements.txt" "$CACHE_DIR/.heroku/requirements.txt" &> /dev/null; then
|
||||||
|
puts-step "Requirements file has been changed, clearing cached dependencies"
|
||||||
|
# if there are any differences, clear the Python cache
|
||||||
|
# Installing Python over again does not take noticably more time
|
||||||
|
cp -R "$BUILD_DIR/requirements.txt" "$CACHE_DIR/.heroku/requirements.txt"
|
||||||
|
rm -rf .heroku/python
|
||||||
|
unset SKIP_INSTALL
|
||||||
|
else
|
||||||
|
puts-step "No change in requirements detected, installing from cache"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if [ ! "$SKIP_INSTALL" ]; then
|
if [ ! "$SKIP_INSTALL" ]; then
|
||||||
puts-step "Installing $PYTHON_VERSION"
|
puts-step "Installing $PYTHON_VERSION"
|
||||||
@@ -137,7 +147,7 @@ if ! curl -s "${GETPIP_URL}" -o "$GETPIP_PY" &> /dev/null; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# If Pip isn't up to date:
|
# If a new Python has been installed or Pip isn't up to date:
|
||||||
if [ "$FRESH_PYTHON" ] || [[ ! $(pip --version) == *$PIP_UPDATE* ]]; then
|
if [ "$FRESH_PYTHON" ] || [[ ! $(pip --version) == *$PIP_UPDATE* ]]; then
|
||||||
|
|
||||||
puts-step "Installing pip"
|
puts-step "Installing pip"
|
||||||
|
|||||||
@@ -67,7 +67,6 @@ buildpack_sqlite3_install() {
|
|||||||
puts-step "Installing SQLite3"
|
puts-step "Installing SQLite3"
|
||||||
|
|
||||||
if sqlite3_install "$BUILD_DIR/.heroku/python" ; then
|
if sqlite3_install "$BUILD_DIR/.heroku/python" ; then
|
||||||
echo "Sqlite3 successfully installed."
|
|
||||||
mcount "success.python.sqlite3"
|
mcount "success.python.sqlite3"
|
||||||
else
|
else
|
||||||
echo "Sqlite3 failed to install."
|
echo "Sqlite3 failed to install."
|
||||||
|
|||||||
+1
-1
@@ -1,3 +1,3 @@
|
|||||||
---
|
---
|
||||||
- - "./repos/python/python-getting-started"
|
- - "./repos/python/python-getting-started"
|
||||||
- f56b90499ec11e1c9576da2f8c7331300e189db3
|
- 443a90c58be6881583cd7ef628e3869e3c30bb98
|
||||||
|
|||||||
@@ -1,10 +1,42 @@
|
|||||||
require_relative '../spec_helper'
|
require_relative '../spec_helper'
|
||||||
|
|
||||||
describe "Python!!!!!!!!!!!" do
|
describe "Default Python Deploy" do
|
||||||
it "🐍" do
|
it "🐍" do
|
||||||
Hatchet::Runner.new('python-getting-started', stack: DEFAULT_STACK).deploy do |app|
|
Hatchet::Runner.new('python-getting-started', stack: DEFAULT_STACK).deploy do |app|
|
||||||
|
|
||||||
|
# What should happen on first deploy
|
||||||
expect(app.output).to match(/Installing pip/)
|
expect(app.output).to match(/Installing pip/)
|
||||||
expect(app.run('python -V')).to match(/3.6.10/)
|
|
||||||
|
# What should not happen
|
||||||
|
expect(app.output).to_not match("Requirements file has been changed, updating cache")
|
||||||
|
expect(app.output).to_not match("No change in requirements detected, installing from cache")
|
||||||
|
expect(app.output).to_not match("No such file or directory")
|
||||||
|
expect(app.output).to_not match("cp: cannot create regular file")
|
||||||
|
|
||||||
|
# Redeploy with changed requirements file
|
||||||
|
run!(%Q{echo "" >> requirements.txt})
|
||||||
|
run!(%Q{echo "flask" >> requirements.txt})
|
||||||
|
run!(%Q{git add . ; git commit --allow-empty -m next})
|
||||||
|
app.push!
|
||||||
|
|
||||||
|
# Check for the cache to have cleared
|
||||||
|
expect(app.output).to match("Requirements file has been changed, updating cache")
|
||||||
|
|
||||||
|
# What should not happen when the requirements file is changed
|
||||||
|
expect(app.output).to_not match("No dependencies found, preparing to install")
|
||||||
|
expect(app.output).to_not match("No change in requirements detected, installing from cache")
|
||||||
|
|
||||||
|
run!(%Q{git commit --allow-empty -m next})
|
||||||
|
app.push!
|
||||||
|
|
||||||
|
# With no changes on redeploy, the cache should
|
||||||
|
expect(app.output).to match("No change in requirements detected, installing from cache")
|
||||||
|
|
||||||
|
# With no changes on redeploy, the cache should not
|
||||||
|
expect(app.output).to_not match("Requirements file has been changed, updating cache")
|
||||||
|
expect(app.output).to_not match("No dependencies found, preparing to install")
|
||||||
|
|
||||||
|
expect(app.run('python -V')).to match(/3.7.6/)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
+7
-1
@@ -20,4 +20,10 @@ if ENV['TRAVIS']
|
|||||||
exit 0 if ENV['TRAVIS_PULL_REQUEST'] != 'false' && ENV['TRAVIS_BRANCH'] == 'master'
|
exit 0 if ENV['TRAVIS_PULL_REQUEST'] != 'false' && ENV['TRAVIS_BRANCH'] == 'master'
|
||||||
end
|
end
|
||||||
|
|
||||||
DEFAULT_STACK = 'heroku-16'
|
DEFAULT_STACK = 'heroku-18'
|
||||||
|
|
||||||
|
def run!(cmd)
|
||||||
|
out = `#{cmd}`
|
||||||
|
raise "Error running command #{cmd} with output: #{out}" unless $?.success?
|
||||||
|
return out
|
||||||
|
end
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
pwned-passwords-django==1.4
|
||||||
|
Django==2.1
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
Django==1.11
|
||||||
+8
-1
@@ -23,6 +23,14 @@ testGEOS() {
|
|||||||
assertCapturedSuccess
|
assertCapturedSuccess
|
||||||
}
|
}
|
||||||
|
|
||||||
|
testGEOSDeprecation() {
|
||||||
|
export BUILD_WITH_GEO_LIBRARIES=1
|
||||||
|
compile "geos"
|
||||||
|
assertCaptured " ! The GDAL, GEOS and PROJ binaries and BUILD_WITH_GEO_LIBRARIES functonality are now deprecated.
|
||||||
|
! An alternative buildpack to enable GDAL, GEOS and PROJ use is available here - https://github.com/heroku/heroku-geo-buildpack"
|
||||||
|
assertCapturedSuccess
|
||||||
|
}
|
||||||
|
|
||||||
testNLTK() {
|
testNLTK() {
|
||||||
# NOTE: This is a RuntimeWarning emitted by Python 3's runpy.py script
|
# NOTE: This is a RuntimeWarning emitted by Python 3's runpy.py script
|
||||||
# which is what is used when you call `python -m <module>`. This is due to
|
# which is what is used when you call `python -m <module>`. This is due to
|
||||||
@@ -48,7 +56,6 @@ testPysqlite() {
|
|||||||
|
|
||||||
testSqliteInstall() {
|
testSqliteInstall() {
|
||||||
compile "pythonDefault"
|
compile "pythonDefault"
|
||||||
assertCaptured "Sqlite3 successfully installed."
|
|
||||||
assertNotCaptured "Sqlite3 failed to install."
|
assertNotCaptured "Sqlite3 failed to install."
|
||||||
assertCapturedSuccess
|
assertCapturedSuccess
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,6 +74,18 @@ testNoRequirements() {
|
|||||||
assertCapturedError
|
assertCapturedError
|
||||||
}
|
}
|
||||||
|
|
||||||
|
testWarnOldDjango() {
|
||||||
|
compile "old-django"
|
||||||
|
assertCaptured "Your Django version is nearing the end of its community support."
|
||||||
|
assertCapturedSuccess
|
||||||
|
}
|
||||||
|
|
||||||
|
testDontWarnOldDjango() {
|
||||||
|
compile "not-old-django"
|
||||||
|
assertNotCaptured "Your Django version is nearing the end of its community support."
|
||||||
|
assertCapturedSuccess
|
||||||
|
}
|
||||||
|
|
||||||
pushd $(dirname 0) >/dev/null
|
pushd $(dirname 0) >/dev/null
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user