setup() { load '/usr/lib/bats/bats-support/load' load '/usr/lib/bats/bats-assert/load' # get test binaries on $PATH for testing DIR="$( cd "$( dirname "$BATS_TEST_FILENAME" )" >/dev/null 2>&1 && pwd )" ROOT="$DIR/../.." source "$DIR/helpers.sh" _build_abra } @test "build test abra" { run $ROOT/abra -h assert_output --partial 'The Co-op Cloud command-line utility belt' } @test "create new recipe" { run $ROOT/abra recipe new foobar assert_output --partial 'Your new foobar recipe has been created' mkdir -p "$HOME/.abra/servers/example.com" if ! grep -R -q "example.com" "$HOME/.docker"; then docker context create --docker host=ssh://foo@example.com:222 example.com fi run $ROOT/abra app new foobar \ --no-input \ --server example.com \ --domain foobar.example.com assert_output --partial 'A new foobar app has been created!' # TODO: abra app deploy foobar.example.com # we need an actual server for this to ensure things work maybe we can get # a donated server from the comrades for this? rm -r "$HOME/.abra/recipes/foobar" rm -r "$HOME/.abra/servers/example.com" } @test "upgrade and sync a recipe" { run $ROOT/abra recipe fetch gitea cd "$HOME/.abra/recipes/gitea" && git checkout "2.3.1+1.20.1-rootless" run $ROOT/abra recipe upgrade gitea --offline --machine assert_output --partial '1.20.2-rootless' # TODO: when passing --patch, there is no output so we can't test against # anything... we should add info logging when automation flags are passed # so we can assert run $ROOT/abra recipe upgrade gitea --offline --patch run $ROOT/abra recipe sync gitea --offline --patch assert_output --partial \ 'synced label coop-cloud.${STACK_NAME}.version=2.3.2+1.20.2-rootless to service app' # TODO: assert git output cd "$HOME/.abra/recipes/gitea" && git checkout . && git checkout master }