From ba7820b18c0ee8631505f7a2a764f7222a732d44 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Fri, 1 Nov 2013 16:24:26 +0100 Subject: bin/app-upgrade: Removing unreachable code. Fixing it so it compares against the currently installed version instead of the last resolved version which makes it possible to retry installation of the same version. libexec/app-install-file: Allowing installation of the same file twice. Checks if the file has been unpacked earlier or not. Removes the unpacked version on failure. --- test/app-init.bats | 14 ++++++++------ test/app-upgrade.bats | 30 ++++++++++++++++++++++++++++++ test/data/app-a/hooks/post-install | 8 +++++++- test/data/app-a/hooks/pre-install | 11 +++++++++++ 4 files changed, 56 insertions(+), 7 deletions(-) create mode 100755 test/data/app-a/hooks/pre-install (limited to 'test') diff --git a/test/app-init.bats b/test/app-init.bats index 2b5d724..484fe13 100755 --- a/test/app-init.bats +++ b/test/app-init.bats @@ -31,9 +31,10 @@ load utils match '${lines[2]}' "Downloading org.example:app-a:1.0-*" eq '${lines[3]}' "Unpacking..." match '${lines[4]}' "Importing config from versions/1.0-*" - match '${lines[5]}' "Creating current symlink for version 1.0-*" - eq '${lines[6]}' "Post install" - eq '${#lines[*]}' 7 + eq '${lines[5]}' "pre-install" + match '${lines[6]}' "Creating current symlink for version 1.0-*" + eq '${lines[7]}' "post-install" + eq '${#lines[*]}' 8 is_directory "my-app/.app" # Created by post-install @@ -50,9 +51,10 @@ load utils match '${lines[1]}' "Downloading org.example:app-a:1.0-*" eq '${lines[2]}' "Unpacking..." match '${lines[3]}' "Importing config from versions/1.0-*" - match '${lines[4]}' "Creating current symlink for version 1.0-*" - eq '${lines[5]}' "Post install" - eq '${#lines[*]}' 6 + eq '${lines[4]}' "pre-install" + match '${lines[5]}' "Creating current symlink for version 1.0-*" + eq '${lines[6]}' "post-install" + eq '${#lines[*]}' 7 is_directory "my-app/.app" # Created by post-install diff --git a/test/app-upgrade.bats b/test/app-upgrade.bats index d27c6e7..9a282e3 100755 --- a/test/app-upgrade.bats +++ b/test/app-upgrade.bats @@ -38,3 +38,33 @@ load utils describe new_resolved_version = $new_resolved_version neq $new_resolved_version $resolved_version } + +@test "app-upgrade - when pre-install fails the first run" { + mkzip app-a + file=$APPSH_HOME/test/data/app-a.zip + touch -t 01010101 $file + + app init -d my-app file $file + + cd my-app + + # A new version is available, but make sure pre-install fails. + touch -t 02020202 $file + touch fail-pre-install + check_status=no + app upgrade + eq '${status}' 1 + + # Try to reinstall the same file + rm fail-pre-install + app upgrade + eq '${lines[0]}' "Resolving version " + eq '${lines[1]}' "Resolved version to 1359766920" + eq '${lines[2]}' "Version 1359766920 is already unpacked" + eq '${lines[3]}' "Importing config from versions/1359766920/app.config" + eq '${lines[4]}' "pre-install" + eq '${lines[5]}' "Changing current symlink from 1356998460 to 1359766920" + eq '${lines[6]}' "post-install" + + eq '${#lines[*]}' 7 +} diff --git a/test/data/app-a/hooks/post-install b/test/data/app-a/hooks/post-install index 1dfb7be..0717f2a 100755 --- a/test/data/app-a/hooks/post-install +++ b/test/data/app-a/hooks/post-install @@ -2,7 +2,13 @@ set -u -echo "Post install" +echo "post-install" + +if [[ -e $APP_HOME/fail-post-install ]] +then + echo "Simulating failure." + exit 1 +fi NAME=`basename $APP_HOME` diff --git a/test/data/app-a/hooks/pre-install b/test/data/app-a/hooks/pre-install new file mode 100755 index 0000000..4b95ac4 --- /dev/null +++ b/test/data/app-a/hooks/pre-install @@ -0,0 +1,11 @@ +#!/bin/bash -e + +set -u + +echo "pre-install" + +if [[ -e $APP_HOME/fail-pre-install ]] +then + echo "Simulating failure." + exit 1 +fi -- cgit v1.2.3