load common load_fixtures status=;output=; #; populated by bats run() T_SECTION="test" T_ATTRIB="attribute" T_KEY="$T_SECTION.$T_ATTRIB" T_VALUE="testvalue" T_EXPECTED="[$T_SECTION]\n\t$T_ATTRIB = $T_VALUE" setup() { destroy_tmp } @test "Command 'config' (no parameters)" { echo " When 'config' command is provided alone, Produce instructions about supported configuration options Exit with 1 " #; run config run "${T_YADM_Y[@]}" config #; validate status and output [ $status -eq 0 ] [[ "$output" =~ Please\ read\ the\ CONFIGURATION\ section ]] } @test "Command 'config' (read missing)" { echo " When 'config' command is provided, and an attribute is provided and the attribute isn't configured Report an empty value Exit with 0 " #; run config run "${T_YADM_Y[@]}" config $T_KEY #; validate status and output [ $status -eq 0 ] [ "$output" = "" ] } @test "Command 'config' (write)" { echo " When 'config' command is provided, and an attribute is provided and a value is provided Report no output Update configuration file Exit with 0 " #; run config run "${T_YADM_Y[@]}" config "$T_KEY" "$T_VALUE" #; validate status and output [ $status -eq 0 ] [ "$output" = "" ] #; validate configuration local config config=$(cat "$T_YADM_CONFIG") local expected expected=$(echo -e "$T_EXPECTED") if [ "$config" != "$expected" ]; then echo "ERROR: Config does not match expected" echo "$config" return 1 fi } @test "Command 'config' (read)" { echo " When 'config' command is provided, and an attribute is provided and the attribute is configured Report the requested value Exit with 0 " #; manually load a value into the configuration make_parents "$T_YADM_CONFIG" echo -e "$T_EXPECTED" > "$T_YADM_CONFIG" #; run config run "${T_YADM_Y[@]}" config "$T_KEY" #; validate status and output [ $status -eq 0 ] if [ "$output" != "$T_VALUE" ]; then echo "ERROR: Incorrect value returned. Expected '$T_VALUE', got '$output'" return 1 fi } @test "Command 'config' (update)" { echo " When 'config' command is provided, and an attribute is provided and the attribute is already configured Report no output Update configuration file Exit with 0 " #; manually load a value into the configuration make_parents "$T_YADM_CONFIG" echo -e "${T_EXPECTED}_with_extra_data" > "$T_YADM_CONFIG" #; run config run "${T_YADM_Y[@]}" config "$T_KEY" "$T_VALUE" #; validate status and output [ $status -eq 0 ] [ "$output" = "" ] #; validate configuration local config config=$(cat "$T_YADM_CONFIG") local expected expected=$(echo -e "$T_EXPECTED") if [ "$config" != "$expected" ]; then echo "ERROR: Config does not match expected" echo "$config" return 1 fi } @test "Command 'config' (local read)" { echo " When 'config' command is provided, and an attribute is provided and the attribute is configured and the attribute is local.* Fetch the value from the repo config Report the requested value Exit with 0 " #; write local attributes build_repo for loption in class os host user; do GIT_DIR="$T_DIR_REPO" git config "local.$loption" "custom_$loption" done #; run config for loption in class os host user; do run "${T_YADM_Y[@]}" config "local.$loption" #; validate status and output [ $status -eq 0 ] if [ "$output" != "custom_$loption" ]; then echo "ERROR: Incorrect value returned. Expected 'custom_$loption', got '$output'" return 1 fi done } @test "Command 'config' (local write)" { echo " When 'config' command is provided, and an attribute is provided and a value is provided and the attribute is local.* Report no output Write the value to the repo config Exit with 0 " build_repo local expected local linecount expected="[local]\n" linecount=1 for loption in class os host user; do #; update expected expected="$expected\t$loption = custom_$loption\n" ((linecount+=1)) #; write local attributes run "${T_YADM_Y[@]}" config "local.$loption" "custom_$loption" #; validate status and output [ $status -eq 0 ] [ "$output" = "" ] done #; validate data local config config=$(tail "-$linecount" "$T_DIR_REPO/config") expected=$(echo -ne "$expected") if [ "$config" != "$expected" ]; then echo "ERROR: Config does not match expected" echo -e "$config" echo -e "EXPECTED:\n$expected" return 1 fi }