blob: 80392ea0cabe67c306c24d8b761f8c896ddcf385 [file] [log] [blame]
Brian Silverman26e4e522015-12-17 01:56:40 -05001#!/usr/bin/env bash
2#*----------------------------------------------------------------------------*#
3#* Copyright (c) FIRST 2014. All Rights Reserved. *#
4#* Open Source Software - may be modified and shared by FRC teams. The code *#
5#* must be accompanied by the FIRST BSD license file in the root directory of *#
6#* the project. *#
7#*----------------------------------------------------------------------------*#
8
9# Configurable variables
10source config.sh
11
12# Java variables
13DEFAULT_DESTINATION_JAVA_TEST_FILE=${DEFAULT_TEST_SCP_DIR}/${DEFAULT_JAVA_TEST_NAME}
14
15# C++ Variables
16DEFAULT_DESTINATION_CPP_TEST_FILE=${DEFAULT_TEST_SCP_DIR}/${DEFAULT_CPP_TEST_NAME}
17
18DEFAULT_DESTINATION_RUN_TEST_SCRIPT=${DEFAULT_DESTINATION_DIR}/${DEFAULT_LOCAL_RUN_TEST_SCRIPT}
19
20usage="$(basename "$0") [-h] (java|cpp) [-m] [-A] [arg] [arg]...
21A script designed to run the integration tests.
22This script should only be run on the roborio.
23Where:
24 -h Show this help text.
25 -m The driver station mutex will be handled manually.
26 -A Disable language recomended arguments.
27 arg Additional arguments to be passed to test."
28
29
30# These variables are set when the language is selected
31LANGUAGE=none
32LOCAL_TEST_FILE=none
33DESTINATION_TEST_FILE=none
34TEST_RUN_ARGS=""
35
36# Begin searching for options from the third paramater on
37PARAM_ARGS=${@:2}
38
39if [[ "$1" = java ]]; then
40 LANGUAGE=$1
41 LOCAL_TEST_FILE=$DEFAULT_LOCAL_JAVA_TEST_FILE
42 DESTINATION_TEST_FILE=$DEFAULT_DESTINATION_JAVA_TEST_FILE
43elif [[ "$1" = cpp ]]; then
44 LANGUAGE=$1
45 LOCAL_TEST_FILE=$DEFAULT_LOCAL_CPP_TEST_FILE
46 DESTINATION_TEST_FILE=$DEFAULT_DESTINATION_CPP_TEST_FILE
47elif [[ "$1" = "-h" ]]; then
48 printf "Usage:\n"
49 echo "$usage"
50 exit
51else
52 printf "Invalid language selection: %s\n\n" "$1" >&2
53 echo "$usage" >&2
54 exit 1
55fi
56
57# Check if the test file to upload exists
58if [[ ! -e ${LOCAL_TEST_FILE} ]]; then
59 printf "The test file does not exist: %s\nAre you sure that you compiled the tests??\n\n" "${LOCAL_TEST_FILE}" >&2
60 echo "$usage" >&2
61 exit 1
62fi
63
64MUTEX_OVERRIDE_PARAM_TEXT=""
65if [[ "$2" = "-m" ]]; then
66 MUTEX_OVERRIDE_PARAM_TEXT="-m "
67 TEST_RUN_ARGS="${@:3}"
68else
69 TEST_RUN_ARGS="${@:2}"
70fi
71
72shopt -s huponexit
73
74SCP_TEST_SCRIPT="scp config.sh ${DEFAULT_LOCAL_RUN_TEST_SCRIPT} ${ROBOT_ADDRESS}:/${DEFAULT_DESTINATION_DIR}"
75SSH_CHMOD_AND_MAKE_TEMP_TEST_DIR="ssh -t ${ROBOT_ADDRESS} chmod a+x ${DEFAULT_DESTINATION_RUN_TEST_SCRIPT}; mkdir ${DEFAULT_TEST_SCP_DIR} 2>/dev/null"
76SCP_TEST_PROGRAM="scp ${LOCAL_TEST_FILE} ${ROBOT_ADDRESS}:/${DESTINATION_TEST_FILE}"
77SSH_RUN_TESTS="ssh -t ${ROBOT_ADDRESS} ${DEFAULT_DESTINATION_RUN_TEST_SCRIPT} ${LANGUAGE} $(whoami) ${MUTEX_OVERRIDE_PARAM_TEXT}-d ${DEFAULT_TEST_SCP_DIR} ${TEST_RUN_ARGS}"
78
79if [ $(which sshpass) ]; then
80 sshpass -p "" ${SCP_TEST_SCRIPT}
81 sshpass -p "" ${SSH_CHMOD_AND_MAKE_TEMP_TEST_DIR}
82 sshpass -p "" ${SCP_TEST_PROGRAM}
83 sshpass -p "" ${SSH_RUN_TESTS}
84else
85 eval ${SCP_TEST_SCRIPT}
86 eval ${SSH_CHMOD_AND_MAKE_TEMP_TEST_DIR}
87 eval ${SCP_TEST_PROGRAM}
88 eval ${SSH_RUN_TESTS}
89fi