From 7bb8f6710c94260f05f6d88910864e2b25484e6c Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Sun, 14 Oct 2012 09:43:38 +0200 Subject: o Setting a default PATH for postinstall. --- .app/lib/app-app | 19 ++++++++++++----- .gitignore | 2 ++ test/app-install.bats | 27 ++++++++++++++++++++++--- test/data/app-a.zip | Bin 715 -> 0 bytes test/data/install-test-env/root/keep | 0 test/data/install-test-env/scripts/postinstall | 3 +++ test/utils.bash | 11 ++++++---- 7 files changed, 50 insertions(+), 12 deletions(-) delete mode 100644 test/data/app-a.zip create mode 100644 test/data/install-test-env/root/keep create mode 100644 test/data/install-test-env/scripts/postinstall diff --git a/.app/lib/app-app b/.app/lib/app-app index ae77298..c9da2d7 100644 --- a/.app/lib/app-app +++ b/.app/lib/app-app @@ -191,6 +191,12 @@ method_install() { echo "Unpacking..." unzip -q -d $name/$instance/versions/$resolved_version $zip_file + if [ ! -d $BASEDIR/$name/$instance/versions/$resolved_version/root ] + then + echo "Invalid zip file, did not contain a ./root directory." >&2 + exit 1 + fi + ( cd $name/$instance/versions/$resolved_version if [ -d scripts ] @@ -203,7 +209,7 @@ method_install() { echo "Running postinstall..." set +e env -i \ - PATH=$PATH \ + PATH=/bin:/usr/bin \ scripts/postinstall set -e ret=`echo $?` @@ -220,10 +226,13 @@ method_install() { rm -f $BASEDIR/$name/$instance/current ln -s versions/$resolved_version/root $BASEDIR/$name/$instance/current - ( - cd $name/$instance/current - find bin -type f | xargs chmod +x - ) + if [ -d $name/$instance/current/bin ] + then + ( + cd $name/$instance/current + find bin -type f | xargs chmod +x + ) + fi if [ -r $BASEDIR/.app/var/list ] then diff --git a/.gitignore b/.gitignore index e80433c..b11d79c 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ downloads target .app/var /*/.gitignore + +/test/data/*.zip diff --git a/test/app-install.bats b/test/app-install.bats index 8f164bc..08c4a06 100755 --- a/test/app-install.bats +++ b/test/app-install.bats @@ -3,15 +3,15 @@ load utils -@test "./app app install" { - zip_app_a +@test "./app app install app-a" { + mkzip "app-a" app app install \ -r file \ -u $BATS_TEST_DIRNAME/data/app-a.zip \ -n app-a -i prod echo_lines - [ $status -eq $exit_usage ] + [ $status -eq 0 ] [ "$output" = "Creating instance 'prod' for 'app-a' Unpacking... Running postinstall... @@ -20,3 +20,24 @@ Postinstall completed successfully Changing current symlink" ] [ ${#lines[*]} == 6 ] } + +@test "./app app install install-test-env" { + mkzip "install-test-env" + app app install \ + -r file \ + -u $BATS_TEST_DIRNAME/data/install-test-env.zip \ + -n install-test-env -i prod -v 1.0 + + echo_lines + [ $status -eq 0 ] + [ "$output" = "Creating instance 'prod' for 'install-test-env' +Unpacking... +Running postinstall... +PATH=/bin:/usr/bin +PWD=$WORK/install-test-env/prod/versions/1.0 +SHLVL=1 +_=/usr/bin/env +Postinstall completed successfully +Changing current symlink" ] + [ ${#lines[*]} == 9 ] +} diff --git a/test/data/app-a.zip b/test/data/app-a.zip deleted file mode 100644 index 7562ab6..0000000 Binary files a/test/data/app-a.zip and /dev/null differ diff --git a/test/data/install-test-env/root/keep b/test/data/install-test-env/root/keep new file mode 100644 index 0000000..e69de29 diff --git a/test/data/install-test-env/scripts/postinstall b/test/data/install-test-env/scripts/postinstall new file mode 100644 index 0000000..ad40c95 --- /dev/null +++ b/test/data/install-test-env/scripts/postinstall @@ -0,0 +1,3 @@ +#!/bin/bash + +env diff --git a/test/utils.bash b/test/utils.bash index eaa2580..418b962 100644 --- a/test/utils.bash +++ b/test/utils.bash @@ -8,6 +8,7 @@ exit_usage_wrong=0 echo_lines() { for line in "${lines[@]}"; do echo $line; done + echo status=$status } APPSH=$(pwd)/app @@ -17,13 +18,15 @@ setup() { mkdir $BATS_TMPDIR/app.sh cd $BATS_TMPDIR/app.sh ln -s $APPSH + WORK=$(cd -P $BATS_TMPDIR/app.sh; pwd) + echo WORK=$WORK } -zip_app_a() { +mkzip() { ( - cd $BATS_TEST_DIRNAME/data/app-a - rm -f ../app-a.zip - zip -qr ../app-a.zip * + cd $BATS_TEST_DIRNAME/data/$1 + rm -f ../$1.zip + zip -qr ../$1.zip * ) } -- cgit v1.2.3