Unverified Commit e5071867 authored by Jeremy Morrell's avatar Jeremy Morrell Committed by GitHub

Fix CI env vars (#513)

Fixes #414 #504
parent b687474e
#!/usr/bin/env bash #!/usr/bin/env bash
NPM_CONFIG_PRODUCTION=false NODE_ENV=test "$(dirname ${0:-})/compile" "$1" "$2" "$3" BP_DIR=$(cd $(dirname ${0:-}); cd ..; pwd)
source $BP_DIR/lib/environment.sh
export NPM_CONFIG_PRODUCTION=${NPM_CONFIG_PRODUCTION:-false}
export NODE_ENV=${NODE_ENV:-test}
"$BP_DIR/bin/compile" "$1" "$2" "$3"
write_ci_profile "$BP_DIR" "$1"
export PATH="$HOME/.heroku/node/bin:$HOME/.heroku/yarn/bin:$PATH:$HOME/bin:$HOME/node_modules/.bin"
export NODE_HOME="$HOME/.heroku/node"
export NODE_ENV=${NODE_ENV:-test}
...@@ -64,6 +64,13 @@ write_profile() { ...@@ -64,6 +64,13 @@ write_profile() {
cp $bp_dir/profile/* $build_dir/.profile.d/ cp $bp_dir/profile/* $build_dir/.profile.d/
} }
write_ci_profile() {
local bp_dir="$1"
local build_dir="$2"
write_profile "$1" "$2"
cp $bp_dir/ci-profile/* $build_dir/.profile.d/
}
write_export() { write_export() {
local bp_dir="$1" local bp_dir="$1"
local build_dir="$2" local build_dir="$2"
......
A fake README, to keep npm from polluting stderr.
\ No newline at end of file
{
"name": "node-buildpack-test-app",
"version": "0.0.1",
"repository" : {
"type" : "git",
"url" : "http://github.com/example/example.git"
},
"engines": {
"node": "8.x"
},
"scripts" : {
"heroku-prebuild" : "echo heroku-prebuild hook message",
"heroku-postbuild" : "echo heroku-postbuild hook message",
"test": "echo NODE_ENV: $NODE_ENV"
}
}
#!/usr/bin/env bash #!/usr/bin/env bash
source $(pwd)/lib/environment.sh
mktmpdir() { mktmpdir() {
local dir=$(mktemp -t testXXXXX) local dir=$(mktemp -t testXXXXX)
rm -rf $dir rm -rf $dir
...@@ -21,5 +23,31 @@ compile() { ...@@ -21,5 +23,31 @@ compile() {
"$bp_dir/bin/compile" "$build_dir" "$cache_dir" "$bp_dir/bin/compile" "$build_dir" "$cache_dir"
} }
compileTest() {
local fixture=$1
local bp_dir=$(mktmpdir)
local build_dir=$(mktmpdir)
local cache_dir=$(mktmpdir)
local env_dir=$(mktmpdir)
echo "Compiling $fixture"
echo "in $build_dir"
echo "(caching in $cache_dir)"
cp -a $(pwd)/* ${bp_dir}
cp -a ${bp_dir}/test/fixtures/$fixture/. ${build_dir}
"$bp_dir/bin/test-compile" "$build_dir" "$cache_dir"
export HOME=${build_dir}
export_env_dir $env_dir
for f in ${build_dir}/.profile.d/*; do source $f > /dev/null 2> /dev/null ; done
"$bp_dir/bin/test" "$build_dir"
}
fixture=${1:-'stable-node'} fixture=${1:-'stable-node'}
compile "$fixture"
if [[ "$2" == "test" ]]; then
compileTest "$fixture"
else
compile "$fixture"
fi
...@@ -724,6 +724,21 @@ testMultiExport() { ...@@ -724,6 +724,21 @@ testMultiExport() {
assertCapturedSuccess assertCapturedSuccess
} }
testCIEnvVars() {
compileTest "ci-env-test"
assertCaptured "NODE_ENV: test"
assertCapturedSuccess
}
testCIEnvVarsOverride() {
env_dir=$(mktmpdir)
echo "banana" > $env_dir/NODE_ENV
compileTest "ci-env-test" "$(mktmpdir)" $env_dir
assertCaptured "NODE_ENV: banana"
assertCapturedSuccess
}
# Utils # Utils
...@@ -731,6 +746,7 @@ pushd $(dirname 0) >/dev/null ...@@ -731,6 +746,7 @@ pushd $(dirname 0) >/dev/null
popd >/dev/null popd >/dev/null
source $(pwd)/test/utils source $(pwd)/test/utils
source $(pwd)/lib/environment.sh
mktmpdir() { mktmpdir() {
dir=$(mktemp -t testXXXXX) dir=$(mktemp -t testXXXXX)
...@@ -761,6 +777,31 @@ compile() { ...@@ -761,6 +777,31 @@ compile() {
capture ${bp_dir}/bin/compile ${compile_dir} ${2:-$(mktmpdir)} $3 capture ${bp_dir}/bin/compile ${compile_dir} ${2:-$(mktmpdir)} $3
} }
compileTest() {
default_process_types_cleanup
local bp_dir=$(mktmpdir)
local compile_dir=$(mktmpdir)
local cache_dir=${2:-$(mktmpdir)}
local env_dir=$3
cp -a $(pwd)/* ${bp_dir}
cp -a ${bp_dir}/test/fixtures/$1/. ${compile_dir}
capture ${bp_dir}/bin/test-compile ${compile_dir} ${2:-$(mktmpdir)} $3
# On Heroku, $HOME is the /app dir, so we need to set it to
# the compile_dir here
export HOME=${compile_dir}
# bin/test is not ran during build, rather during runtime, which means
# we need to set any environment variables set via the env_dir and run
# all of the .profile.d scripts
export_env_dir $env_dir
for f in ${compile_dir}/.profile.d/*; do source $f > /dev/null 2> /dev/null ; done
capture ${bp_dir}/bin/test ${compile_dir}
}
compileDir() { compileDir() {
default_process_types_cleanup default_process_types_cleanup
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment