summaryrefslogtreecommitdiff
path: root/regression.bash
blob: da8bf10bd3afdb63fe9c959f9eb0ee198f5b8911 (plain)
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
#!/bin/bash

unset board
unset manual
while [[ "$1" != "" ]]
do
  case "$1" in
  "--board")
    board="$2"
    shift
    shift
    ;;
  "--manual")
    manual="true"
    shift
    ;;
  esac
done

if [[ "$board" == "" ]]
then
  echo "Specify a --board to test" >&2
  exit 1
fi

if [[ "$manual" == "true" ]]
then
  echo "You're running in manual test mode.  Please connect a $board to continue..."
  read -p "Press ENTER to continue"
fi

set -e

find software -mindepth 1 -maxdepth 2 -type d | cut -d/ -f2 | while read program
do
  # Allow examples to specify the boards on which they won't run.
  if test -f software/$program/.unsupported-boards
  then
    if grep -q $board software/$program/.unsupported-boards
    then
      continue
    fi
  fi

  # Build the example.
  make BOARD=$board PROGRAM=$program software

  # We require user interaction in order to verify the tests succeed.  If the
  # user hasn't specified the manual flag then don't bother running the tests.
  if [[ "$manual" == "true" ]]
  then
    echo "We're about to run $program on $board, waiting 10 seconds"
    sleep 1s

    echo "flashing $program"
    make BOARD=$board PROGRAM=$program upload

    echo "$program has been flashed to your $board, please test it.  GDB will open in 2 seconds"
    urxvt -hold -e make BOARD=$board PROGRAM=$program run_openocd &
    sleep 2s
    urxvt -hold -e make BOARD=$board PROGRAM=$program run_gdb

    echo "Close the running OpenOCD"
    wait
  fi
done

if [[ "$manual" != "true" ]]
then
  echo "You haven't actually verified the tests run, please don't release!" >&2
fi