mirror of
https://github.com/kennethreitz/heroku-buildpack-python.git
synced 2026-06-05 23:10:16 +00:00
@@ -1,5 +1,7 @@
|
||||
repos:
|
||||
- repo: git://github.com/detailyang/pre-commit-shell
|
||||
rev: 1.0.4
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v2.3.0
|
||||
hooks:
|
||||
- id: shell-lint
|
||||
- id: check-yaml
|
||||
- id: end-of-file-fixer
|
||||
- id: trailing-whitespace
|
||||
|
||||
+20
-14
@@ -1,31 +1,37 @@
|
||||
language: ruby
|
||||
dist: trusty
|
||||
sudo: required
|
||||
|
||||
rvm:
|
||||
- 2.4.4
|
||||
before_script:
|
||||
- gem install bundler -v 1.16.2
|
||||
- bundle exec hatchet ci:setup
|
||||
|
||||
script:
|
||||
- docker build --pull --tag heroku-python-build-heroku-16 --file $(pwd)/Dockerfile .
|
||||
- docker run --rm -e "STACK=heroku-16" heroku-python-build-heroku-16 bash $TESTFOLDER
|
||||
- docker build --pull --tag heroku-python-build-heroku-18 --file $(pwd)/Dockerfile.heroku-18 .
|
||||
- docker run --rm -e "STACK=heroku-18" heroku-python-build-heroku-18 bash $TESTFOLDER
|
||||
|
||||
jobs:
|
||||
include:
|
||||
- stage: Bash linting (shellcheck)
|
||||
sudo: false
|
||||
script: make check
|
||||
- stage: Stack Unit Tests
|
||||
services: docker
|
||||
env: STACK=heroku-18
|
||||
script: "./tests.sh"
|
||||
- stage: Stack Unit Tests
|
||||
services: docker
|
||||
env: STACK=heroku-16
|
||||
script: "./tests.sh"
|
||||
- stage: Hatchet Integration
|
||||
if: branch = master
|
||||
name: Run Hatchet
|
||||
script: "bundle exec rspec"
|
||||
env:
|
||||
matrix:
|
||||
- TESTFOLDER=test/run-deps
|
||||
- TESTFOLDER=test/run-versions
|
||||
- TESTFOLDER=test/run-features
|
||||
global:
|
||||
- HATCHET_RETRIES=3
|
||||
- IS_RUNNING_ON_CI=true
|
||||
- HATCHET_APP_LIMIT=5
|
||||
- HATCHET_DEPLOY_STRATEGY=git
|
||||
- secure: yjtlPE5FbVxTKnjUy/tZUBgSEf4qADD3QOxtgziuid73S0U/1IEXlMGFULsQzIjtlHKmHeywZqpVVEpthIH4RuT7uoX1Pb7SSM/g0T8fT3VoEFbFK1uYl0oZQbUS4Klxv9tPiumj8if3m6ULEGIz1X0wZcMOC0tMLwVCnwmap0E=
|
||||
- secure: ZeFTHWwnpIKE9nAqs88ocmiQh7bKce84lilGm5J23nf3N6V4wNyLwqlkvsM008WGBCaOg9AUx7ZunasT0ANsR5gLP3eV2UUg7ILdRgV2Gy13eNRFheC4PHdN92RqQ3aKoqlIv2K999xlhVjod0NzhkQQXB6PddfQINbuU7ks6As=
|
||||
- HATCHET_RETRIES=3
|
||||
- IS_RUNNING_ON_CI=true
|
||||
- HATCHET_APP_LIMIT=5
|
||||
- HATCHET_DEPLOY_STRATEGY=git
|
||||
- secure: yjtlPE5FbVxTKnjUy/tZUBgSEf4qADD3QOxtgziuid73S0U/1IEXlMGFULsQzIjtlHKmHeywZqpVVEpthIH4RuT7uoX1Pb7SSM/g0T8fT3VoEFbFK1uYl0oZQbUS4Klxv9tPiumj8if3m6ULEGIz1X0wZcMOC0tMLwVCnwmap0E=
|
||||
- secure: ZeFTHWwnpIKE9nAqs88ocmiQh7bKce84lilGm5J23nf3N6V4wNyLwqlkvsM008WGBCaOg9AUx7ZunasT0ANsR5gLP3eV2UUg7ILdRgV2Gy13eNRFheC4PHdN92RqQ3aKoqlIv2K999xlhVjod0NzhkQQXB6PddfQINbuU7ks6As=
|
||||
|
||||
@@ -1,318 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Default Python Versions
|
||||
# shellcheck source=bin/default_pythons
|
||||
source "bin/default_pythons"
|
||||
|
||||
testAirflow() {
|
||||
export SLUGIFY_USES_TEXT_UNIDECODE="yes"
|
||||
compile "airflow"
|
||||
assertCaptured "apache-airflow==1.10.2"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testPipenv() {
|
||||
compile "pipenv"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testPipenvLock() {
|
||||
compile "pipenv-lock"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testPipenvVersion() {
|
||||
compile "pipenv-version"
|
||||
assertCaptured $DEFAULT_PYTHON_VERSION
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testPipenvVersion2() {
|
||||
compile "pipenv-version2"
|
||||
assertCaptured $LATEST_27
|
||||
assertCapturedSuccess
|
||||
}
|
||||
testPipenvFullVersion() {
|
||||
compile "pipenv-full-version"
|
||||
assertCaptured "3.6.3"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testNoRequirements() {
|
||||
compile "no-requirements"
|
||||
assertCapturedError
|
||||
}
|
||||
|
||||
testCollectstatic() {
|
||||
compile "collectstatic"
|
||||
assertCaptured "collectstatic"
|
||||
}
|
||||
|
||||
testGEOS() {
|
||||
export BUILD_WITH_GEO_LIBRARIES=1
|
||||
compile "geos"
|
||||
assertCaptured "geos"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testNLTK() {
|
||||
# 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
|
||||
# how nltk imports things. It's not actually an error, but it would probably
|
||||
# be bad to silence in Production.
|
||||
export PYTHONWARNINGS="ignore::RuntimeWarning"
|
||||
compile "nltk"
|
||||
assertCaptured "[nltk_data] Downloading package city_database" "STD_ERR"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testSetupPy() {
|
||||
compile "setup-py"
|
||||
assertCaptured "maya"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
|
||||
testStandardRequirements() {
|
||||
compile "requirements-standard"
|
||||
assertCaptured "requests"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testPsycopg2() {
|
||||
compile "psycopg2"
|
||||
assertCaptured "psycopg2"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testCffi() {
|
||||
compile "cffi"
|
||||
assertCaptured "cffi"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testPylibmc() {
|
||||
compile "pylibmc"
|
||||
assertCaptured "pylibmc"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testPythonDefault() {
|
||||
updateVersion "pythonDefault" $DEFAULT_PYTHON_VERSION
|
||||
compile "pythonDefault"
|
||||
assertCaptured $DEFAULT_PYTHON_VERSION
|
||||
assertNotCaptured "security update"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testPython2() {
|
||||
updateVersion "python2" $LATEST_27
|
||||
echo $LATEST_27 > "runtime.txt"
|
||||
compile "python2"
|
||||
assertCaptured $LATEST_27
|
||||
assertNotCaptured "security update"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testPython2_warn() {
|
||||
compile "python2_warn"
|
||||
assertCaptured "python-2.7.15"
|
||||
assertCaptured "security update!"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testPython2_fail() {
|
||||
compile "python2_fail"
|
||||
assertCaptured "Aborting"
|
||||
assertCapturedError
|
||||
}
|
||||
|
||||
testPython3_4() {
|
||||
if [[ $STACK != "cedar-14" ]]; then
|
||||
updateVersion "python3_4" $LATEST_34
|
||||
compile "python3_4"
|
||||
assertCaptured $LATEST_34
|
||||
assertNotCaptured "security update"
|
||||
assertCapturedSuccess
|
||||
fi
|
||||
}
|
||||
|
||||
testPython3_4_warn() {
|
||||
compile "python3_4_warn"
|
||||
if [[ $STACK = "cedar-14" ]]; then
|
||||
assertCaptured "python-3.4.0"
|
||||
assertCaptured "security update!"
|
||||
assertCapturedSuccess
|
||||
else
|
||||
assertCapturedError
|
||||
fi
|
||||
}
|
||||
|
||||
testPython3_4_fail() {
|
||||
compile "python3_4_fail"
|
||||
assertCaptured "Aborting"
|
||||
assertCapturedError
|
||||
}
|
||||
|
||||
testPython3_5() {
|
||||
if [[ $STACK != "cedar-14" ]]; then
|
||||
updateVersion "python3_5" $LATEST_35
|
||||
compile "python3_5"
|
||||
assertCaptured $LATEST_35
|
||||
assertNotCaptured "security update"
|
||||
assertCapturedSuccess
|
||||
fi
|
||||
}
|
||||
|
||||
testPython3_5_warn() {
|
||||
compile "python3_5_warn"
|
||||
if [[ $STACK = "cedar-14" ]]; then
|
||||
assertCaptured "python-3.5.3"
|
||||
assertCaptured "security update!"
|
||||
assertCapturedError
|
||||
else
|
||||
assertCapturedError
|
||||
fi
|
||||
}
|
||||
|
||||
testPython3_5_fail() {
|
||||
compile "python3_5_fail"
|
||||
assertCaptured "Aborting"
|
||||
assertCapturedError
|
||||
}
|
||||
|
||||
testPython3_6() {
|
||||
updateVersion "python3_6" $LATEST_36
|
||||
compile "python3_6"
|
||||
assertCaptured $LATEST_36
|
||||
assertNotCaptured "security update"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testPython3_6_warn() {
|
||||
compile "python3_6_warn"
|
||||
assertCaptured "python-3.6.7"
|
||||
assertCaptured "security update!"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testPython3_6_fail() {
|
||||
compile "python3_6_fail"
|
||||
assertCaptured "Aborting"
|
||||
assertCapturedError
|
||||
}
|
||||
|
||||
testPython3_7() {
|
||||
updateVersion "python3_7" $LATEST_37
|
||||
compile "python3_7"
|
||||
if [[ $STACK = "cedar-14" ]]; then
|
||||
assertCapturedError
|
||||
else
|
||||
assertNotCaptured "security update"
|
||||
assertCaptured $LATEST_37
|
||||
assertCapturedSuccess
|
||||
fi
|
||||
}
|
||||
|
||||
testPython3_7_warn() {
|
||||
compile "python3_7_warn"
|
||||
if [[ $STACK = "cedar-14" ]]; then
|
||||
assertCapturedError
|
||||
else
|
||||
assertCaptured "python-3.7.1"
|
||||
assertCaptured "security update!"
|
||||
assertCapturedSuccess
|
||||
fi
|
||||
}
|
||||
|
||||
testPython3_7_fail() {
|
||||
compile "python3_7_fail"
|
||||
assertCaptured "Aborting"
|
||||
assertCapturedError
|
||||
}
|
||||
|
||||
testGitEgg() {
|
||||
compile "git-egg"
|
||||
assertCaptured "requests"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testSmartRequirements() {
|
||||
local cache_dir="$(mktmpdir)"
|
||||
compile "requirements-standard" "$cache_dir"
|
||||
assertFile "requests" ".heroku/python/requirements-declared.txt"
|
||||
assertCapturedSuccess
|
||||
compile "psycopg2" "$cache_dir"
|
||||
assertCaptured "Uninstalling requests"
|
||||
assertFile "psycopg2" ".heroku/python/requirements-declared.txt"
|
||||
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
|
||||
popd >/dev/null
|
||||
|
||||
source $(pwd)/test/utils
|
||||
|
||||
mktmpdir() {
|
||||
dir=$(mktemp -t testXXXXX)
|
||||
rm -rf $dir
|
||||
mkdir $dir
|
||||
echo $dir
|
||||
}
|
||||
|
||||
detect() {
|
||||
capture $(pwd)/bin/detect $(pwd)/test/fixtures/$1
|
||||
}
|
||||
|
||||
compile_dir=""
|
||||
|
||||
default_process_types_cleanup() {
|
||||
file="/tmp/default_process_types"
|
||||
if [ -f "$file" ]; then
|
||||
rm "$file"
|
||||
fi
|
||||
}
|
||||
|
||||
compile() {
|
||||
default_process_types_cleanup
|
||||
bp_dir=$(mktmpdir)
|
||||
compile_dir=$(mktmpdir)
|
||||
cp -a $(pwd)/* ${bp_dir}
|
||||
cp -a ${bp_dir}/test/fixtures/$1/. ${compile_dir}
|
||||
capture ${bp_dir}/bin/compile ${compile_dir} ${2:-$(mktmpdir)} $3
|
||||
}
|
||||
|
||||
compileDir() {
|
||||
default_process_types_cleanup
|
||||
|
||||
local bp_dir=$(mktmpdir)
|
||||
local compile_dir=${1:-$(mktmpdir)}
|
||||
local cache_dir=${2:-$(mktmpdir)}
|
||||
local env_dir=$3
|
||||
|
||||
cp -a $(pwd)/* ${bp_dir}
|
||||
capture ${bp_dir}/bin/compile ${compile_dir} ${cache_dir} ${env_dir}
|
||||
}
|
||||
|
||||
release() {
|
||||
bp_dir=$(mktmpdir)
|
||||
cp -a $(pwd)/* ${bp_dir}
|
||||
capture ${bp_dir}/bin/release ${bp_dir}/test/fixtures/$1
|
||||
}
|
||||
|
||||
assertFile() {
|
||||
assertEquals "$1" "$(cat ${compile_dir}/$2)"
|
||||
}
|
||||
|
||||
source $(pwd)/test/shunit2
|
||||
Executable
+59
@@ -0,0 +1,59 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Default Python Versions
|
||||
# shellcheck source=bin/default_pythons
|
||||
source "bin/default_pythons"
|
||||
|
||||
testAirflow() {
|
||||
export SLUGIFY_USES_TEXT_UNIDECODE="yes"
|
||||
compile "airflow"
|
||||
assertCaptured "apache-airflow==1.10.2"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testCollectstatic() {
|
||||
compile "collectstatic"
|
||||
assertCaptured "collectstatic"
|
||||
}
|
||||
|
||||
testGEOS() {
|
||||
export BUILD_WITH_GEO_LIBRARIES=1
|
||||
compile "geos"
|
||||
assertCaptured "geos"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testNLTK() {
|
||||
# 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
|
||||
# how nltk imports things. It's not actually an error, but it would probably
|
||||
# be bad to silence in Production.
|
||||
export PYTHONWARNINGS="ignore::RuntimeWarning"
|
||||
compile "nltk"
|
||||
assertCaptured "[nltk_data] Downloading package city_database" "STD_ERR"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testPsycopg2() {
|
||||
compile "psycopg2"
|
||||
assertCaptured "psycopg2"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testCffi() {
|
||||
compile "cffi"
|
||||
assertCaptured "cffi"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testPylibmc() {
|
||||
compile "pylibmc"
|
||||
assertCaptured "pylibmc"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
pushd $(dirname 0) >/dev/null
|
||||
popd >/dev/null
|
||||
|
||||
source $(pwd)/test/utils
|
||||
source $(pwd)/test/shunit2
|
||||
Executable
+82
@@ -0,0 +1,82 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Default Python Versions
|
||||
# shellcheck source=bin/default_pythons
|
||||
source "bin/default_pythons"
|
||||
|
||||
testGitEgg() {
|
||||
compile "git-egg"
|
||||
assertCaptured "requests"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testSmartRequirements() {
|
||||
local cache_dir="$(mktmpdir)"
|
||||
compile "requirements-standard" "$cache_dir"
|
||||
assertFile "requests" ".heroku/python/requirements-declared.txt"
|
||||
assertCapturedSuccess
|
||||
compile "psycopg2" "$cache_dir"
|
||||
assertCaptured "Uninstalling requests"
|
||||
assertFile "psycopg2" ".heroku/python/requirements-declared.txt"
|
||||
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
|
||||
}
|
||||
|
||||
testSetupPy() {
|
||||
compile "setup-py"
|
||||
assertCaptured "maya"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testStandardRequirements() {
|
||||
compile "requirements-standard"
|
||||
assertCaptured "requests"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testPipenv() {
|
||||
compile "pipenv"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testPipenvLock() {
|
||||
compile "pipenv-lock"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testPipenvVersion() {
|
||||
compile "pipenv-version"
|
||||
assertCaptured $DEFAULT_PYTHON_VERSION
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testPipenvVersion2() {
|
||||
compile "pipenv-version2"
|
||||
assertCaptured $LATEST_27
|
||||
assertCapturedSuccess
|
||||
}
|
||||
testPipenvFullVersion() {
|
||||
compile "pipenv-full-version"
|
||||
assertCaptured "3.6.3"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testNoRequirements() {
|
||||
compile "no-requirements"
|
||||
assertCapturedError
|
||||
}
|
||||
|
||||
pushd $(dirname 0) >/dev/null
|
||||
popd >/dev/null
|
||||
|
||||
source $(pwd)/test/utils
|
||||
source $(pwd)/test/shunit2
|
||||
Executable
+145
@@ -0,0 +1,145 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Default Python Versions
|
||||
# shellcheck source=bin/default_pythons
|
||||
source "bin/default_pythons"
|
||||
|
||||
testPythonDefault() {
|
||||
updateVersion "pythonDefault" $DEFAULT_PYTHON_VERSION
|
||||
compile "pythonDefault"
|
||||
assertCaptured $DEFAULT_PYTHON_VERSION
|
||||
assertNotCaptured "security update"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testPython2() {
|
||||
updateVersion "python2" $LATEST_27
|
||||
echo $LATEST_27 > "runtime.txt"
|
||||
compile "python2"
|
||||
assertCaptured $LATEST_27
|
||||
assertNotCaptured "security update"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testPython2_warn() {
|
||||
compile "python2_warn"
|
||||
assertCaptured "python-2.7.15"
|
||||
assertCaptured "security update!"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testPython2_fail() {
|
||||
compile "python2_fail"
|
||||
assertCaptured "Aborting"
|
||||
assertCapturedError
|
||||
}
|
||||
|
||||
testPython3_4() {
|
||||
if [[ $STACK != "cedar-14" ]]; then
|
||||
updateVersion "python3_4" $LATEST_34
|
||||
compile "python3_4"
|
||||
assertCaptured $LATEST_34
|
||||
assertNotCaptured "security update"
|
||||
assertCapturedSuccess
|
||||
fi
|
||||
}
|
||||
|
||||
testPython3_4_warn() {
|
||||
compile "python3_4_warn"
|
||||
if [[ $STACK = "cedar-14" ]]; then
|
||||
assertCaptured "python-3.4.0"
|
||||
assertCaptured "security update!"
|
||||
assertCapturedSuccess
|
||||
else
|
||||
assertCapturedError
|
||||
fi
|
||||
}
|
||||
|
||||
testPython3_4_fail() {
|
||||
compile "python3_4_fail"
|
||||
assertCaptured "Aborting"
|
||||
assertCapturedError
|
||||
}
|
||||
|
||||
testPython3_5() {
|
||||
if [[ $STACK != "cedar-14" ]]; then
|
||||
updateVersion "python3_5" $LATEST_35
|
||||
compile "python3_5"
|
||||
assertCaptured $LATEST_35
|
||||
assertNotCaptured "security update"
|
||||
assertCapturedSuccess
|
||||
fi
|
||||
}
|
||||
|
||||
testPython3_5_warn() {
|
||||
compile "python3_5_warn"
|
||||
if [[ $STACK = "cedar-14" ]]; then
|
||||
assertCaptured "python-3.5.3"
|
||||
assertCaptured "security update!"
|
||||
assertCapturedError
|
||||
else
|
||||
assertCapturedError
|
||||
fi
|
||||
}
|
||||
|
||||
testPython3_5_fail() {
|
||||
compile "python3_5_fail"
|
||||
assertCaptured "Aborting"
|
||||
assertCapturedError
|
||||
}
|
||||
|
||||
testPython3_6() {
|
||||
updateVersion "python3_6" $LATEST_36
|
||||
compile "python3_6"
|
||||
assertCaptured $LATEST_36
|
||||
assertNotCaptured "security update"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testPython3_6_warn() {
|
||||
compile "python3_6_warn"
|
||||
assertCaptured "python-3.6.7"
|
||||
assertCaptured "security update!"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testPython3_6_fail() {
|
||||
compile "python3_6_fail"
|
||||
assertCaptured "Aborting"
|
||||
assertCapturedError
|
||||
}
|
||||
|
||||
testPython3_7() {
|
||||
updateVersion "python3_7" $LATEST_37
|
||||
compile "python3_7"
|
||||
if [[ $STACK = "cedar-14" ]]; then
|
||||
assertCapturedError
|
||||
else
|
||||
assertNotCaptured "security update"
|
||||
assertCaptured $LATEST_37
|
||||
assertCapturedSuccess
|
||||
fi
|
||||
}
|
||||
|
||||
testPython3_7_warn() {
|
||||
compile "python3_7_warn"
|
||||
if [[ $STACK = "cedar-14" ]]; then
|
||||
assertCapturedError
|
||||
else
|
||||
assertCaptured "python-3.7.1"
|
||||
assertCaptured "security update!"
|
||||
assertCapturedSuccess
|
||||
fi
|
||||
}
|
||||
|
||||
testPython3_7_fail() {
|
||||
compile "python3_7_fail"
|
||||
assertCaptured "Aborting"
|
||||
assertCapturedError
|
||||
}
|
||||
|
||||
pushd $(dirname 0) >/dev/null
|
||||
popd >/dev/null
|
||||
|
||||
source $(pwd)/test/utils
|
||||
source $(pwd)/test/shunit2
|
||||
+52
@@ -212,3 +212,55 @@ assertFileMD5()
|
||||
|
||||
assertEquals "${expected_md5_cmd_output}" "`${md5_cmd}`"
|
||||
}
|
||||
|
||||
# Test helpers
|
||||
mktmpdir() {
|
||||
dir=$(mktemp -t testXXXXX)
|
||||
rm -rf $dir
|
||||
mkdir $dir
|
||||
echo $dir
|
||||
}
|
||||
|
||||
detect() {
|
||||
capture $(pwd)/bin/detect $(pwd)/test/fixtures/$1
|
||||
}
|
||||
|
||||
compile_dir=""
|
||||
|
||||
default_process_types_cleanup() {
|
||||
file="/tmp/default_process_types"
|
||||
if [ -f "$file" ]; then
|
||||
rm "$file"
|
||||
fi
|
||||
}
|
||||
|
||||
compile() {
|
||||
default_process_types_cleanup
|
||||
bp_dir=$(mktmpdir)
|
||||
compile_dir=$(mktmpdir)
|
||||
cp -a $(pwd)/* ${bp_dir}
|
||||
cp -a ${bp_dir}/test/fixtures/$1/. ${compile_dir}
|
||||
capture ${bp_dir}/bin/compile ${compile_dir} ${2:-$(mktmpdir)} $3
|
||||
}
|
||||
|
||||
compileDir() {
|
||||
default_process_types_cleanup
|
||||
|
||||
local bp_dir=$(mktmpdir)
|
||||
local compile_dir=${1:-$(mktmpdir)}
|
||||
local cache_dir=${2:-$(mktmpdir)}
|
||||
local env_dir=$3
|
||||
|
||||
cp -a $(pwd)/* ${bp_dir}
|
||||
capture ${bp_dir}/bin/compile ${compile_dir} ${cache_dir} ${env_dir}
|
||||
}
|
||||
|
||||
release() {
|
||||
bp_dir=$(mktmpdir)
|
||||
cp -a $(pwd)/* ${bp_dir}
|
||||
capture ${bp_dir}/bin/release ${bp_dir}/test/fixtures/$1
|
||||
}
|
||||
|
||||
assertFile() {
|
||||
assertEquals "$1" "$(cat ${compile_dir}/$2)"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user