#! /usr/bin/env bats # source_script() from lib/source.sh tests. # See: https://bats-core.readthedocs.io/en/latest/index.html setup() { # Bats setup load 'helpers/bats-support/load' load 'helpers/bats-assert/load' DIR="$( cd "$( dirname "$BATS_TEST_FILENAME" )" >/dev/null 2>&1 && pwd )" PATH="$DIR/../src/lib:$PATH" } # ------------------------------ # # Do tests! # # ------------------------------ # @test "Bad script syntax" { . source.sh run source_script $DIR/files/bad_syntax.plan assert_output --partial 'Error: Please check your syntax' } @test "Empty script" { . source.sh run source_script $DIR/files/empty_script.plan assert_output --partial 'Error: sources array is not set' } @test "Empty sources array" { . source.sh run source_script $DIR/files/empty_sources.plan assert_output --partial 'Error: sources array is not set' } @test "Empty targets array" { . source.sh run source_script $DIR/files/empty_targets.plan assert_output --partial 'Error: targets array is not set' } @test "No targets with 'file' URI scheme" { . source.sh run source_script $DIR/files/no_file_target.plan assert_output --partial "Error: 'file' scheme is not set in targets. You must provide one or more targets with 'file' scheme." } @test "Unsuported source scheme" { . source.sh run source_script $DIR/files/unsupported_source_scheme.plan assert_output --partial 'Error: Unsupported URI scheme: mongo' } @test "Unsuported target scheme" { . source.sh run source_script $DIR/files/unsupported_target_scheme.plan assert_output --partial 'Error: Unsupported URI scheme: scp' } @test "Set __main_target" { . source.sh source_script $DIR/files/basic.plan [ "$__main_target" == 'file:/var/backup' ] } @test "Set __main_target from multiple 'file' targets" { . source.sh source_script $DIR/files/multiple_file_targets.plan [ "$__main_target" == 'file:///home/backups' ] }