Returncode fix (#1)
Some trial and error to make sure it works reliably.
* remove test_retcode
* debug local bash settings
* set errexit explicitly in subshell
* set errexit also in the subshell in parenthesis
* debugging
* more debugging (exit code of sh)
* is the venv subshell returning exit 1?
* what if we remove the additional subshell?
* then we need to unquote the command
* if statement needs test command quoted
* simple if statement
* echo command needs to be removed of course
* remove debug statements
* check if setting errexit here is needed
* these settings can be removed
At this point ("before") the shell already has errexit set.
* setting errexit in the sh invocation is needed
This is not inherited, so it's good to specify it.
* just double checking that the subshell doesn't exit
* use solution from fvue.nl
* Solution doesn't seem to work, even popd is run
So now I'm putting back the if statement, it seems
to be the simplest and most effective solution.
* add a comment
* prove that errexit is necessary
* errexit is indeed needed for chaining
This commit is contained in:
@@ -57,8 +57,6 @@ def build(project_dir, output_dir, test_command, test_requires, test_extras, bef
|
||||
mkdir /output
|
||||
cd /project
|
||||
|
||||
test_retcode=0
|
||||
|
||||
{environment_exports}
|
||||
|
||||
for PYBIN in {pybin_paths}; do
|
||||
@@ -111,10 +109,13 @@ def build(project_dir, output_dir, test_command, test_requires, test_extras, bef
|
||||
|
||||
# Run the tests from a different directory
|
||||
pushd $HOME
|
||||
sh -c {test_command}
|
||||
sh -o errexit -c {test_command}
|
||||
popd
|
||||
)
|
||||
test_retcode=$(( $test_retcode || $? ))
|
||||
# exit if tests failed
|
||||
if [ $? -ne 0 ]; then
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
# clean up
|
||||
rm -rf "$venv_dir"
|
||||
@@ -124,8 +125,6 @@ def build(project_dir, output_dir, test_command, test_requires, test_extras, bef
|
||||
mv "$delocated_wheel" /output
|
||||
chown {uid}:{gid} "/output/$(basename "$delocated_wheel")"
|
||||
done
|
||||
|
||||
exit $test_retcode
|
||||
'''.format(
|
||||
pybin_paths=' '.join(c.path+'/bin' for c in platform_configs),
|
||||
test_requires=' '.join(test_requires),
|
||||
|
||||
Reference in New Issue
Block a user