File: regression_reporting.sh

package info (click to toggle)
davical 1.1.12-2.3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 10,020 kB
  • sloc: php: 19,361; sql: 4,514; perl: 3,524; sh: 554; javascript: 162; makefile: 85
file content (75 lines) | stat: -rw-r--r-- 3,270 bytes parent folder | download | duplicates (5)
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
69
70
71
72
73
74
75
setup_report() {
    if [ ! -z "$IS_CI" ]; then
        cat > "$REPORTFILE" <<EOHEADER
<?xml version="1.0" encoding="UTF-8"?>
<testsuites>
</testsuites>
EOHEADER
    fi
}

report_test_success() {
    if [ ! -z "$IS_CI" ]; then
        SUITEPATH="/testsuites/testsuite[@name=\"$SUITE\"]"
        xmlstarlet ed -L \
                   -s "$SUITEPATH" -t elem -n testcase \
                   -i "$SUITEPATH/testcase[not(@name)]" -t attr -n wip -v "1" \
                   -i "$SUITEPATH/testcase[@wip]" -t attr -n name -v "$TEST" \
                   -i "$SUITEPATH/testcase[@wip]" -t attr -n classname -v "$TEST" \
                   -i "$SUITEPATH/testcase[@wip]" -t attr -n timestamp -v "0" \
                   -d "$SUITEPATH/testcase[@wip]/@wip" \
                   "$REPORTFILE"
    fi
}

report_test_failure() {
    if [ ! -z "$IS_CI" ]; then
        SUITEPATH="/testsuites/testsuite[@name=\"$SUITE\"]"
        xmlstarlet ed -L \
                   -s "$SUITEPATH" -t elem -n testcase \
                   -i "$SUITEPATH/testcase[not(@name)]" -t attr -n wip -v "1" \
                   -i "$SUITEPATH/testcase[@wip]" -t attr -n name -v "$SUITE: $TEST" \
                   -i "$SUITEPATH/testcase[@wip]" -t attr -n classname -v "$TEST" \
                   -i "$SUITEPATH/testcase[@wip]" -t attr -n timestamp -v "0" \
                   -s "$SUITEPATH/testcase[@wip]" -t elem -n failure -v "xxxPERL_REPLACE_THIS_WITH_THE_ESCAPED_DIFFxxx" \
                   -i "$SUITEPATH/testcase[@wip]/failure" -t attr -n message -v "test failure" \
                   -d "$SUITEPATH/testcase[@wip]/@wip" \
                   "$REPORTFILE"

        # I encountered a bug in xmlstarlet where small sections of large files are not properly escaped if inserted directly :/
        perl -pi -e 'BEGIN {$diff = `xmlstarlet esc < "'"${REGRESSION}/diffs/${TEST}"'"`} s/xxxPERL_REPLACE_THIS_WITH_THE_ESCAPED_DIFFxxx/$diff/g' "$REPORTFILE"
    fi
}

report_suite_setup() {
    if [ ! -z "$IS_CI" ]; then
        xmlstarlet ed -L \
                   -s '/testsuites' -t elem -n testsuite \
                   -i '/testsuites/testsuite[not(@name)]'      -t attr -n name -v "$SUITE" \
                   -i '/testsuites/testsuite[not(@time)]'      -t attr -n time -v "0" \
                   -i '/testsuites/testsuite[not(@errors)]'    -t attr -n errors -v "0" \
                   -i '/testsuites/testsuite[not(@timestamp)]' -t attr -n timestamp -v "$(date -u +'%FT%TZ')" \
                   "$REPORTFILE"
    fi
}

report_suite_counts() {
    if [ ! -z "$IS_CI" ]; then
        xmlstarlet ed -L \
                   -i "/testsuites/testsuite[@name=\"$SUITE\"]" -t attr -n tests -v "$(xmlstarlet sel -t -v "count(/testsuites/testsuite[@name=\"$SUITE\"]/testcase)" "$REPORTFILE")" \
                   -i "/testsuites/testsuite[@name=\"$SUITE\"]" -t attr -n failures -v "$(xmlstarlet sel -t -v "count(/testsuites/testsuite[@name=\"$SUITE\"]/testcase/failure)" "$REPORTFILE")" \
                   "$REPORTFILE"
    fi
}

exit_based_on_reported_failures() {
    if [ ! -z "$IS_CI" ]; then
        FAILCOUNT="$(xmlstarlet sel -t -v "count(//failure)" "$REPORTFILE")"
        if [ "$FAILCOUNT" -gt 0 ]; then
            exit 2
        else
            exit 0
        fi
    fi
    exit 0
}