| 
									
										
										
										
											2017-12-01 17:50:19 +00:00
										 |  |  | #!/bin/bash -eu | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | image=w0rp/ale | 
					
						
							|  |  |  | docker_flags=(--rm -v "$PWD:/testplugin" -v "$PWD/test:/home" -w /testplugin "$image") | 
					
						
							|  |  |  | red='\033[0;31m' | 
					
						
							|  |  |  | green='\033[0;32m' | 
					
						
							|  |  |  | nc='\033[0m' | 
					
						
							|  |  |  | verbose=0 | 
					
						
							|  |  |  | quiet=0 | 
					
						
							| 
									
										
										
										
											2017-12-01 18:06:09 +00:00
										 |  |  | exit_code=0 | 
					
						
							| 
									
										
										
										
											2017-12-01 17:50:19 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | while [ $# -ne 0 ]; do | 
					
						
							|  |  |  |     case $1 in | 
					
						
							|  |  |  |     -v) | 
					
						
							|  |  |  |         verbose=1 | 
					
						
							|  |  |  |         shift | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  |     -q) | 
					
						
							|  |  |  |         quiet=1 | 
					
						
							|  |  |  |         shift | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  |     --) | 
					
						
							|  |  |  |         shift | 
					
						
							|  |  |  |         break | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  |     -?*) | 
					
						
							|  |  |  |         echo "Invalid argument: $1" 1>&2 | 
					
						
							|  |  |  |         exit 1 | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  |     *) | 
					
						
							|  |  |  |         break | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  |     esac | 
					
						
							|  |  |  | done | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | vim="$1" | 
					
						
							|  |  |  | tests="$2" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function filter-vader-output() { | 
					
						
							|  |  |  |     # When verbose mode is off, suppress output until Vader starts. | 
					
						
							|  |  |  |     local start_output="$verbose" | 
					
						
							|  |  |  |     local filtered_data='' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     while read -r; do | 
					
						
							|  |  |  |         if ((!start_output)); then | 
					
						
							|  |  |  |             if [[ "$REPLY" = *'Starting Vader:'* ]]; then | 
					
						
							|  |  |  |                 start_output=1 | 
					
						
							|  |  |  |             else | 
					
						
							|  |  |  |                 continue | 
					
						
							|  |  |  |             fi | 
					
						
							|  |  |  |         fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if ((quiet)); then | 
					
						
							|  |  |  |             if [[ "$REPLY" = *'Starting Vader:'* ]]; then | 
					
						
							|  |  |  |                 filtered_data="$REPLY" | 
					
						
							|  |  |  |             elif [[ "$REPLY" = *'Success/Total'* ]]; then | 
					
						
							|  |  |  |                 success="$(echo -n "$REPLY" | grep -o '[0-9]\+/' | head -n1 | cut -d/ -f1)" | 
					
						
							|  |  |  |                 total="$(echo -n "$REPLY" | grep -o '/[0-9]\+' | head -n1 | cut -d/ -f2)" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 if [ "$success" -lt "$total" ]; then | 
					
						
							|  |  |  |                     echo "$filtered_data" | 
					
						
							|  |  |  |                     echo "$REPLY" | 
					
						
							|  |  |  |                 fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 filtered_data='' | 
					
						
							|  |  |  |             else | 
					
						
							|  |  |  |                 filtered_data="$filtered_data"$'\n'"$REPLY" | 
					
						
							|  |  |  |             fi | 
					
						
							|  |  |  |         else | 
					
						
							|  |  |  |             echo "$REPLY" | 
					
						
							|  |  |  |         fi | 
					
						
							|  |  |  |     done | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function color-vader-output() { | 
					
						
							|  |  |  |     while read -r; do | 
					
						
							|  |  |  |         if [[ "$REPLY" = *'[EXECUTE] (X)'* ]]; then | 
					
						
							|  |  |  |             echo -en "$red" | 
					
						
							|  |  |  |         elif [[ "$REPLY" = *'[EXECUTE]'* ]] || [[ "$REPLY" = *'[  GIVEN]'* ]]; then | 
					
						
							|  |  |  |             echo -en "$nc" | 
					
						
							|  |  |  |         fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if [[ "$REPLY" = *'Success/Total'* ]]; then | 
					
						
							|  |  |  |             success="$(echo -n "$REPLY" | grep -o '[0-9]\+/' | head -n1 | cut -d/ -f1)" | 
					
						
							|  |  |  |             total="$(echo -n "$REPLY" | grep -o '/[0-9]\+' | head -n1 | cut -d/ -f2)" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             if [ "$success" -lt "$total" ]; then | 
					
						
							|  |  |  |                 echo -en "$red" | 
					
						
							|  |  |  |             else | 
					
						
							|  |  |  |                 echo -en "$green" | 
					
						
							|  |  |  |             fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             echo "$REPLY" | 
					
						
							|  |  |  |             echo -en "$nc" | 
					
						
							|  |  |  |         else | 
					
						
							|  |  |  |             echo "$REPLY" | 
					
						
							|  |  |  |         fi | 
					
						
							|  |  |  |     done | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     echo -en "$nc" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | echo | 
					
						
							|  |  |  | echo '========================================' | 
					
						
							|  |  |  | echo "Running tests for $vim" | 
					
						
							|  |  |  | echo '========================================' | 
					
						
							|  |  |  | echo | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-07 20:07:45 +00:00
										 |  |  | set -o pipefail | 
					
						
							|  |  |  | docker run -a stderr -e VADER_OUTPUT_FILE=/dev/stderr "${docker_flags[@]}" \ | 
					
						
							|  |  |  |     "/vim-build/bin/$vim" -u test/vimrc \ | 
					
						
							|  |  |  |     "+Vader! $tests" 2>&1 | filter-vader-output | color-vader-output || exit_code=$? | 
					
						
							|  |  |  | set +o pipefail | 
					
						
							| 
									
										
										
										
											2017-12-01 18:06:09 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | exit "$exit_code" |