initial commit
[m6w6/btr] / lib / btr / tmp.sh
1 #!/bin/sh
2
3
4 function checkout {
5 mkdir -p "$BTRDIR" && cd "$BTRDIR" || error
6
7 if test -d "$CLEAN_DIR"
8 then
9 echo Pulling updates...
10 cd "$CLEAN_DIR" && git pull || error
11 cd ..
12 else
13 git clone "$SOURCE_URL" "$CLEAN_DIR" || error
14 fi
15
16 if test -d "$BRANCH_DIR"
17 then
18 cd "$BRANCH_DIR" && git pull || error
19 cd ..
20 else
21 git-new-workdir "$CLEAN_DIR" "$BRANCH_DIR" "$BRANCH" || error
22 fi
23 echo
24 }
25
26 function report {
27 echo "Reporting..."
28 cd "$BTRDIR" || error
29 echo "Running '$REPORT_COMMAND'"
30 local REPORT_ERROR=$(eval "$REPORT_COMMAND" 2>&1) || error $REPORT_ERROR
31 exit
32 }
33
34 function build {
35 echo "Building..."
36 cd "$BTRDIR" || error
37 mkdir -p "$BUILD_DIR" || error
38
39 echo "Running '$BUILD_COMMAND'"
40 if ! eval "$BUILD_COMMAND" > "$BUILD_REPORT" 2>&1
41 then
42 SUCCESS=FAILURE
43 report <<EOF
44
45 btr report for $BUILD
46
47 FAILURE: build
48 COMMAND: $BUILD_COMMAND
49
50 $(cat "$BTRDIR/$BUILD_REPORT")
51
52 --
53 btr
54
55 EOF
56 fi
57 echo
58 }
59
60 function diffsum {
61 cd "$BTRDIR" || error
62 local LAST_TEST_REPORT=$(ls ".btr+tests-$BUILD-"* | tail -2 | head -1)
63 if test "$TEST_REPORT" != "$LAST_TEST_REPORT"
64 then
65 local LAST_TESTS_PASSED=$(awk '/^Tests passed/ {print $4}' "$LAST_TEST_REPORT")
66 local LAST_TESTS_FAILED=$(awk '/^Tests failed/ {print $4}' "$LAST_TEST_REPORT")
67 local TESTS_PASSED=$(awk '/^Tests passed/ {print $4}' "$TEST_REPORT")
68 local TESTS_FAILED=$(awk '/^Tests failed/ {print $4}' "$TEST_REPORT")
69
70 local DIFF_TEST_REPORT=$(diff -u $LAST_TEST_REPORT $TEST_REPORT)
71 DIFFSUM="+$(grep -c "^+" <<<"$DIFF_TEST_REPORT")/-$(grep -c "^-" <<<"$DIFF_TEST_REPORT")"
72 fi
73 }
74
75 function tests {
76 echo "Testing..."
77 cd "$BTRDIR" || error
78
79 echo "Running '$TEST_COMMAND'"
80 if ! eval "$TEST_COMMAND" > "$TEST_REPORT" 2>&1
81 then
82 SUCCESS=FAILURE
83 else
84 SUCCESS=SUCCESS
85 diffsum
86 fi
87 echo
88 }
89