File: run_tests.sh

package info (click to toggle)
sail-ocaml 0.19.1%2Bdfsg5-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 18,008 kB
  • sloc: ml: 75,941; ansic: 8,848; python: 1,342; exp: 560; sh: 474; makefile: 218; cpp: 36
file content (68 lines) | stat: -rwxr-xr-x 2,190 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/usr/bin/env bash
set -e

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$DIR"
SAILDIR="$DIR/../.."

rm -f "$DIR/tests.xml"

# shellcheck source=../test_helpers.sh
source "$SAILDIR/test/test_helpers.sh"


printf "<testsuites>\n" >> "$DIR/tests.xml"

find . -name '*.sail' -print0 | while IFS= read -r -d '' line; do 
    echo "$line"
done

for testfile in *.sail; do
    temp_dir=$(mktemp -d)
    trap 'rm -rf $temp_dir' 0 2 3 15
    
    if (cd "$temp_dir" && "$SAILDIR/sail" -o "out" -latex "$DIR/$testfile"); then
        # compare with expected files
        exp_prefix=${testfile//.sail/}
        errmsg="Missing .exp files for $testfile?"
        for expected in "${exp_prefix}"*.exp; do
            # remove prefix and suffix
            exp_file_name=${expected//${exp_prefix}./}
            generated_file="$temp_dir/out/${exp_file_name//.exp/}"
            if [ ! -f "$generated_file" ]; then
                errmsg="missing expected output $generated_file"
                break;
            elif ! diff -q "$generated_file" "$expected"; then
                diff -u "$generated_file" "$expected" || true
                errmsg="output is different"
                break
            else
                errmsg=""
            fi
        done
        if [ -z "$errmsg" ]; then
            green "Generating LaTeX for $testfile" "ok"
        else
            yellow "Generating LaTeX for $testfile" "$errmsg"
        fi;
        # Check that the generated latex builds:
        if command -v latexmk > /dev/null; then
            cp -f "$DIR/main.tex" "$temp_dir"
            if latexmk -pdf -cd -file-line-error -interaction=batchmode "$temp_dir/main.tex" > /dev/null 2>&1; then
                green "Building LaTeX for $testfile" "ok"
            else
                tail -n 50 "$temp_dir/main.log"
                yellow "Building LaTeX for $testfile" "failed to build"
            fi
        else
            red "Building LaTeX for $testfile" "latexmk not installed"
        fi
    else
        red "failed to generate latex for $testfile" "fail"
    fi
    rm -rf "$temp_dir"
done

finish_suite "LaTeX testing"

printf "</testsuites>\n" >> "$DIR/tests.xml"