diff --git a/.travis.yml b/.travis.yml index 703f4a125..b172e849e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,12 +9,8 @@ before_script: - bundle exec hatchet ci:setup script: - - 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 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 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 build --pull --tag travis-build-$STACK --file $(pwd)/builds/$STACK.Dockerfile . + - docker run --rm -e "STACK=$STACK" -e "USE_STAGING_BINARIES=$USE_STAGING_BINARIES" travis-build-$STACK bash $TESTFOLDER jobs: include: @@ -27,16 +23,28 @@ jobs: script: "bundle exec rspec" env: matrix: - - TESTFOLDER=test/run-deps - - TESTFOLDER=test/run-deps USE_STAGING_BINARIES=https://lang-python.s3.amazonaws.com/staging - - TESTFOLDER=test/run-versions - - TESTFOLDER=test/run-versions USE_STAGING_BINARIES=https://lang-python.s3.amazonaws.com/staging - - TESTFOLDER=test/run-features - - TESTFOLDER=test/run-features USE_STAGING_BINARIES=https://lang-python.s3.amazonaws.com/staging + - STACK=cedar-14 TESTFOLDER=test/run-deps + - STACK=cedar-14 TESTFOLDER=test/run-deps USE_STAGING_BINARIES=https://lang-python.s3.amazonaws.com/staging + - STACK=cedar-14 TESTFOLDER=test/run-versions + - STACK=cedar-14 TESTFOLDER=test/run-versions USE_STAGING_BINARIES=https://lang-python.s3.amazonaws.com/staging + - STACK=cedar-14 TESTFOLDER=test/run-features + - STACK=cedar-14 TESTFOLDER=test/run-features USE_STAGING_BINARIES=https://lang-python.s3.amazonaws.com/staging + - STACK=heroku-16 TESTFOLDER=test/run-deps + - STACK=heroku-16 TESTFOLDER=test/run-deps USE_STAGING_BINARIES=https://lang-python.s3.amazonaws.com/staging + - STACK=heroku-16 TESTFOLDER=test/run-versions + - STACK=heroku-16 TESTFOLDER=test/run-versions USE_STAGING_BINARIES=https://lang-python.s3.amazonaws.com/staging + - STACK=heroku-16 TESTFOLDER=test/run-features + - STACK=heroku-16 TESTFOLDER=test/run-features USE_STAGING_BINARIES=https://lang-python.s3.amazonaws.com/staging + - STACK=heroku-18 TESTFOLDER=test/run-deps + - STACK=heroku-18 TESTFOLDER=test/run-deps USE_STAGING_BINARIES=https://lang-python.s3.amazonaws.com/staging + - STACK=heroku-18 TESTFOLDER=test/run-versions + - STACK=heroku-18 TESTFOLDER=test/run-versions USE_STAGING_BINARIES=https://lang-python.s3.amazonaws.com/staging + - STACK=heroku-18 TESTFOLDER=test/run-features + - STACK=heroku-18 TESTFOLDER=test/run-features USE_STAGING_BINARIES=https://lang-python.s3.amazonaws.com/staging global: - HATCHET_RETRIES=3 - IS_RUNNING_ON_CI=true - HATCHET_APP_LIMIT=5 - HATCHET_DEPLOY_STRATEGY=git - - secure: yjtlPE5FbVxTKnjUy/tZUBgSEf4qADD3QOxtgziuid73S0U/1IEXlMGFULsQzIjtlHKmHeywZqpVVEpthIH4RuT7uoX1Pb7SSM/g0T8fT3VoEFbFK1uYl0oZQbUS4Klxv9tPiumj8if3m6ULEGIz1X0wZcMOC0tMLwVCnwmap0E= - - secure: ZeFTHWwnpIKE9nAqs88ocmiQh7bKce84lilGm5J23nf3N6V4wNyLwqlkvsM008WGBCaOg9AUx7ZunasT0ANsR5gLP3eV2UUg7ILdRgV2Gy13eNRFheC4PHdN92RqQ3aKoqlIv2K999xlhVjod0NzhkQQXB6PddfQINbuU7ks6As= + - secure: aICPFKFCmu+OWynYd0QRJVU37Rw3GTCxy3PePj5DSDx3/2S2i0BXXLhn/LECdMY98h24O0xL8k860+gy646Mjq8Cpaf16BUNJhWH5HWS50paymREhnrYd/twSh0i6M2dnlbCjXDHWc8n+64/vu4FmS1UhLw2nQBMCrcIRcxHBpPPHIy3F4pctGBb1LEaExmA3JQRDUoX6uzgt/68gjMDPfvUwM5lzBwRLOdpUwNOvIlYxKioxcqjhMAFuHNo3na50QzPlNE2dqt84iDRj4N7/7v6NzWhG/9O1TxkcVCjn8ZhRIsFQoIEW32X0tqGCsSMpKiR+h6PjGrt+y07xjiRKQPNoFdhjpASO7sGpPrENsOxN263XJPmea9iGJrAvLBYePHdhblzwrXfcM0285RxRJTZg6o7BFW16+PkurpuS7dGvX/7SYAv3IXCksWBbDk+RtpS5KVmYrv6MI+fuGdSFVRq+RS1zmWwaXD1zpc2N4hpV2ZnwI/uwuDwrTd60ou2pXLxttrIw9dqq44CmY5vAu69Fu4dw2BkmUhGUf8ApG6TTgqrt5rdO2W11D4qr/YNZ9Jydh3m+Fa2//JRAGSq0SSW+eqIjCU7D1kqR2lgQD5TdC7mYRFyWGF4YQ8V573Yo0tlL/zQzt07YuyfwIWkb2+AQyZh90cFs+O7T8vg99s= + - secure: cu0TCp7HFTCOJTOwQRm1ZhWL86JawLeaUR0/Jg9ThutphfGWNV8nOfgHUG/PEwgb0jwJz34c0DdfpwCdVuDmMsqptmA9I2Lu59BZidi87dqi+PuvfaUvSM69mPABPxaTE34iFtzpWtab+KsnDd/TG87KVk/1AmK1OjA4LKBkJOqo2XkkSFgE94QM04JRSaRiRD8qiLrXTlzkRWsMh1gGnj5kOP0jozBBWbjIMU42XCd9liei7eHoh3ZmFDLOatfIwhCkadG8vBMD5nV0UDCHt2+U6+YGC8cVI+nyjXNAMuOUXZ3GowQRCtIxokVgzRINVAcmDOc40i/gfy9p7HbU3G2FC9wNo98EKecF2GjYtbQdjEgBfijN4nFYi1R/D5CMl4Qo5GtGDkRPO1E626AoHTTtfpIP6MDtjLWTrriiobW8ZuV852jyl/lWJc/O2wYho/34kSER47r5+4398F+9BUbySLzJ9f3/8eNtPIsQunrgO93/PyfkS/2O+7Amov+NPMQ0JoUQuVJt/aHsrFCgbcHR+tOeT7eYYi7mxhLHsteMbRLfCHIIkg3FDEfPITOLgArKj6l9faTJiawLMG9xMMp3Wi6SYPvosDz6gwYDr+8CHeEn0UoUltYM/msMLiGZ0t8oi2DWjvRdLQe9qfC5N77mtcsI1pWEcyc9SOwrIBs= diff --git a/Makefile b/Makefile index bf7c5c7cc..e3da5678f 100644 --- a/Makefile +++ b/Makefile @@ -10,17 +10,17 @@ check: test-cedar-14: @echo "Running tests in docker (cedar-14)..." - @docker run -v $(shell pwd):/buildpack:ro --rm -it -e "STACK=cedar-14" heroku/cedar:14 bash -c 'cp -r /buildpack /buildpack_test; cd /buildpack_test/; test/run-deps; test/run-features; test/run-versions;' + @docker run -v $(shell pwd):/buildpack:ro --rm -it -e "STACK=cedar-14" -e TESTS=$(TESTS) heroku/cedar:14 bash -c 'cp -r /buildpack /buildpack_test; cd /buildpack_test/; test/run-deps; test/run-features; test/run-versions;' @echo "" test-heroku-16: @echo "Running tests in docker (heroku-16)..." - @docker run -v $(shell pwd):/buildpack:ro --rm -it -e "STACK=heroku-16" heroku/heroku:16-build bash -c 'cp -r /buildpack /buildpack_test; cd /buildpack_test/; test/run-deps; test/run-features; test/run-versions;' + @docker run -v $(shell pwd):/buildpack:ro --rm -it -e "STACK=heroku-16" -e TESTS=$(TESTS) heroku/heroku:16-build bash -c 'cp -r /buildpack /buildpack_test; cd /buildpack_test/; test/run-deps; test/run-features; test/run-versions;' @echo "" test-heroku-18: @echo "Running tests in docker (heroku-18)..." - @docker run -v $(shell pwd):/buildpack:ro --rm -it -e "STACK=heroku-18" heroku/heroku:18-build bash -c 'cp -r /buildpack /buildpack_test; cd /buildpack_test/; test/run-deps; test/run-features; test/run-versions;' + @docker run -v $(shell pwd):/buildpack:ro --rm -it -e "STACK=heroku-18" -e TESTS=$(TESTS) heroku/heroku:18-build bash -c 'cp -r /buildpack /buildpack_test; cd /buildpack_test/; test/run-deps; test/run-features; test/run-versions;' @echo "" buildenv-heroku-16: diff --git a/README.md b/README.md index e3ea62a25..4a6fdb8d1 100644 --- a/README.md +++ b/README.md @@ -83,6 +83,12 @@ make test-heroku-18 make test-heroku-16 ``` +You can also specify which tests to run: + +``` +make test TESTS="testPython3_7 testGitEgg" +``` + The tests are run via the vendored [shunit2](https://github.com/kward/shunit2) test framework. diff --git a/test/utils b/test/utils index ff22b7400..e2822c311 100644 --- a/test/utils +++ b/test/utils @@ -264,3 +264,22 @@ release() { assertFile() { assertEquals "$1" "$(cat ${compile_dir}/$2)" } + +# If TESTS is present in the environment, only run the specified tests. +if [ -n "$TESTS" ]; then + suite() { + for shunit_func_ in ${TESTS}; do + if declare -F ${shunit_func_} > /dev/null; then + suite_addTest ${shunit_func_} + fi + done + unset shunit_func_ + + if [ -z "$__shunit_suite" ]; then + testNoop() { + echo "Skipping tests because they do not match TESTS." + } + suite_addTest testNoop + fi + } +fi