|
2 | 2 |
|
3 | 3 | temp_dir_base=$(mktemp -d) |
4 | 4 |
|
| 5 | +echo "Cloning vader.vim to temporary directory" |
| 6 | +VADER_TEMP_DIR=$(mktemp -d) |
| 7 | +trap "rm -rf '$VADER_TEMP_DIR'" EXIT |
| 8 | + |
| 9 | +git clone --depth 1 https://github.com/junegunn/vader.vim.git "$VADER_TEMP_DIR/vader.vim" > /dev/null 2>&1 |
| 10 | +VADER_PATH="$VADER_TEMP_DIR/vader.vim" |
| 11 | + |
5 | 12 | run_test() { |
6 | | - slug=$(basename $1) |
| 13 | + slug=${1%/} |
| 14 | + slug=${slug##*/} |
7 | 15 | temp_dir=${temp_dir_base}/${slug} |
8 | 16 | mkdir -p ${temp_dir} |
9 | 17 |
|
10 | 18 | cp -r "$1/." $temp_dir |
11 | | - slug_snakecase=$(echo "$slug" | tr '-' '_') |
12 | | - cp $temp_dir/.meta/example.vim $temp_dir/$slug_snakecase.vim |
13 | | - |
14 | | - (cd /opt/test-runner && bin/run.sh $slug $temp_dir $temp_dir) || exit 1 |
15 | | - |
16 | | - test_status="$(jq -r '.status' $temp_dir/results.json)" |
| 19 | + slug_file=${slug//-/_} |
| 20 | + |
| 21 | + if [ -f "$temp_dir/.meta/exemplar.vim" ]; then |
| 22 | + cp $temp_dir/.meta/exemplar.vim $temp_dir/$slug_file.vim |
| 23 | + elif [ -f "$temp_dir/.meta/example.vim" ]; then |
| 24 | + cp $temp_dir/.meta/example.vim $temp_dir/$slug_file.vim |
| 25 | + else |
| 26 | + echo "ERROR: Missing example/exemplar solution for $slug" |
| 27 | + exit 1 |
| 28 | + fi |
| 29 | + |
| 30 | + echo -n "Running tests for $slug: " |
| 31 | + |
| 32 | + start_time=$(date +%s.%N) |
| 33 | + output=$(vim -es -Nu <(cat <<VIMRC |
| 34 | +set nocompatible |
| 35 | +set backspace=indent,eol,start |
| 36 | +set runtimepath+=$VADER_PATH |
| 37 | +set runtimepath+=$temp_dir |
| 38 | +filetype off |
| 39 | +filetype plugin indent on |
| 40 | +syntax enable |
| 41 | +VIMRC |
| 42 | +) -c "source $temp_dir/$slug_file.vim" -c "Vader! $temp_dir/$slug_file.vader" 2>&1) |
17 | 43 |
|
18 | | - if [ "$test_status" != "pass" ]; then |
19 | | - echo "Tests for $slug have failed:" |
20 | | - cat $temp_dir/results.json |
21 | | - exit 1 |
| 44 | + exit_code=$? |
| 45 | + end_time=$(date +%s.%N) |
| 46 | + duration=$(echo "$end_time - $start_time" | bc) |
| 47 | + |
| 48 | + if [ $exit_code -ne 0 ]; then |
| 49 | + echo "FAILED!" |
| 50 | + echo "$output" | sed -n '/^Starting Vader:/,$p' |
| 51 | + exit 1 |
| 52 | + else |
| 53 | + printf "ok (%.2fs)\n" "$duration" |
22 | 54 | fi |
23 | 55 | } |
24 | 56 |
|
|
0 commit comments